chef-soloでCookbooksディレクトリを複数指定する

2011-08-31
かなり古い記事です。現在も有効な内容であるかどうか分かりませんのでご注意ください。

実は設定ファイルの中で配列で指定できた。

file_cache_path "/var/chef-solo"
cookbook_path ["/var/chef-solo/cookbooks", "/var/chef-solo/site-cookbooks"]

cookbooksの方には汎用的に使えるCookbookを入れて、site-cookbooksの方にはそのサイト固有の設定を含んだCookbookを入れる。
それぞれ別のリポジトリで管理すれば収まりがいい。

自分の場合Chefでひとつの大規模インフラを管理する、というよりは中小規模のインフラをたくさん作るという使い方をしているので、各インフラごとの固有の設定をどう管理するかというのはちょっと課題だったのだけど、これですっきりできそうだ。
汎用的に使えるようになっているCookbookにサイトごとの固有の設定を含めるとか気持ち悪いしね。

固有の設定をCookbookから分離する手段としてはAttributeを使って、jsonに固有の設定パラメータを書くやり方もある。

ただあんまりAttributeの数が多くなるとレシピが複雑になるし使い方を忘れてしまうので、サイト固有のCookbookをさくっと作ってしまった方がいいんじゃないの、とRubyプログラミングになれている身としては思う。

とはいえiptablesの設定とか単純なパラメータの設定ですむ場合はAttributeを使っている。

参考

Profile

フルスタック気味のフリーランスプログラマー。

どちらかと言うと得意はインフラ構築とサーバーサイドプログラミングですが、フロントエンドもぼちぼちやっています。

最近の興味範囲はWordPress、AWS、サーバーレス、UIデザイン。

愛車はセロー。カメラはペンタックス。旅好きです。横浜在住。