属性付きの Chef クックブックを作成し、コードをノードにブートストラップして追加の属性を渡したり、デフォルトを上書きしたりしようとしました。
属性ツリーを印刷して、どの属性がロードされ、どの属性がオーバーライドされるかを確認することは可能ですか?
ベストアンサー1
Chef Serverのknife経由ではなく、統合Chefの内部から属性ツリー全体を取得するには、ソロ環境では役に立たない便利な形式を参照してください。node.to_hash
詳細は「シェフ::ノード「」。
きれいに印刷されたログを取得するには、Chef の JSON ライブラリのきれいなプリンターを使用できます。
output="#{Chef::JSONCompat.to_json_pretty(node.to_hash)}"
log output
または、クライアントのローカルファイルに書き込みます。
output="#{Chef::JSONCompat.to_json_pretty(node.to_hash)}"
file '/tmp/node.json' do
content output
end
これは収束ノードなので、 で取得できるデフォルト/オーバーライドなどのレベルは取得できないことに注意してください。node.debug_value
ただし、属性の名前/パスが実際にわからない場合、または複数の属性をループする必要がある場合は、これが役立ちます。
次のように大幅にトリミングされた例のような大きな結果が得られます。
{
"chef_type": "node",
"name": "node.example.com",
"chef_environment": "_default",
"build-essential": {
"compile_time": false
},
"homebrew": {
"owner": null,
"auto-update": true,
...
},
"recipe": [
"example"
],
"run_list": [
"recipe[example]"
]
}
「CHEF (ruby) できれいな JSON を作成するにはどうすればよいでしょうか。「きれいなプリンタポインタがありました。