レシピの作成を通してChefの具体的な使用イメージをつかもう
第2回では、実際にChefを使用して“システムを状態で管理する”とはどの様なことか体験してみましょう。簡単なレシピの作成を通してChefを使用する流れを紹介します。
実際にChefを動かしてみよう!
まず始めにお試し用の環境を1台用意しましょう。今回想定している環境は表の通りです。
システム要件については、下記のサイトが参考になります。
♯ | 項目 | 値 |
---|---|---|
環境 | ||
1 | OS | CentOS release 6.4 ※インストールパッケージは最小構成 |
2 | アーキテクチャ | 64bit |
3 | メモリ | 1GB |
4 | HDD | 10GB |
OSインストール後の設定 | ||
1 | 使用ポート (ファイアウォールの設定) |
80番 |
2 | ユーザー (ホームディレクトリ) |
user01 (/home/user01) |
3 | sudoコマンドの設定 | user01 ALL=(ALL) /usr/bin/chef-solo |
4 | Yumリポジトリの設定 | CentOS release 6.4のリポジトリ |
chef-soloのインストールと設定
(1)インストーラのダウンロード
chef-soloをインストールします。Opscode社でオムニバス(Omnibus)インストーラと呼ばれるインストーラが提供されています。すぐに利用できるため、ここではオムニバスインストーラを使用した方法をご紹介します。
下記のサイトからインストーラを入手します。
今回想定する環境では、図1にある赤枠の様に指定します。
(2)chef-soloのインストール
パッケージを取得したら、rpmコマンドを使用してインストールします。rootユーザーで以下のコマンドを実行します。
# rpm -ivh /tmp/chef-11.8.0-1.el6.x86_64.rpm ・・・省略・・・ Thank you for installing Chef! #
chef-soloがインストールされていることを確認しましょう。
# chef-solo -v Chef: 11.8.0 #
オムニバスインストーラは、Chefが稼動するのに必要な全てのファイルを/opt/chef 以下に展開します。
インストーラを使用しない場合は、Chefの実行に必要なRubyとRubyパッケージ管理ツールであるGemのインストールが必要になりますが、オムニバスインストーラを使用すればRubyとGemも組み込まれた状態でインストールされます。
(3)設定
ここからは、Chef操作用に用意したユーザーアカウントuser01で作業を行います。
クックブックを格納するディレクトリ/home/user01/cookbooksを作成します。
続いて、クックブックの作成などを行う設定ツールであるKnifeとレシピにもとづいて構築・設定変更を行う単体プログラムchef-soloの設定を行います。クックブックは、レシピや配布ファイル、メタデータをまとめたものです。基本的には、クックブック単位で管理します。
まず、Knifeの設定を行います。/home/user01/.chefディレクトリ作成後、/home/user01/.chef/knife.rbファイルを作成し以下の通りに記載します。
knife.rb
cookbook_path [ "/home/user01/cookbooks" ] ♯クックブック格納先。
次に、chef-soloの設定を行います。/home/user01/solo.rbを作成し以下の通りに記載します。ここでは、ログの出力先をuser01のホームディレクトリ以下にしていますが、必要に応じて変更して下さい。
solo.rb
log_level :info ♯ログの出力レベル。 log_location "/home/user01/logfile" ♯ログの出力先。 cookbook_path [ "/home/user01/cookbooks" ] ♯クックブック格納先。
knife.rb、solo.rbそれぞれに“cookbook_path”を設定しています。knife.rbではKnifeがクックブック操作する際に使用するパスを、solo.rbではchef-soloがクックブックを読み込む際に使用するパスを指定しています。
それぞれのファイルの詳細な設定は、Opscode社の下記のサイトに説明があります。
クックブックの作成
それでは、クックブックを作成してみましょう。ここでは、“sample_book”という名前のクックブックを作成します。
(1)テンプレートの展開
下記のコマンドを実行すると、クックブックのテンプレートが展開されます。
# knife cookbook create sample_book ** Creating cookbook sample_book ** Creating README for cookbook: sample_book ** Creating CHANGELOG for cookbook: sample_book ** Creating metadata for cookbook: sample_book #
クックブックは、レシピや配布するファイルの格納先が決まっており、誰が作成してもどこに何があるかは見当がつくようになっています。上記コマンドを発行すると、以下の様なファイル・ディレクトリが作成されます。ここでは、配布する静的ファイルを格納する“files”とレシピを格納する“recipes”ディレクトリを使用します。
$ tree cookbooks/sample_book cookbooks/sample_book ├── CHANGELOG.md ├── README.md ├── attributes ├── definitions ├── files │ └── default ├── libraries ├── metadata.rb ├── providers ├── recipes │ └── default.rb ├── resources └── templates └── default
クックブックの詳細な説明については、下記のサイトが参考になります。