Vagrant と Chef-Solo でサーバー環境構築を自動化 (vagrant + chef-sole, knife-solo)

前回エントリの続き。

Vagrant で起動した仮想マシンで chef-sole を実行して、サーバー環境を構築したいと思います。
サーバー環境構築までの処理は、以下のような感じになります。

  1. 仮想マシンの起動
  2. ローカルマシンでレシピを作成し、仮想マシンへ転送
  3. 仮想マシンで chef-solo 実行

2~3 を 1コマンドでやってくれる knife-sole を使用します。

仮想マシンの起動

前回エントリの手順で仮想マシンを起動します。
ホストオンリ(プライベート)ネットワークも設定します。

Chef Client と knife-solo のインストールと 諸々の設定

Chef Client のインストール

Omnibus Installer でローカルマシンへ Chef Clinet をインストールします。

$ curl -L https://www.opscode.com/chef/install.sh | sudo bash

/opt/chef 以下に Chef Client に必要なものがマルっとインストールされます。

knife の設定

基本的に初期値(enter)で問題ないです。

$ knife configure

~/.chef/knife.rb が作成されます。

knife-solo のインストール

Omnibus Installer でインストールされた gem で knife-solo をインストールします。

$ sudo /opt/chef/embedded/bin/gem install knife-solo
$ /opt/chef/embedded/bin/gem list –local | grep knife
knife-solo (0.4.1)
$ vi ~/.chef/knife.rb
knife[:solo_path] = '/tmp/chef-solo'

chef リポジトリの作成

knife-solo でリポジトリのひな形を作成します。

$ knife solo init chef-repo

クックブックとレシピの作成

今回は仮想マシンapache をインストールするレシピを作成します。

クックブックの作成

$ cd chef-repo
$ knife cookbook create apache -o site-cookbooks

レシピの編集

$ vi site-cookbooks/apache/recipes/default.rb
package “httpd” do
  action :install
end

service “httpd” do
  supports :status => true, :restart => true, :reroad => true
  action [ :enable, :start ]
end

仮想マシンへ Chef Solo をインストール

knife-solo で仮想マシンへ Chef Solo をインストールします。

$ cd chef-repo
$ knife solo prepare vagrant-centos65
Bootstrapping Chef…
.....
Thank you for installing Chef!
Generating node config 'nodes/vagrant-centos65.json'

chef-solo (knife solo) の実行

knife solo prepare 実行時に作成された json ファイルに実行するレシピを設定します。

$ vi nodes/vagrant-centos65.json
{
    "run_list" : [
        "recipe[apache]"
    ]
}

knife solo コマンドで、仮想マシンへ knife solo を実行します。

$ knife solo cook vagrant-centos65
Running Chef on vagrant-centos65...
Checking Chef version...
Uploading the kitchen...
Generating solo config...
Running Chef...
Starting Chef Client, version 11.10.0
Compiling Cookbooks...
Converging 2 resources
Recipe: apache::default
  * package[httpd] action install
    - install version 2.2.15-29.el6.centos of package httpd

  * service[httpd] action enable
    - enable service service[httpd]

  * service[httpd] action start
    - start service service[httpd]


Running handlers:
Running handlers complete

Chef Client finished, 3/3 resources updated in 23.58120868 seconds

作成したレシピ通り、仮想マシンapache(httpd) のインストール、起動が実行されます。
あとはクックブック(レシピ)の編集 -> knife solo(chef solo) 実行 というフローを繰り返していきます。