查询了有关使用Chef模板的信息。
是否可以根据正在使用的配方更新模板。一个例子是我有一个collectd默认配方和一个被调用的rabbitmq。 rabbitmq部分仍将使用默认/基本配方的一部分,我只想在调用rabbitmq位时向模板添加数据(IE collectd :: rabbitmq)。
是否有基于正在使用的配方自定义基本模板?
干杯!
答案 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食谱。
这将是我如何将不同食谱中的不同信息注入一个模板资源的首选。