Windows 7 上の Vagrant で Chef-Soloプロビジョニング
Vagrant 0.8.7 で用意されているプロビジョニングの仕組みは、
- Puppet
- Chef (solo/client)
- Shell
の3種類ほど。
chef-solo を使いたかったのだが、Windows 7 ではどうしても失敗してしまう。
(関連:現在の Vagrant の Windows 7 対応状況)
ローカルのディレクトリは、/vagrant でマウントされるので、そこに chef リポジトリを設置しておけば、Shell から chef-solo を呼べるのではないか?と考え試してみた。
以下のファイルを用意。
- Vagrantfile
- bin/provision.sh
- bin/solo.rb
- bin/node.json
- chef/cookbooks/[必要なcookbook]
Vagrantfile
Vagrant::Config.run do |config| config.vm.provision :shell, :inline => 'sh /vagrant/bin/provision.sh' end
bin/provision.sh
#!/bin/sh if [ ! -e /var/chef/cache ]; then sudo mkdir -p /var/chef/cache fi cd `dirname $0` sudo chef-solo -c solo.rb -j node.json
bin/solo.rb
cookbook_path ["/vagrant/chef/cookbooks"]
bin/node.json
{"run_list":["必要レシピ",...]}
chef ディレクトリ以下が、chef リポジトリである。ひな型を Github から取得しておく。
git clone https://github.com/opscode/chef-repo.git chef
chef/cookbooks 以下に必要な cookbook を用意する。
これで、vagrant up すれば、chef-solo がキックされる。