试图输出的与厨师语法
node['a'] = {:b "1" :c "2"}
通过这样的内容ERB文件:
a:
<% a = node['a'] %>
b: <% a[:b] %>
c: <% a[:c] %>
<% end %>
产生这样的:
a:
b: 1
c: 2
但不能完全肯定正确的语法对红宝石,厨师和erb来说这是新鲜事。
试图输出的与厨师语法
node['a'] = {:b "1" :c "2"}
通过这样的内容ERB文件:
a:
<% a = node['a'] %>
b: <% a[:b] %>
c: <% a[:c] %>
<% end %>
产生这样的:
a:
b: 1
c: 2
但不能完全肯定正确的语法对红宝石,厨师和erb来说这是新鲜事。
好吧,让我们回过头来。首先,您通常不希望直接在模板中引用节点属性。在某些情况下,像从Ohai到来属性也可以是没关系,速记,但对于重要的数据我也想通过它在通过variables
属性是这样的:
template '/etc/whatever.conf' do
source 'whatever.conf.erb'
variables a: node['a']
end
有了到位,现在,我们已经暴露数据作为模板变量。第二个改进就是让Ruby完成生成YAML的繁重工作。我们可以用.to_yaml
方法在模板中做到这一点:
<%= @a.to_yaml %>
这应该是所有你需要的!
感谢您的帮助。不幸的是,它必须通过直接在模板中引用节点属性来完成。有没有办法直接在模板中做到这一点?我认为我的语法不太正确。再次感谢您的帮助。 –
当然,你可以用同样的方法做'<%= node ['a']。to_hash.to_yaml%>'但我们不推荐它,因为它会导致难以维护的食谱。 – coderanger
谢谢,我不完全理解。这是我的.yml.erb文件中的一个例子:d:<%= node ['d']%>(其中node ['d'] ='5'),我需要做类似的事情.yml.erb文件可以让我取出node ['a'] = {:b“1”:c“2”}的值。我正在努力如何访问:b和:c。谢谢 –
您是否正在尝试为配置文件生成Yaml? – coderanger
@coderanger是的。谢谢 –