Vagrant1.1のMulti-VM環境でSaharaを使う方法

 2013/03/31
このエントリーをはてなブックマークに追加

昨日の「Vagrantの必須プラグインSaharaをVagrant 1.1に対応させました」の続きです。

Vagrantでは1つのVagrantfileで同時に複数のインスタンスを立ち上げるMulti-VMに対応しています。例えば、Vagrant1.1だと以下のように定義できます。別にインスタンスはメモリが許す限り何個でも立ち上げられるので、大きめな規模の構成でも1つのVagrantfileで定義して一気に環境を作ることもできます。Chefなどと組み合わせれば、開発チームに新たにメンバーが追加になっても、一瞬で個人用開発環境を立ち上げられます(もう、今日と明日は環境構築です、とか言わせねぇ)。

Vagrant.configure("2") do |config|

  # 共通設定
  box_name = "centos_63_x86_64_ja"
  box_url = "https://dl.dropbox.com/u/428597/vagrant_boxes/centos_63_x86_64_ja.box"

  ###### 1台め
  config.vm.define :web do |web|
    web.vm.box = box_name 
    web.vm.box_url = box_url
    web.vm.network :private_network, ip: "192.168.33.30"
    web.vm.hostname = "webtest01"
  end

  ###### 2台め
  config.vm.define :db do |db|
    db.vm.box = box_name 
    db.vm.box_url = box_url
    db.vm.network :private_network, ip: "192.168.33.31"
    db.vm.hostname = "dbtest01"
  end
end

上記の例では単に起動だけを行っていますが、Chef ServerやChef SoloやPuppetを使ったプロビジョニングをインスタンスごとに設定することも当然可能です。その場合は以下のような感じです(これをdbのところでも行えばOKです)。

config.vm.define :web do |web|
  web.vm.box = box_name 
  web.vm.box_url = box_url
  web.vm.network :private_network, ip: "192.168.33.30"
  web.vm.hostname = "webtest01"

  web.vm.provision :chef_client do |chef|
    chef.chef_server_url = "http://chef.ryuzee.com:4000"
    chef.validation_key_path = "~/.chef/validation.pem"
    chef.environment = "development"
    chef.validation_client_name = "chef-validator"
    chef.client_key_path = "/etc/chef/client.pem"
    chef.add_recipe "apache_mysql_php"
  end
end

本題ですが、このように複数のインスタンスを使っている場合でもSaharaを使うことができます。たとえば上記の例であれば

vagrant sandbox on web
vagrant sandbox status web

のように最後の引数にインスタンス定義の名前を渡せばOKです。なお、この名前を渡さない場合は、Vagrantfile内で定義されているすべてのインスタンスが処理の対象になります。たとえば

vagrant sandbox status

とすれば

[db] Sandbox mode is on
[web] Sandbox mode is on

のように表示されます。

■sandboxモードに入る

vagrant sandbox on [インスタンス定義の名前]

■sandboxを開始時点にロールバックする

vagrant sandbox rollback [インスタンス定義の名前]

■sandboxモードの終了

vagrant sandbox off [インスタンス定義の名前]

■sandboxの内容を恒久的に反映

vagrant sandbox commit [インスタンス定義の名前]

■現在sandboxモードかどうかを確認する

vagrant sandbox status [インスタンス定義の名前]
 2013/03/31
このエントリーをはてなブックマークに追加

サイト内検索


著作

寄稿

Latest post: