Techioz Blog

Chef テンプレート : ネストされたオブジェクトを使用して構成ファイルを生成する

概要

Chef テンプレートから構成ファイルを生成したいと考えています。 Chef 13 以降でこれを実現するための正しい構文は何ですか?

次のサブキーを含むデータバッグがあります。

"mykey1" : {
  "param1" : "mysubvalue1",
  "param2" : "mysubvalue2"
},
"mykey2" : {
  "param1" : "mysubvalue11",
  "param2" : "mysubvalue22"
},

次に、私のレシピではテンプレート リソースを使用します。

template 'mytemplate.erb'
  ...
  variables ({
     :keys => [mykey1, mykey2]
  })
end

次に、テンプレート内で次のようにします。

<% @keys.each_pair do |name, _object| %>
  ["#{name}"]
  param1 = "#{_object.param1}"  # will this work??
<% end %>

param1 と param2 を参照する正しい方法は何ですか?

解決策

このようなデータを取得する頃には、それは通常の Ruby ハッシュ オブジェクトになっています。したがって、_object[“param1”] を使用します。