vagrant + chef-solo でRailsを動かす - 1 -

2014-05-07

背景


動かしてみたいソースコードのバージョンが結構古くて、
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"を入力して元気良くエンターキーを押下する

apache2

できた!

まだまだ続く・・・

参考

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

#Rails  #Vagrant  #chef-solo