Chef 属性を印刷またはデバッグする方法 質問する

Chef 属性を印刷またはデバッグする方法 質問する

属性付きの 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 を作成するにはどうすればよいでしょうか。「きれいなプリンタポ​​インタがありました。

おすすめ記事