私は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 ファイルに変換できれば、はるかに優れたものになる可能性があります。これを行う方法はありますか?