RailsConf2009に参加中の高田悟史です。RUNNING THE SHOW: CONFIGURATION MANAGEMENT WITH CHEFを聞いてきました。
Chefというのは、Puppetのようなシステム管理ツールです。
Puppetとの違いをいまいち分かっていないのですが、サーバー(Chef Server)とクライアント(Chef Clients)という構成で、サーバーの設定(cronやApacheなど)をrubyで記述し(これをCookbookと呼ぶ)、新しく導入するサーバー(Chef Clientにあたる)のセットアップや設定変更やRailsアプリケーションのデプロイなどを自動的に行うことができるツールです。また、このCookbookという設定情報はバージョン管理されます。例えば、Apacheの設定ファイルをERBで記述し、rubyで変数値を指定するというような書き方ができるのは便利そうです。
Chef Soloという仕組みもあり、ネットワーク上やセキュリティー上の問題からChef Serverに接続できないサーバー(Chef Client)でもCookbookを含むターボールを指定することで同様のことをすることができます。
その他にも、WebUIでCookbookの参照や編集や検索をすることができるのは便利そうでした。このCookbookの操作にはREST APIも準備されていて、コマンドラインからこれらの操作をすることもできます。
PoolPartyというクラウドを管理するツールは、Chefが元になっているらしいです。
ちなみに、Puppetの日本情報wikiにPuppetの作者がChefをどう思ってるか書いてありました。
Chef ServerとChef Clientのデモには、VirtualBoxを使っていました。まだ試していないのでどのくらい手間がかかるのかは分かりませんが、ローカル環境でChefを試してみたい場合なんかにはよいかもしれませんね。
クックパッドでも、近々サーバーの増設をすることになるのだろうというところですが、100台を越え始めるので、このような一元管理できるしくみを導入したいと考えています。Puppetと比較してChefも検討しようと思います。