Templates 基于配方添加内容的厨师模板文件查询
获取有关使用厨师模板的查询 是否可以根据使用的配方更新模板。例如,我有一个collected默认配方和一个被调用的rabbitmq配方。rabbitmq部分仍将使用默认/基本配方的部分,我只想在rabbitmq位被称为IE collectd::rabbitmq时向模板添加数据 是否可以根据使用的配方定制基本模板Templates 基于配方添加内容的厨师模板文件查询,templates,chef-infra,erb,recipe,Templates,Chef Infra,Erb,Recipe,获取有关使用厨师模板的查询 是否可以根据使用的配方更新模板。例如,我有一个collected默认配方和一个被调用的rabbitmq配方。rabbitmq部分仍将使用默认/基本配方的部分,我只想在rabbitmq位被称为IE collectd::rabbitmq时向模板添加数据 是否可以根据使用的配方定制基本模板 干杯 是的,只需使用模板属性。大概是这样的: template 'my template' do source 'some_teplate.erb' attributes :ra
干杯 是的,只需使用模板属性。大概是这样的:
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 %>
如果你有一个模板资源,你可以从许多食谱中收集属性。您可以使用collectd/attributes/default.rb设置默认值['rabbitmq']['which']上的属性,然后由rabbitmq cookbook呈现到模板中。如果collectd cookbook不在节点的运行列表中,则cookbook将不会与节点同步,属性文件也不会被计算 请注意,如果节点上出现任何collectd cookbook recipe,则会计算attributes目录中的所有文件。如果您这样做,您必须构建您的食谱,以便不同的角色拥有不同的食谱-这可能意味着您需要collectd_rabbitmq食谱,而不是collectd::rabbitmq食谱
这将是我在如何将不同烹饪书中的不同信息注入到一个模板资源中的第一选择。您好,这听起来不错,但当我尝试时,似乎没有发现我正在运行recipe collectd::rabbitmq。这真的可以通过调用特定的配方来实现吗?不,不是直接的。您需要从一个配方传递某些属性,而不是从另一个配方传递。然后,在模板内部查找这些属性,并且仅在属性存在时处理模板的该部分。