Onishi今更感があってごめんなさい。確かにAnsibleとかFabricとか流行ってますもんね。老舗感と重厚感あるChef触っておくのもいいと思うんです。してもChefって色々複雑そうで入りにくいですよね...。私はChef初級者です。一応裏付けは取るようにしていますが、もし間違いがあれば指摘いただけると嬉しいです。Chef-Zeroっていうのは、消えゆく(らしい)Chef-Soloに代わる形で推奨されている単体で動く環境構築の自動化ツールです。Chefはサーバーとクライアントが分かれているアプリケーションですが、Chef-Soloは独立して動くChefで、Chef-Zeroは1つのマシンにサーバーとクライアントの両方を入れたようなイメージらしいです。昔はRubyのgemでChef入れて、関連ツール入れて・・・のような形でRubyの環境がない人はそこから、という結構導入が重めでした。最近はChefDKというのがあり、Chef本体とその関連ツールを一気にインストールできるようになっています(実際は内部でgemが使われているんですが...)。0.10.11を使います。バージョン番号から察するに、まだ正式リリースではないようですがインストールされるChefは最新のものなので心配ありません。インストール直後のバージョン情報は次の通りです。1.4.2Vagrantを準備とりあえず適当にVagrantのゲストOSを用意します。(-m)オプションを付けましょう。コメントが消えてくれます。--minimalChefを使ってプロビジョニングを行うためには、ゲストOS内にもChefが必要です。色々な解説サイトを読むと、Vagrantのプラグインを入れてゲストOSにChefをインストールするような記事が多く見られますが、そうするとVagrantfileを配布する際にそのプラグインのインストール手順を共同開発者に伝え、手動で入れてもらう必要があります。upだけで完結させたいですよね。今回はChefのインストール部分だけインラインシェルを使うことにします。11'endChefリポジトリを作るまずはベースとなるリポジトリを作ります。今後はこの中で作業するので、移動しておいてください。./provisionCookbookを作るオリジナルなcookbookはデフォルトで作られているcookbooksではなくsite-cookbooksに入れるのが慣習のようなので、それに従おうと思います。ここでは例として空のCookbookを置いてみます。site-cookbooks/do-somethingこれで空のクックブックができました。Berksfileを作る実際にCookbookの中身を作り込む前に、Berkshelfへの登録を済ませておきましょう。BerkshelfというのはRubyのBundler、PHPのComposerのように、Cookbookに依存するCookbookを自動で入れてくれるCookbookマネージャーのような役割を担います。Berkshelfで自分の使いたいCookbookを記述しておくのがBerksfileになります。これをChefリポジトリのルートに作ります。'./site-cookbooks/do-something'1行目のsourceというのは、指定された名前のCookbookをデフォルトでどこから落としてくるか指定します。Berksfileを元にcookbooksディレクトリに依存性が解決されたCookbookが保存されるようになります。実際に上のコマンドを実行してみてください。コピーされたと思います。今回のようにpathパラメーターにローカルのCookbookを与えた場合は、sourceに記述したリモートロケーションではなく指定されたローカルのCookbookを見に行くようになります。Vagrantのプロビジョンで実行するChef-Soloでプロビジョンを行ったことがある人は同じように使えます。provisionerを使って、cookbooksのディレクトリと実行するレシピをadd_recipeで列挙していきます。使ってRolesという機能も使えます。これは複数のレシピをロールという単位で管理することで、役割という意味単位でグルーピングして扱うことができます。Cookbookを自分で書いてもいいのですが、とても長くなってしまうので今は公開されているCookbookを使ってみます。Serverなどの有名どころは大抵公開されているので、そもそも自分で一から書くことは少ないかもしれません。使ってみようと思います。vendorでCookbookを取得してきます。cookbookscookbooksディレクトリの中にapache2のcookbookがインストールされればOKです。Vagrantfileにも追加して、実行してみましょう。upプロビジョンが完了したら、正しくインストールされているか確認してみましょう。./provision/cookbooksを共有するといいでしょう。Vagrantfile+Berkshelfでなんとかなりますが、一般的にはVagrantfile+cookbooksの共有が多いような気がします。まとめChef勉強しながら作業内容の備忘録と共有のために書きました。実際これだけではChefの2割にも満たないくらいの知識量だと思います。学習コストが比較的高いですが頑張っていきましょう。