Chef実践入門 第2章のChef Soloによるローカル開発環境の自動構築 を実機にて検証したメモ
#1.Vagrantにて環境準備
0.前提
ホストOSはMacOSX10
vagrant,birtualbox,ruby,gemはインストール済
1.適当な場所にcentosフォルダ作成
mkdir centos
cd centos/
2.vagrantbox追加(centos7.1)
vagrant box add opscode-centos-7.1 http://opscode-vm-bento.s3.amazonaws.com/vagrant/virtualbox/opscode_centos-7.1_chef-provisionerless.box
3.仮想サーバ起動
vagrant init opscode-centos-7.1
vagrant up
4.vagrant sshで接続確認
vagrant ssh
5.ホスト名:webdbにてssh接続できるように設定
vagrant ssh-config --host webdb >>~/.ssh/config
6.ssh接続の確認 → OK
ssh webdb
7.プライベートネットワークの設定
config.vm.network "private_network", ip: "192.168.33.10"
8.vagrant再起動
vagrant halt
vagrant up
#2.Chef Soloのインストール
1.ホストOS(Mac側)にknife soloとBerkshelfのインストール
sudo gem install knife-solo
sudo gem install berkshelf
2.knife-soloでリポジトリ作成(centosディレクトリ内にchefディレクトリを作成してそこをリポジトリとする。)
mkdir chef
cd chef
knife solo init .
4.knife solo で vagrantのゲストOS webdbにChef Soloをインストール
knife solo bootstrap webdb
5.ゲストOSにChef Soloがインストールされている事を確認
ssh webdb
chef-solo -v
exit
#3.dstatをインストールするcookbookの作成とNode(ゲストOS側)への適用
1.cookbookを作成
knife cookbook create dstat -o site-cookbooks
2.site-cookbooks/dstat/recipes/default.rb を編集
package "dstat" do
action :install
end
3.Nodeオブジェクト設定ファイル(webdb.json)の編集
{
"run_list": [
"recipe[dstat]"
],
}
4.knife-solo で ChefSoloを実行し、Nodeをプロビジョニング
knife solo cook webdb
5.sshでwebdbに接続し、dtstatを実行してインストールを確認する。
ssh webdb
dstat
exit
#4.Apache,MySQLインストールするcookbookの作成とNode(ゲストOS側)への適用
1.cookbookを作成
knife cookbook create yumsetup -o site-cookbooks
knife cookbook create apache -o site-cookbooks
knife cookbook create mysql -o site-cookbooks
2.Nodeオブジェクト設定ファイル(webdb.json)の編集
{
"run_list": [
"recipe[yumsetup]",
"recipe[dstat]",
"recipe[apache]",
"recipe[mysql]"
]
}
3.cookbookの編集
yum_package "yum-fastestmirror" do
action :install
end
execute "yum-update" do
user "root"
command "yum -y update"
action :run
end
#install
package "httpd" do
action :install
end
#chkconfig,start
service "httpd" do
action [ :enable, :start]
end
#install
package "mysql-server" do
action :install
end
#chkconfig,start
service "mysqld" do
action [ :enable, :start]
end
4.knife-solo で ChefSoloを実行し、Nodeをプロビジョニング
knife solo cook webdb
5.エラー発生。mysqlのインストールができない
→ググったところ、centos7からyumリポジトリにmysqlを含んでいないとの事
→mysqlについては後日Berksherfで既存クックブックを使って作成する方針として一旦置いておく
→webdb.jsonから"recipe[mysql]"行を外す
{
"run_list": [
"recipe[yumsetup]",
"recipe[dstat]",
"recipe[apache]"
]
}
6.プロビジョニングを再実行→OK
knife solo cook webdb
#5.vagrant destroyして環境を破棄した後、再度chefにて構築できる事を確認
1.vagrant destroy
vagrant destroy -f
2.vagrant up
vagrant up
*vagrant sshで接続し、初期化された状態になっている事を確認
3.再度Chef実行
knife solo bootstrap webdb
再度プロビジョニングされ、yum update, dsata install,apache installが走る事を確認