Vagrant と Chef-Solo でサーバー環境構築を自動化 (vagrant + chef-sole, knife-solo)
前回エントリの続き。
Vagrant で起動した仮想マシンで chef-sole を実行して、サーバー環境を構築したいと思います。
サーバー環境構築までの処理は、以下のような感じになります。
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'
クックブックとレシピの作成
今回は仮想マシンに 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) 実行 というフローを繰り返していきます。