vagrant と chef-solo と serverspec と

去年の今頃だったかに TDD なインフラが云々、とか言ってましたが (ry
それは良いとして、昨晩から云々してた部分について纏めを作っておきます。

vagrant

一番の敗因は BIOS で VT 関連が disable になってたことでした。当然ながら /proc/cpuinfo には vmx なフラグがセットされてます。
vagrant 自体は以下から v1.1.5 なでびあんパケジを取得して dpkg で導入。

で、sahara 使う場合は

にある方法で無問題だったようです。
で、以下なコマンドで vagrant box add しています。

$ vagrant box add base http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.3-x86_64-v20130101.box

また、最新な状態の Vagrantfile が以下です。

Vagrant.configure("2") do |config|
  config.vm.box = "base"

  config.vm.network :private_network, ip: "192.168.33.10"

   config.vm.provider :virtualbox do |vb|
     # Don't boot with headless mode
     vb.gui = true
  
     # Use VBoxManage to customize the VM. For example to change memory:
     vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
     vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
     #vb.customize ["modifyvm", :id, "--memory", "1024"]
   end
end

あ、あと ~/.ssh/config に以下を追加しています。

host 192.168.33.10
     Identityfile ~/.vagrant.d/insecure_private_key
     User vagrant

これで Vagrant の kickoff と ssh での接続はできる模様。sahara はあまりきちんと動作の確認していないですね。こちらは別途、ということにて。

chef-solo

つうか chef は gem で導入していますね。knife-solo は以下な形で導入してますね。

$ gem i knife-solo --pre --no-ri --no-rdoc

あとは入門 ChefSolo な手順で良いのかどうか。こちらも再度確認必要ですね。

  • knife solo init chef-repo
    • 今、これ動かないみたいなので以下で代替の必要ある模様です
    • knife kitchen chef-repo
  • git で云々
    • cd chef-repo
    • git init && git add . && git commit -m 'initial commit'
  • knife solo prepare 192.168.33.10
  • git で云々
    • git add nodes/192.168.33.10.json
    • git commit -m 'add node json file'
  • クックブック作成 & レシピ編集
    • knife cookbook create nginx -o cookbooks
    • 以下を編集
      • cookbooks/nginx/recipes/default.rb
      • nodes/192.168.33.10.json
      • cookbooks/nginx/templates/default/nginx.conf.erb 追加
  • knife solo cook 192.168.33.10 実行

あ、対象となるホストには少なくとも rsync は導入されてる必要があるようです。ssh はデフォで導入されてるはず、ってのは大丈夫なのかな。
ちなみに nginx 導入の場合は以下を云々しとく必要があるようです。

$ sudo rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm

例えば Gitlab を云々、な場合 chef だけだと微妙なはずなんですが、その先どうするべきなのかな (宿題

serverspec

gem で導入した後、serverspec-init というコマンドを実行する形。

$ gem install serverspec -r --no-ri --no-rdoc
$ rbenv rehash
$ serverspec-init

これでカレントディレクトリに Rakefile および spec なディレクトリができます。ただ、rspec-core-2.13.1 とは相性がよろしくない模様。