ChefDKを利用して開発環境構築(Workstation+単一Node)の勉強をしている。
構築時の流れについて、忘れないうちにメモしておく。
仮想マシン作成〜Chefリポジトリ作成&準備
# 初期の場合
# chef gem install knife-solo
# chef gem install berkshelf
# knife configure
# CentOS6.7のboxファイルを取得
$ vagrant box add centos64 vagrant box add centos64 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20131103.box
# centos67で仮想マシンを作成、起動確認
$ vagrant init centos64
$ vagrant up
# ssh設定を追加。ホスト名はmylinuxとする
$ vagrant ssh-config --host mylinux >> ~/.ssh/config
# mylinuxで、SSH接続ができることを確認
$ ssh mylinux
# 上位ディレクトリに移動し、chefリポジトリを作成
$ cd ../
$ knife solo init chef-repo
# chefリポジトリに移動し、仮想マシンでchefが利用できるようにする
$ cd chef-repo
$ knife solo prepare mylinux
Berksfileへの追記
chef-repo/Berksfile
source "https://api.berkshelf.com"
cookbook "yum"
cookbook "yum-epel"
berksコマンドの実行
$ cd chef-repo
$ berks vendor ./cookbooks
Cookbook作成
# mybookというCookbookを、site-cookbooks配下に作成
$ knife cookbook create mybook -o site-cookbooks/
recipeの追記
chef-repo/site-cookbooks/mybook/recipes/default.rb
%w{
mysql-server
httpd
python-devel
git
}.each do |p|
package p do
action :install
end
end
service "httpd" do
action [:start, :enable]
end
nodeへのレシピ情報の追記
chef-repo/nodes/mylinux.json
{
"run_list": [
"recipe[yum]",
"recipe[yum-epel]",
"recipe[mybook]"
]
}
# node(mylinux)への反映
$ knife solo cook mylinux
# 仮想マシンに反映されていることを確認
$ ssh mylinux2
# 仮想マシン上でgitを実行してみる
$ git