Chef (ソフトウェア)

は、同名の企業によって開発されるRubyとErlangで記述された構成管理ツールである。システム構成の「レシピ」の記述には、ピュアRubyのドメイン固有言語 （DSL）を使用する。 Chefは、サーバーの構成と保守のタスクを合理化するために使用され、Internap、Amazon EC2、Google Cloud Platform、Oracle Cloud、OpenStack、SoftLayer、Microsoft Azure、Rackspaceなどのクラウドベースのプラットフォームと統合して、自動的にプロビジョニングし、新しいマシンを構成する。 Chefには、小規模システムと大規模システムの両方に対応するソリューションが含まれており、それぞれの範囲に応じた機能と価格が設定されている。 
機能.
ユーザーは、Chef がどのようにサーバアプリケーションやユーティリティ (例えば Apache HTTP Server、MySQL や Hadoop) を管理・設定するかを「レシピ」に書き込む。
レシピは管理の簡単のために「クックブック」としてまとめることができる。
レシピには一連のリソースがどのような状態であるべきか、例えばパッケージがインストールされているとか、サービスが起動している、あるいはファイルが書き込まれている状態であるべきことを記述する。
これらのリソースは、実行するソフトウェアを特定のバージョンに設定することができ、ソフトウェアが依存性に基づいて正しい順番でインストールされることを保証することが可能である。
Chefは、それぞれのリソースが正しく設定されるようにし、望ましい ("desired") 状態でないリソースを修正する。
Chef はクライアント/サーバモードで、あるいは「chef-solo」と呼ばれるスタンドアローン設定で実行できる。
クライアント/サーバモードでは、Chef クライアントはノードの様々な属性を Chef サーバへ送信する。
サーバーは Elasticsearch を使ってこれらの属性をインデックスし、この情報を問い合わせる API をクライアントに提供する。
Chef レシピはこれらの属性を問い合わせ、結果のデータを使ってノードを設定するのに役立てることができる。
もともと Chef は Linux を管理するのに使われていたが、後のバージョンでは Microsoft Windows にも同様に使用できるようになった。
Linux では 、Ansible、Puppet に並んでメジャーな構成管理システムの1つである。
構成管理ツールである一方、Chef は Puppet や Ansible と並び Infrastructure as Code (IAC) ツールの1つでもある。
プラットフォームサポート.
Chefは、クライアントおよびサーバー製品のサポートされるプラットフォームマトリックスに従って、複数のプラットフォームでサポートされる 。クライアントの主要なプラットフォームサポートには、AIX、RHEL / CentOS、FreeBSD、OS X、Solaris、Microsoft WindowsおよびUbuntuが含まれる。 追加のクライアントプラットフォームには、Arch Linux、Debian、 Fedoraが含まれる。Chef Serverは、RHEL / CentOS、Oracle Linux、Oracle Cloud、Ubuntuでサポートされている。
利用企業.
Chefを採用する企業には、Facebook 、AWS OpsWorks、Prezi 、、およびアメリカ合衆国移民・関税執行局などがある。