クックブック間の共有ファイル/テンプレート


11

同じファイルとテンプレートを参照する複数のクックブックがあり、これらのすべてが同じファイルであることを保証する合理的な方法があるかどうか疑問に思っていました。単一のファイル/テンプレートを複数のレシピ/クックブックで参照することは可能ですか?シンボリックリンクの使用を考えましたが、Gitはシンボリックリンクをサポートしていないため、これは機能しません。

回答:


17

cookbook_fileおよびテンプレートリソースは、ソースファイルを含むクックブックを指定する「cookbook」パラメーターをサポートします。次に、これらのファイルが単一のエンティティとして存在する「コモンズ」クックブックを作成できます。例えば:

% cookbooks/commons
cookbooks/commons
|-- files
|   `-- default
|       `-- master.conf
`-- templates
    `-- default
        `-- general.conf.erb

2つのクックブック、thing1とthing2があり、どちらもこれらを使用しているとします。レシピは次のとおりです。

# thing1/recipes/default.rb
cookbook_file "/etc/thing1/master.conf" do
  source "master.conf"
  cookbook "commons"
end

template "/etc/thing1/general.conf" do
  source "general.conf.erb"
  cookbook "commons"
end

# thing2/recipes/default.rb
cookbook_file "/etc/thing2/like_master_but_different.conf" do
  source "master.conf"
  cookbook "commons"
end

template "/etc/thing2/not_as_general_as_you_think.conf" do
  source "general.conf.erb"
  cookbook "commons"
end

しかし、クックブックのさまざまな種類の機能が重複しているのはなぜですか?つまり、この種のことは、使用するカスタムの軽量リソース/プロバイダーに適していますか?


1
他のソリューションと同様に例に感謝します。これは完璧です!
-gdurham
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.