システムの設定・運用作業を自動化するオープンソースソフト「Chef」が注目を集めている。作業手順はRubyベースのコードで記述。その内容が管理対象サーバーに反映され、常に状態が維持される。開発担当者と運用担当者が協力して作業する「DevOps」に向く。

 「Chefはなくてはならない存在」。こう話すのは、サイバーエージェントの並河祐貴氏(アメーバ事業本部ピグディビジョン)だ。並河氏はオンラインゲームのアメーバピグ事業で、システムの設定・運用を自動化する「Chef」を利用している。2010年から徐々に適用を拡大し、今ではChefを使って約1000台のサーバーを運用している。「今年10月にデータセンターを移設した際、1日当たり200台ものサーバーの設定を変更した。それが実現できたのはChefのおかげ」(並河氏)という。

 並河氏だけでなく、国内でChefに注目するエンジニアは増えている。「セミナーを開催すると、大きな告知をしていないのにすぐに定員に達する」とChef関連事業を手がけるクリエーションラインの堀田直孝氏(上級コンサルタント)は話す。

 Chefとはどのようなツールなのか。あらかじめ決めた通りにサーバー設定や、OS・ミドルウエアのインストールを実行し、その状態を維持する機能を持つ。サーバー監視やインシデント管理など統合運用管理ツールが持つ機能は備えないが、設定作業の負荷を軽減する。米Opscodeが開発しており、有償版とオープンソースの無償版がある。国内では、2010年10月からクリエーションラインが有償版の販売やChefの導入支援事業を行っている。

作業を記した「クックブック」作る

 Chefを使ったシステム運用管理の仕組みを図1に示した。運用管理者用端末と管理対象サーバーのほかに「Chefサーバー」がある。まず、運用管理者は専用ソフトを使って作業手順書(「クックブック」と呼ぶ)を作成し、それをChefサーバーに登録する。管理対象サーバーにインストールした専用ソフトはChefサーバーに定期的にアクセスしてクックブックを参照し、クックブックの内容とサーバーの設定が異なっている場合、クックブックに合うように管理対象サーバー上で必要なコマンドを実行する。こうした仕組みにより、管理対象サーバーを1台ずつ管理する必要がなくなる。管理対象サーバーはパブリッククラウド上の仮想サーバーでも自社所有の物理サーバーでも構わない。

図1●Chefを使ったシステム運用管理の仕組み<br>管理対象サーバーは定期的にChefサーバーから該当する「クックブック」(サーバー管理手順を記したプログラム)を参照し、クックブックの記述内容とサーバーの状態が違えば必要な管理コマンドを自動的に実行する。管理者はChefサーバーにある「クックブック」をメンテナンスするだけでサーバー群を一元管理できる
図1●Chefを使ったシステム運用管理の仕組み
管理対象サーバーは定期的にChefサーバーから該当する「クックブック」(サーバー管理手順を記したプログラム)を参照し、クックブックの記述内容とサーバーの状態が違えば必要な管理コマンドを自動的に実行する。管理者はChefサーバーにある「クックブック」をメンテナンスするだけでサーバー群を一元管理できる
[画像のクリックで拡大表示]

 クックブックは作業手順書に当たる。実際の作業や設定内容はクックブック内の「レシピ」と呼ぶファイルに記述する。例えば、あるサーバーのユーザー設定を変更するといったことがレシピに記述してあり、そのレシピの集合体がクックブックだ。レシピはRubyを基にしたChef向けの独自言語で記述されている。このためRubyに慣れているエンジニアは習得が早い。

 クックブックやレシピは一から作ることができるが、他者が作ったものをそのまま使うこともできる。OpscodeのWebサイトには、ユーザーが作成したものを含めて700以上のクックブックが登録されている。

 Chefと類似のツールに米Puppet Labsが開発した「Puppet」がある。ChefとPuppetの違いについて堀田氏は「設定内容をRubyベースの言語で記述できること、ChefサーバーをAPIで操作できることなどが異なる」と話す。また、現在ユーザーが活発に活動しているのはChefのほうだという。ユーザーコミュニティーの登録者は約2万人に達し、公開しているクックブックの数も増えている。