背景
動かしてみたいソースコードのバージョンが結構古くて、
rubyやrailsやgemはいいけどDBまわりが心配になったので仮想環境で動かすことにした。
ちなみにホスト環境は Ubuntu 12.04 っす。
手順めも
VirtualBoxとVagrantは既にインストール済みだったので、まずはボックスの作成。
自分のマシンがUbuntuなので、たまにはRedHat系をチョイス。chefもpuppetもついてる。
vagrant init cent64 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130427.box
vagrant sshで仮想環境にアクセスできることを確認。
chefのインストール
sudo gem install chef
これだけだとknife solo initが動かない。
gem install knife-solo
これで動くようになった。
knife solo init chef-repo
これでsoloのリポジトリをつくる。
$ knife cookbook create cent64 -o site-cookbooks
site-cookbooksに手書きのrecipeを置くのが通例らしい。
VergrantのBoxにchefは入ってるけど、念のため、ここでゲスト環境にchefを導入する。
$ knife solo prepare cent64
できない。。。。networkエラー。
ググったらsshの設定らしく次の一行を流す。
$ vagrant ssh-config --host cent64 >> ~/.ssh/config
再度挑戦。
$ knife solo prepare cent64
Bootstrapping Chef...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
101 6790 101 6790 0 0 6559 0 0:00:01 0:00:01 --:--:-- 19795
Downloading Chef 11.6.0 for el...
Installing Chef 11.6.0
warning: /tmp/tmp.kuE8jQUr/chef-11.6.0.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 83ef826a: NOKEY
Preparing... ########################################### [100%]
1:chef ########################################### [100%]
Thank you for installing Chef!
Generating node config 'nodes/cent64.json'...
よっしゃ。続いてレシピを書く。
site-cookbooks/cent64/recipes/default.rb に次を追記。
package "httpd" do
action :install
end
service "httpd" do
action :start
end
これでwebサーバがインストールされて立ち上がるはず。
nodes/cent64.json にレシピを読み込むように次を追記。
{"run_list":["cent64"]}
レシピをコンパイルして適用する。
~/chef-repo$ knife solo cook cent64
Running Chef on cent64...
Checking Chef version...
Uploading the kitchen...
Generating solo config...
Running Chef...
Starting Chef Client, version 11.6.0
Compiling Cookbooks...
Converging 2 resources
Recipe: cent64::default
* package[httpd] action install
- install version 2.2.15-29.el6.centos of package httpd
-
service[httpd] action start
- start service service[httpd]
Chef Client finished, 2 resources updated
おおおおお。できてんじゃん。
ゲストのほうでサービスを確認する。
$ sudo service httpd status
httpd (pid 2683) is running...
よし。ここまでで一段落。
せっかくなのでブラウザからも見れるように設定する。
Vagrantfileを編集。次の行のコメントを外す。
config.vm.network :private_network, ip: "192.168.33.10"
このままだとiptablesが邪魔して80番でアクセスできないから、recipeに次を追記。
service "iptables" do
action [:stop, :disable]
end
ブラウザのアドレスバーに "192.168.33.10"を入力して元気良くエンターキーを押下する
できた!
まだまだ続く・・・
参考
http://ka-zoo.net/2013/06/chef-solo-knife-solo-%E5%B0%8E%E5%85%A5%E3%83%A1%E3%83%A2/
http://dotinstall.com/lessons/basic_vagrant
http://dotinstall.com/lessons/basic_chef