前回、前々回にChefの概要、考え方や構成についてをまとめてみたので、今度は実際に使ってみる事にする。
今回インストールするのは、1台で構成されるChef Soloの方。インストールはCent OS 6.5に対して行う事とする。 インストールは、以下のページを参考に行っていくものとする。
- CentOS6.4 - CentOS 6.4 minimal の環境に Chef-solo を入れる。(必然的にRubyもインストール)
- CentOS6にChef Soloをインストール | Signal Eleven
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のインストールと基本の設定、動作の確認が出来た。