询问有关使用 Chef 模板的问题。
是否可以根据正在使用的配方更新模板。一个例子是我有一个收集的默认配方和一个被调用的rabbitmq。rabbitmq 部分仍将使用默认/基本配方的部分,并且我只想在调用 rabbitmq 位时将数据添加到模板(IE collectd::rabbitmq)。
是否有根据正在使用的配方自定义基本模板?
干杯!
询问有关使用 Chef 模板的问题。
是否可以根据正在使用的配方更新模板。一个例子是我有一个收集的默认配方和一个被调用的rabbitmq。rabbitmq 部分仍将使用默认/基本配方的部分,并且我只想在调用 rabbitmq 位时将数据添加到模板(IE collectd::rabbitmq)。
是否有根据正在使用的配方自定义基本模板?
干杯!
如果您有一个模板资源,您可以从许多食谱中收集属性。您可以使用 collectd/attributes/default.rb 在 default['rabbitmq']['whatever'] 上设置属性,然后由 rabbitmq 食谱呈现到模板中。如果 collectd 食谱不在节点的运行列表中,则该食谱将不会同步到节点,并且不会评估属性文件。
请注意,如果节点上出现任何 collectd 食谱食谱,则评估属性目录中的所有文件。如果你这样做,你必须构建你的食谱,以便不同的角色有不同的食谱——这可能意味着你需要一个 collectd_rabbitmq 食谱而不是一个 collectd::rabbitmq 食谱。
这将是我如何将不同食谱中的不同信息注入到一个模板资源中的第一选择。
是的,只需使用模板属性。像这样的东西:
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 %>