22

シェフのグラファイト レポのラッパー クックブックを作成しようとしています。

レシピ carbon.rb では、次の行が発生します。

template "#{node['graphite']['base_dir']}/conf/storage-schemas.conf" do
  owner node['apache']['user']
  group node['apache']['group']
end

templates/default/storage-schemas.conf には、私の好みではない storage-schemas.conf ファイルがあります。ファイルをインラインで編集して目的を達成することはできますが、マージの競合なしでレポを最新の状態に保ちたい場合は、シェフの良い習慣とは思えません。それで、ラッパークックブックでこれを解決できるかどうか疑問に思っていました。

私の最初は次のようなものでした

include_recipe "graphite"
template "#{node['graphite']['base_dir']}/conf/storage-schemas.conf" do
  owner node['apache']['user']
  group node['apache']['group']
end

基本レシピが終了したらコマンドを再実行し、必要なファイルを wrappercookbook/templates/storage-schemas.conf.erb に配置します。これは一般的な方法ですか?あまり乾いた感じはしませんが、よりクリーンな方法は思いつきません。

4

4 に答える 4

28

あなたはかなり近いです。ラッパー クックブックに storage-schemas.conf.erb ファイルの修正版があると仮定すると、次のように実行できます。

include_recipe "graphite"
begin
  r = resources(:template => "#{node['graphite']['base_dir']}/conf/storage-schemas.conf")
  r.cookbook "my-cookbook"
rescue Chef::Exceptions::ResourceNotFound
  Chef::Log.warn "could not find template to override!"
end

次のような行を使用することもできます。

r.source "graphite-stuff/my-storage-schemas.conf.erb"

ラッパークックブック内のファイルを別の方法で整理したい場合。

于 2013-04-10T19:53:16.240 に答える