查询根据配方添加内容的厨师模板文件

时间:2014-11-24 13:56:27

标签: templates chef erb recipe

查询了有关使用Chef模板的信息。

是否可以根据正在使用的配方更新模板。一个例子是我有一个collectd默认配方和一个被调用的rabbitmq。 rabbitmq部分仍将使用默认/基本配方的一部分,我只想在调用rabbitmq位时向模板添加数据(IE collectd :: rabbitmq)。

是否有基于正在使用的配方自定义基本模板?

干杯!

2 个答案:

答案 0 :(得分:0)

是的,只需使用模板属性即可。像这样:

template 'my template' do
  source 'some_teplate.erb'
  attributes :rabbit_stuff => true,
             :other_thing => 'somevalue'
end

和模板

....
<% if @rabbit_stuff -%>
  rabbit things in here
<% end -%>
Common stuff
....

它并不仅仅需要成为一面旗帜。你可以拥有很多属性,并根据定义的属性做这样的事情。

<%= @some_attribute %> <% if @some_attribute %>

答案 1 :(得分:0)

如果您有一个模板资源,则可以从许多食谱中收集属性。您可以使用collectd / attributes / default.rb在默认[&#39; rabbitmq&#39;] [&#39;无论什么&#39;]上设置属性,然后由rabbitmq cookbook呈现到模板中。如果收集的食谱不在节点的运行列表中,则菜谱将不会与节点同步,并且不会评估属性文件。

请注意,如果节点上出现任何collectd cookbook配方,则会评估属性目录中的所有文件。如果你这样做,你必须构建你的食谱,以便不同的角色有不同的烹饪书 - 这可能意味着你需要一个collectd_rabbitmq食谱而不是collectd :: rabbitmq食谱。

这将是我如何将不同食谱中的不同信息注入一个模板资源的首选。