Vagrant 1.1.5とSaharaを試した
Vagrantと1.0.xと1.1.xについて
バージョン1.1.xの位置づけについては以下の記事を参照。 Vagrant 1.1, VMware Fusion - HashiCorp 変更履歴は vagrant/CHANGELOG.md at master · mitchellh/vagrant · GitHub。
gem installで入れられるのは1.0.x系のみ。現在は1.0.7。 search | RubyGems.org | your community gem host
Vagrant 1.1.5のインストール
Vagrant → Vagrant - Downloads → Vagrant - Downloads v1.1.5 と進み、Vagrant.dmgをダウンロードしてインストール
PATH設定
vagrantコマンドにPATHを通します。
cat <<'EOF' >> ~/.bash_profile
export PATH=/Applications/Vagrant/bin:$PATH
EOF
. ~/.bash_profile
ruby 1.9.3p327が同梱されています。
$ /Applications/Vagrant/embedded/bin/ruby --version
ruby 1.9.3p327 (2012-11-10 revision 37606) [universal.x86_64-darwin12.2.1]
Vagrant 1.1.x用のSaharaをインストール
Vagrantの必須プラグインSaharaをVagrant 1.1に対応させました | Ryuzee.comの手順でインストール。
mkdir -p ~/src/chef
cd ~/src/chef
git clone https://github.com/ryuzee/sahara.git
cd sahara
export PATH=/Applications/Vagrant/embedded/bin:$PATH
sudo gem install bundler
bundle install
bundle exec rake build
vagrant plugin install pkg/sahara-0.0.14.gem
~/.vagrant.d/gems/gems/sahara-0.0.14/にインストールされた。
複数VM環境でのテスト
Vagrantfile
-*- mode: ruby -*-
## vi: set ft=ruby :
Vagrant::Config.run do |config|
config.ssh.private_key_path = "../vagrant.id_rsa"
config.vm.define :web1 do |c|
c.vm.box = "centos6.4"
c.vm.host_name = "web1"
c.vm.network :hostonly, "192.168.33.24"
c.vm.customize ["modifyvm", :id,
"--name", "web1",
"--natdnshostresolver1", "on",
"--cpus", 1,
"--memory", 512
]
end
config.vm.define :db1 do |c|
c.vm.box = "centos6.4"
c.vm.host_name = "db1"
c.vm.network :hostonly, "192.168.33.25"
c.vm.customize ["modifyvm", :id,
"--name", "db1",
"--natdnshostresolver1", "on",
"--cpus", 1,
"--memory", 512
]
end
end
なお、centos6.4のVMはrubyやchef-soloはインストールしていない状態になっています。
sandboxモードをオンにしてVM起動。
vagrant sandbox on
vagrant up
ホスト側からchefセットアップ実行。
./bin/knife solo prepare web1
./bin/knife solo prepare db1
web1, db1にログインして/usr/bin/chef-soloが作成されたことを確認。
ロールバックを実行。
vagrant sandbox rollback
web1, db1にログインして/usr/bin/chef-soloが無いことを確認。
ホスト側から再度chefセットアップ実行。
./bin/knife solo prepare web1
./bin/knife solo prepare db1
コミット実行。
vagrant sandbox commit
ホスト側からchefクックブック実行。
./bin/knife solo cook web1
./bin/knife solo cook db1
web1, db1にログインして/usr/bin/chef-soloがあること、/etc/chefが作成されたことをを確認。
ロールバック実行。
vagrant sandbox rollback
web1, db1にログインして/usr/bin/chef-soloがあること、/etc/chefが無いことをを確認。
テスト環境
- OS: OS X 10.8.3
- VirtualBox: 4.2.10
- Vagrant: 1.1.5
- sahara: https://github.com/ryuzee/sahara.git commit d22795aa417ec1cb67eb92810afb52300edd3c44