带有 chef 语法的 erb 文件
erb file with chef syntax
正在尝试输出
的内容
node['a'] = {:b "1" :c "2"}
通过这样做:
a:
<% a = node['a'] %>
b: <% a[:b] %>
c: <% a[:c] %>
<% end %>
生成这个:
a:
b: 1
c: 2
然而,对于 ruby、厨师和 erb 来说,不完全确定正确的语法来做到这一点。
好的,让我们倒回一点。首先,您通常不想在模板中直接引用节点属性。在某些情况下,比如来自 Ohai 的属性,它可以作为 shorthand,但对于重要数据,我也会通过 variables
属性 传递它,如下所示:
template '/etc/whatever.conf' do
source 'whatever.conf.erb'
variables a: node['a']
end
有了它,我们现在将数据公开为模板变量。第二个改进是让 Ruby 完成生成 YAML 的繁重工作。我们可以使用模板中的 .to_yaml
方法来做到这一点:
<%= @a.to_yaml %>
这就是您所需要的!
正在尝试输出
的内容node['a'] = {:b "1" :c "2"}
通过这样做:
a:
<% a = node['a'] %>
b: <% a[:b] %>
c: <% a[:c] %>
<% end %>
生成这个:
a:
b: 1
c: 2
然而,对于 ruby、厨师和 erb 来说,不完全确定正确的语法来做到这一点。
好的,让我们倒回一点。首先,您通常不想在模板中直接引用节点属性。在某些情况下,比如来自 Ohai 的属性,它可以作为 shorthand,但对于重要数据,我也会通过 variables
属性 传递它,如下所示:
template '/etc/whatever.conf' do
source 'whatever.conf.erb'
variables a: node['a']
end
有了它,我们现在将数据公开为模板变量。第二个改进是让 Ruby 完成生成 YAML 的繁重工作。我们可以使用模板中的 .to_yaml
方法来做到这一点:
<%= @a.to_yaml %>
这就是您所需要的!