Chef
Chef とは、インフラストラクチャの管理をコードによって行う、自動化するためのプラットフォームです。Chefは、FreeBSDだけでなく、UbuntuやCentOSなどLinuxやOS Xでも利用できるクロスプラットフォームのインフラストラクチャをコードで管理するためのツールです。レシピの書き方は、各OSで共通です。
読み方
- Chef
- しぇふ
目次
概要
Chef は、レシピを Ruby で記述することができます。たくさんの同じノードをコードで管理できます。 以下にレシピの例を示します。
package "git" do action :install end
Chef入門
- Chefのインストール
- Chef knifeコマンド
- chef-solo Hello World
- Chef クックブックの作成
- Chef ディレクトリの作成
- Chef Soloでパッケージをインストールする
- Chef パッケージのインストールや削除
- Chef ファイルの作成
Chefの動作イメージ
Chefには、以下の2種類の動作形態があります。
- Chef Server/Chef Client(chef-client)
- Chef Solo
Chef Server / Chef Client は、クライアント・サーバモデルです。 Chef Solo は、スタンドアロンのモデルです。
Chef Server / Chef Client
クライアント・サーバモデルでは、 Chef Server は、構成情報の管理を行い、Web UI, Chef Server API を提供します。 Chefの設定対象の各ノードでは、chef-client が動作します。chef-clientは、Chef Server に問い合わせを行い、インストールなどの作業を実行します。chef-clientは、ユーザがコマンドで起動する方法と cron などで自動で実行することができます。クックブックの登録は、knifeコマンドを通じで行います。
Chef Solo
Chef Solo は、スタンドアロンで動作するため、Chef Server が不要です。小規模な環境で利用します。
Chefがサポートする環境
Chef Clientは、様々な環境で動作します。
- FreeBSD
- Ubuntu
- Red Hat
- OS X
- etc ...
Chef の特徴
- 設定を Ruby で記述します。
- 記述した順番に処理が実行されます。
Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully
chef-solo を起動すると、即効で瞬殺されました。
% chef-solo -o test [2013-12-07T18:31:57+09:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)
意味がこれだとわからないため、デバッグモードでchef-soloを起動しました。
% chef-solo -o test -l debug [2013-12-07T18:33:21+09:00] INFO: Forking chef instance to converge... [2013-12-07T18:33:21+09:00] DEBUG: Fork successful. Waiting for new chef pid: 38689 [2013-12-07T18:33:21+09:00] DEBUG: Forked instance now converging [2013-12-07T18:33:21+09:00] DEBUG: Creating directory /var/chef [2013-12-07T18:33:21+09:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)
/var/chef に一般ユーザー権限で書き込もうとして、朽ち果てています。 /var/chef/cache/ にキャッシュファイルが作りたかったようです。 sudoをつけて実行すれば、書き込めます。
% sudo chef-solo -o test -l debug
git
git clone git://github.com/opscode/chef-repo.git
% cd ./chef-repo/ % rake new_cookbook COOKBOOK=test ***WARN: rake new_cookbook is deprecated. Please use 'knife cookbook create COOKBOOK' command.*** ** Creating cookbook test mkdir -p /home/usre/chef/test/chef-repo/cookbooks/test/attributes mkdir -p /home/usre/chef/test/chef-repo/cookbooks/test/recipes mkdir -p /home/usre/chef/test/chef-repo/cookbooks/test/definitions mkdir -p /home/usre/chef/test/chef-repo/cookbooks/test/libraries mkdir -p /home/usre/chef/test/chef-repo/cookbooks/test/resources mkdir -p /home/usre/chef/test/chef-repo/cookbooks/test/providers mkdir -p /home/usre/chef/test/chef-repo/cookbooks/test/files/default mkdir -p /home/usre/chef/test/chef-repo/cookbooks/test/templates/default ** Creating README for cookbook: test ** Creating metadata for cookbook: test
エラー
下記のエラーがでた場合は、 /etc/chef/solo.rb に ssl_verify_mode :verify_peer を書き足します。
[2015-05-29T23:52:43+09:00] WARN: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * SSL validation of HTTPS requests is disabled. HTTPS connections are still encrypted, but chef is not able to detect forged replies or man in the middle attacks. To fix this issue add an entry like this to your configuration file: ``` # Verify all HTTPS connections (recommended) ssl_verify_mode :verify_peer # OR, Verify only connections to chef-server verify_api_cert true ``` To check your SSL configuration, or troubleshoot errors, you can use the `knife ssl check` command like so: ``` knife ssl check -c /etc/chef/solo.rb ``` * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Starting Chef Client, version 11.14.6 Compiling Cookbooks... Converging 0 resources Running handlers: Running handlers complete Chef Client finished, 0/0 resources updated in 3.947692374 seconds
関連項目
ツイート