前回、前々回にChefの概要、考え方や構成についてをまとめてみたので、今度は実際に使ってみる事にする。

今回インストールするのは、1台で構成されるChef Soloの方。インストールはCent OS 6.5に対して行う事とする。 インストールは、以下のページを参考に行っていくものとする。

1.事前準備

事前準備として、必要となるモジュールやパッケージをインストールしていく。 まずは以下のコマンドを実行し、Rubyの1.9をインストールできる状態にする。

yum -y groupinstall "Development Tools"
yum -y install libffi-devel openssl-devel readline-devel zlib-devel git subversion gdbm-devel httpd-devel libcurl-devel ncurses-devel openssl-devel readline-devel sqlite-devel zlib-devel

rpm -Uvh http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
sed -i "s%enabled=1%enabled=0%g" /etc/yum.repos.d/epel.repo
yum -y --enablerepo=epel install libyaml-devel

次に、Rubyのインストールを実行する。

mkdir -p /usr/local/src/ruby
cd /usr/local/src/ruby
wget http://cache.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p353.tar.bz2
tar -xf ruby-2.0.0-p353.tar.bz2
cd ruby-2.0.0-p353
./configure --prefix=/usr/local
make;make install

Rubyのインストール後、Chefを使用するユーザを作成し、/opt/ruby/bin/にPathを通す。

useradd chef-ope
echo "PATH=\"$PATH\":/opt/ruby/bin/" >> ~chef-ope/.bashrc
source ~chef-ope/.bashrc

2.Chefのインストール

実際にchefのインストールを行う。 以下のコマンドを実行する。 2行目でknifeの設定を行っているが、これは全てデフォルトで設定するので、Enterキー連打で構わない。

gem i chef
knife configure
gem i knife-solo
gem i berkshelf

これでChef Soloを使用する環境が出来た。

3.リポジトリ・Cookbookの自動生成

さて、Chefのインストール自体は完了したが、このままではまだChefは使用出来ない。

まずは、「/etc/chef/solo.rb」というファイルを作成する。

mkdir /etc/chef/
echo 'file_cache_path "/home/chef-ope/chef-repo"' > /etc/chef/solo.rb
echo 'cookbook_path ["/home/chef-ope/chef-repo/cookbooks"]' >> /etc/chef/solo.rb

knifeからレシピを使用出来るよう、以下のコマンドを実行しリポジトリ、Cookbookを自動生成させる。 ここでは、リポジトリ名を「chef-repo」、Cookbook名を「sample-book」としておく。

cd /home/chef-ope/
knife solo init chef-repo
knife cookbook create sample-book -o ./chef-repo/cookbooks

これでレシピを適用させる準備が出来た。

4.レシピ適用

さて、ここまででChef-Soloの準備が出来たので、最後にレシピを作成して適用させてみる。 レシピは先ほど作成したCookbookのフォルダ内に設置されている。

今回の場合は、「/home/chef-ope/chef-repo/cookbooks/sample-book/recipes/default.rb」に設置されているので、そのファイルを編集する。 なお、今回のレシピの内容はipmiの管理ツール、「ipmitool」をインストールさせる内容とする。

default.rb

# yum install
yum_package "ipmitool" do
action :install
end

これでレシピが出来た。 次は、このレシピを実行させるためのjsonファイルを「/home/chef-ope/chef-repo/sample-book.json」として作成する。

sample-book.json

{"run_list": ["recipe[sample-book]"]}

最後に、以下のコマンドを実行する事でCookbook「sample-book」のレシピ「default.rb」の内容がサーバに適用される。

chef-solo -j /home/chef-ope/chef-repo/sample-book.json

以上でChef-Soloのインストールと基本の設定、動作の確認が出来た。