Chef Recipe,迭代属性数组和模板变量

时间:2018-03-13 14:31:49

标签: chef-recipe

属性

default['app_metadata']['metadata'] = {}

作用

"app_metadata": {
  "metadata": {
    "oes_m1": {
      "app.instance": "oes_m1_instance",
      "app.appname": "oes"
      ".."
    },
    "oes_m2": {
      "app.instance": "oes_m2_instance",
      "app.appname": "oes"
      "xx"
      ".."
    }
  }
}

配方

node['app_metadata']['metadata'].each do |instance_name, content|

  template "#{node['app_metadata']['home']}/#{node['hostname']}.app.#{instance_name}.metadata" do
    source 'app_metadata.erb'
    owner node['app_metadata']['user']
    group node['app_metadata']['group']
    mode '0755'
    variables(
      content_erb: content
    )
    action :create
  end
end

模板

<% (@content_erb).each do |key, value| -%>
<%= key %>: <%= value %>
<% end -%>

我一直在将变量传递给模板时遇到错误。有谁知道如何改善这个?

期待结果

app.oes_m1.metadata文件

app.instance: oes_m1
app.appname: oes
..

app.oes_m2.metadata文件

app.instance: oes_m2
app.appname: oes
xx
..

如果有更多实例

key: value
..

1 个答案:

答案 0 :(得分:0)

您的模板看起来有问题。尝试将其更新到此

<% @content_erb.each do |key, value| %>
<%= key %>: <%= value %>
<% end %>