我想在厨师模板中使用属性

时间:2016-06-21 23:40:29

标签: ruby chef

我无法使用Chef尝试将默认属性文件中的信息转换为模板。目前,我有这个:

# attributes/default.rb
default['environment']['extrahosts'] = [ 'hostname1:address1', 'hostname2:address2' ]

#recipes/default.rb
extra_hosts = node[:environment][:extrahosts]

...
...
template '/blahblah' do
  source 'blahblah.erb'
  variables( :extra_hosts => extra_hosts )
end

#templates/blahblah.erb
<% for @item in @extra_hosts %>
  - <%= @item %>
<% end %>

虽然这不起作用。我将如何添加到模板中以产生:

  - hostname1:address1
  - hostname2:address2

1 个答案:

答案 0 :(得分:1)

在Ruby中编写循环的方法是使用each方法和块。

<% @extra_hosts.each do |item| %>
  - <%= item %>
<% end %>

另请注意,循环变量没有at符号,因为它不是实例变量。