Chef情報
Chefとは
Chef(シェフ)とはインフラにおけるサーバ構成管理や、サーバへのファイル展開作業(プロビジョニング)を自動化するオープンソース・ソフトウェアです。
物理、仮想、クラウドといったさまざまなインフラに対して、サーバのあるべき構成(OS/ミドルウエア/アプリケーションなど)をセットしておくと、サーバの台数によらずその構成どおりにインフラを自動セットアップします。
複数台のサーバに対し、何度も同じ設定作業を行う必要がなくなり、サーバのデリバリーの効率化、設定時の人的ミス防止につながる便利なソフトウェアとして、近年では「Redmine」「Jenkins」と並んでIT現場での「新3種の神器」と呼ばれるほど人気があります。
Chef自体はRubyで実装されています。Chefには、「Infrastructure as Code」という基本概念があり、インフラの構成管理の設定自体もプログラミング言語のコードとして扱い、RubyのDSL(Domain Specific Language: ドメイン固有言語)で記述します。この構成管理の情報を「レシピ(Recipe)」、レシピの集合体である「クックブック(Cookbook)」として定義します。
Chefは、米国Chef 社(旧Opscode社)がOSSプロジェクトとして開発を進めており、コミュニティによって開発された多くの「クックブック(Cookbook)」が公開され、それらを自由に再利用することができます。
Chefには、構成を管理する「Chef Infra Server」、設定対象のサーバにインストールして動作する「Chef Infra Client」によるクライアント・サーバでの集中管理形式と、ローカルマシンから直接設定対象のサーバを管理するスタンドアロン形式「Chef Solo」があります。
※2014/06/24にChef公式ブログにてChef Soloの廃止が発表され、Chef Soloの機能を備えたChef Infra Client Local Modeを利用することが推奨されています。
「Chef Infra Server」内で使用されていた検索エンジンは元々Elasticsearchでしたが、15.0.9からはセキュリティの強化とElasticsearchのライセンス変更に伴い、OpenSearchに変更されました。
Chefの構成の違い
クライアント・サーバ形式では、インフラの集中管理サーバである「Chef Infra Server」上でセットアップ対象の各サーバ情報(設定ファイル)を保存・管理し、「Chef Infra Client」が「Chef Infra Server」からの指示によってインフラを構築します。
スタンドアロン形式は「Chef Solo(Chef Infra Client local-mode)」と呼ばれ、「Chef Infra Server」を使わずにセットアップ対象の各サーバ情報に「Chef Infra Client」と設定情報をインストールして管理します。「knife solo」というCLIツールを利用することで、複数のセットアップ対象サーバにChefをインストールし、Chef Soloを実行する環境を構築できます。
Chefは多くの場合、同じ作業を実行しても同じ結果になる(※)ため、複数台のサーバに対して同じOS/ミドルウエア/アプリケーションなどをインストールし、パラメータ設定をする際などに大変便利なソフトウェアです。
そのため、最初に小さな単位でインフラを構築し、徐々にサーバ台数を追加して大規模構成に成長させていくことも容易に実現できます。
また、設定ファイルである「レシピ(Recipe)」や「クックブック(Cookbook)」は、スタンドアロン形式、クライアント・サーバ形式で共通して利用できるため、設定対象のサーバ台数が少ない場合は「Chef Solo」を利用し、サーバ台数が増加していった際には「Chef Infra Server」に切り替えるということも可能です。
近年では、国内外を問わず、インターネット広告事業、SNS事業、ゲーム事業、クラウド事業などをはじめとする大規模システムでのChefの採用事例が増加しています。数十万台規模でChefを利用しているFacebook社の事例は有名です。
※数学における冪等性(べきとうせい)という概念と同じものです。処理の内容によってはこの性質が確保されないことがあります。
主な機能
主な機能は以下のとおりです。
コンフィギュレーション管理機能
- プログラミング言語(Ruby)によるインフラ設定と管理
- 手順書(Cookbook)による作業の簡略化と共通化
プロビジョニング機能
- 設定ファイルの自動配布と反映
システムインテグレーション機能
- サーバ間の動的なシステムインテグレーションと大規模インフラの構築の実現
- Chef Soloでの小規模なサーバ構築
データ収集機能
- 各ノードと通信し、運用環境に関するさまざまなデータを保存
世代管理機能
- 過去の設定ファイルの保存とロールバックの実現
主な特徴
Chefは、次のような特徴があります。
- 構成管理の自動化によるサーバデリバリーの効率化、設定時の人的ミス防止
- 構成管理プロセスを記載するのではなく、最終的な設定状態を記載する
- プログラミング言語(Ruby)を用いたインフラ構築・設定管理ができる
- ライセンス費用はゼロで、無料で使用できる(有償保守サポートを依頼する場合は別途費用がかかる)
- 冪等性
- スケーラビリティ
- 設定ファイルが多数公開されている
- 料理を意識した用語である
導入事例
Chef(シェフ)は、オープンソースの構成管理ソフトウェアとして国内外を問わず、インターネット広告事業、SNS事業、ゲーム事業、クラウド事業などをはじめとする大規模システムでの採用事例が増加しています。Facebook社で数十万台規模でChefを利用している事例は有名です。
日本でも、GREE、CyberAgent、EngineYardなどで、Chefを使ったサーバ構成管理自動化の事例が発表されています。
類似プロダクト
商用ソフトウェア製品では、HP Insight Orchestration、Microsoft System Center Orchestrator 2012、同じOSSではPuppet、Ansible、Crowbarが同様の機能を提供しています。
動作環境
前提となる動作環境は、以下のとおりです。
Chef Infra Server OS
- Amazon Linux 2 (x86_64)
- CentOS 7、8 (x86_64)
- Oracle Enterprise Linux 7、8 (x86_64)
- Red Hat Enterprise Linux 7、8 (x86_64)
- SUSE Linux Enterprise Server 12、15 (x86_64)
- Ubuntu Server 16.04、18.04、20.04 (x86_64)
Chef Infra Client OS
- IBM AIX 7.1、7.2 (powerpc)
- Amazon Linux 2 (x86_64、aarch64)
- CentOS 8 (x86_64、aarch64)
- CentOS 7 (x86_64、ppc64le、ppc64、aarch64)
- CentOS 6 (x86_64)
- Debian 10、11(x86_64、aarch64)
- Debian 9(x86_64)
- FreeBSD 11、12(amd64)
- Mac OS X 10.15、11、12 (x86_64、aarch64)
- Oracle Enterprise Linux 7、8 (x86_64、aarch64)
- Oracle Enterprise Linux 6 (x86_64)
- Red Hat Enterprise Linux 8 (x86_64、s390x、aarch64)
- Red Hat Enterprise Linux 7 (x86_64、s390x、ppc64le、ppc64、aarch64)
- Red Hat Enterprise Linux 6 (x86_64、s390x)
- Oracle Solaris 11.3、11.4 (sparc、i86pc)
- SUSE Enterprise 15 (x86_64、s390x、aarch64)
- SUSE Enterprise 12 (x86_64、s390x)
- Ubuntu Server 16.04、18.04、20.04 (x86_64、aarch64)
- Windows 8.1、10、11 (x86、x64)
- Windows Server 2012、2012r2、2016、2019、2022 (x86、x64)
プラットフォームによってサポートされるアーキテクチャが細かく異なるので、 Chefのダウンロードページを参照ください。
Chefのライセンス
Chefのライセンスは、Apache License 2.0です。
Apache License(アパッチ・ライセンス)のコードが使用されていることの明記を条件に、ソースコードの自由な改変と使用、複製、再頒布などが認められています。
また、開発元にChef社が提供する「Enterprise Chef」といったノード数単位のサブスクリプションライセンスも提供されています。
製品ダウンロード
参考情報
オープンソース年間サポートサービス
OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。