0

Chef テンプレートの使用について質問があります。

使用されているレシピに基づいてテンプレートを更新することは可能ですか? 例として、collectd のデフォルト レシピと、呼び出される rabbitmq レシピがあるとします。rabbitmq 部分は引き続きデフォルト/ベース レシピの部分を使用し、rabbitmq ビットが呼び出されている場合にのみテンプレートにデータを追加したい (IE collectd::rabbitmq)。

使用されているレシピに基づいて基本テンプレートをカスタマイズする方法はありますか?

乾杯!

4

2 に答える 2

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 %>
于 2014-11-24T16:16:30.033 に答える
0

テンプレート リソースが 1 つあれば、多くのクックブックから属性を収集できます。collectd/attributes/default.rb を使用して default['rabbitmq']['whatever'] に属性を設定すると、rabbitmq クックブックによってテンプレートにレンダリングされます。collectd クックブックがノードの実行リストにない場合、クックブックはノードに同期されず、属性ファイルは評価されません。

ノードに collectd クックブック レシピが表示される場合、属性ディレクトリ内のすべてのファイルが評価されることに注意してください。これを行う場合、ロールごとに異なるクックブックを持つようにクックブックを構成する必要があります。つまり、collectd::rabbitmq レシピの代わりに collectd_rabbitmq クックブックが必要になる場合があります。

これは、さまざまなクックブックからのさまざまな情報を 1 つのテンプレート リソースに注入する方法として、私の最初の選択肢です。

于 2014-11-25T08:48:53.560 に答える