基本情報
概要
Chef(シェフ)とは、構成管理(プロビジョニング)ツールです。ユーザ作成、パッケージインストール、設定ファイル編集などの展開作業を自動化します。物理環境/仮想環境/クラウド環境などの各種インフラに対応します。
基本説明
Chefは、米Chef Software社を中心に開発されています。
システム各種設定、アプリケーション/ミドルウェア/コンポーネントなどのソフトウェアインストールを自動化できます。インフラ環境構築を簡単に行うための便利な機能が搭載されています。
Rubyで実装されているのが特徴です。インフラ構成情報もRubyを使ってコードで管理します。
Windows、Linux、Mac OSなど複数のプラットフォームに対応しています。
導入メリット
・構築/運用コストの削減
・構築/運用ノウハウの共有
・構築のやり直しがきく
・作業時間の短縮
・複数サーバへ一括適用
・作業ミスが発生しない
主な特徴
「Infrastructure as Code」
「インフラをどのように構築し、維持されるべきか」という定義は、Rubyで記述され、ソースコードのように扱います。
コードによってインフラの構成管理を行えることが、Chefの大きな特徴であり利点です。
設定階層構成「Repository」「Cookbook」「Recipe」
「Recipe」=実際に実行させる構成設定ファイル
「Cookbook」=特定の構成対象に対して必要なRecipeをまとめるための構成設定ファイルセット
「Repository」=Chefの実行に必要となる一連の「Cookbook」をまとめる入れ物
『Repository >Cookbook> Recipe』という階層関係になります。
Nginxの設定を作成したい場合は、まず「Repository」を作成して、Nginxの「Cookbook」を作成して、その中に実際のNginx設定ファイルとなる「Recipe」を作成していく形となります。
「Cookbook」
処理内容や対象とするアプリケーションごとにCookbookを作成するのが一般的です。
アプリケーションインストール設定(MySQL、Apacheなど)、ユーザ作成、システム管理など、さまざまなCookbookが公開されていて、そのまま利用することもできます。
「Recipe」
Recipeは、インフラをあるべき姿に構築し、維持する具体的なプログラムコードというイメージです。
Rubyの文法を用いて、Chef専用の命令コマンド「Resource」を使用して記述します。
Resourceを自作したり、Ruby、Perl、Python、bashなどのスクリプトを直接実行することも可能です。
「べき等性」何度繰り返しても同じ結果に
「べき等性」とは「ある操作を何度行っても結果が同じになる」という概念です。
作業手順を記述するのではなく、「システム構成をこのようにしたい」という「あるべき構成」を記述します。
ただし、自作したCookbookやRecipeの書き方によっては、べき等性が保証されないことがあります。
「クライアント・サーバ形式」と「スタンドアロン形式」
大規模インフラ構成向きの「クライアント・サーバ形式」と、小規模インフラ構成向きの「スタンドアロン形式」があります。
コマンドラインインターフェイス「Knife」
「Knife」は、Chefのコマンドラインインターフェイスです。
多数のプラグインが作成されており、「IaaS上にインスタンスを作成し、Chef環境を構築する」などの使い方も可能です。
システムの状態を容易に確認できる
設定管理は一貫してChefで行う運用であれば、コード参照のみで設定値などを確認できます。
同様製品(概要情報)
同様な機能を提供する製品として、次のようなものがあります。
オープンソース製品:「Puppet」「Ansible」「Crowbar」など。
導入事例
Chefの利用実績としては、
・CyberAgent
・GREE
・nanapi
・Facebook
などがあります。
Facebookは、数十万台規模のサーバ群をすべてChefで管理しているとされています。
ライセンス情報
Chefのライセンスは、「Apache License 2.0」です。このライセンスに従うことを条件として、ソースコードの改変と公開が許可されています。
ダウンロード
※定期的にメンテナンスを実施しておりますが、一部情報が古い場合がございます。ご了承ください。