レシピの作成を通してChefの具体的な使用イメージをつかもう

2013年12月20日(金)
喜納 健

第2回では、実際にChefを使用して“システムを状態で管理する”とはどの様なことか体験してみましょう。簡単なレシピの作成を通してChefを使用する流れを紹介します。

実際にChefを動かしてみよう!

まず始めにお試し用の環境を1台用意しましょう。今回想定している環境は表の通りです。
システム要件については、下記のサイトが参考になります。

System Requirements

項目
環境
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)インストーラと呼ばれるインストーラが提供されています。すぐに利用できるため、ここではオムニバスインストーラを使用した方法をご紹介します。

下記のサイトからインストーラを入手します。

Install Chef

今回想定する環境では、図1にある赤枠の様に指定します。

図1:Opscode社提供オムニバスインストーラダウンロードサイト(クリックで拡大)

(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社の下記のサイトに説明があります。

solo.rb
knife.rb

クックブックの作成

それでは、クックブックを作成してみましょう。ここでは、“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

クックブックの詳細な説明については、下記のサイトが参考になります。

About Cookbooks

株式会社 日立ソリューションズ

(株)日立ソリューションズ、オープンソース技術開発センタにてクラウド関連技術の調査に従事。Hadoop関連のプロジェクトで大規模クラスタの構築を担当したことを機に、システム構築・運用自動化について調査を行っている。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています