带有厨师语法的erb文件

时间:2017-03-08 17:36:58

标签: ruby chef erb

尝试输出

的内容
node['a'] = {:b "1" :c "2"}

通过这样做:

a: 
<% a = node['a'] %>
 b: <% a[:b] %>
 c: <% a[:c] %>
<% end %>

生成这个:

a: 
 b: 1
 c: 2

然而,不完全确定正确的语法对ruby,chef和erb。

是新的

1 个答案:

答案 0 :(得分:1)

好的,让我们回过头来。首先,您通常不想直接在模板中引用节点属性。在某些情况下,例如来自Ohai的属性可以作为速记,但对于重要数据,我也会通过variables属性传递它:

template '/etc/whatever.conf' do
  source 'whatever.conf.erb'
  variables a: node['a']
end

有了这个,我们现在将数据公开为模板变量。改进这一点的第二部分是让Ruby完成生成YAML的繁重工作。我们可以使用模板中的.to_yaml方法执行此操作:

<%= @a.to_yaml %>

这应该是你所需要的一切!