2

私はChefとやり取りするプログラムに取り組んでいます。依存関係や名前などの他の情報を探してメタデータを読みたいのですが、Chef を実行しているマシンに Chef をインストールすることは想定されていません。最善の方法は、metadata.rb を metadata.json に変換して読み取ることだと思います。

実際には、これに基づいたアルゴリズムを使用して各レシピを 1 行ずつ読んでいますが、Chef のようにメタデータを使用する方が正しいと思います。さらに、次のような表現には問題があります。

node['apache']['default_modules'].each do |mod|
  recipe_name = mod =~ /^mod_/ ? mod : "mod_#{mod}"
  include_recipe "apache2::#{recipe_name}"
end

複数の行がある場合、ロールの run_list を読み取る際に同じ問題が発生します。確かに、それを json ファイルに変換できれば、はるかに優れたものになる可能性があります。これを行う方法はありますか?

4

2 に答える 2

1

rubyinstance_evalメソッドを使用してクックブックからパースするmetadata.rbので、キーは の仕様ですmetadata.rb。で定義されていChef::Cookbook::Metadataます。

多数のメソッドを提供する ruby​​ クラスです。そのため、独自のプログラムを調整して、属性アクセサ like namemaintainerlike depends()、および以外のメソッドの最小限のセットを使用できますrecipe(name, description)

于 2013-10-21T01:33:31.777 に答える