Vagrantにおいて表題の通り。複数台構成の環境をVagrantで構築する。
■ 環境
- Vagrant 1.7.4
- Mac OSX (10.9.5)
■ Vagrantfile
Vagrantfileは下記のように準備した。
Vagrant.configure(2) do |config|
config.vm.box = "chef/centos-6.6"
config.vm.define "zoo1"
config.vm.define "zoo2"
config.vm.define "zoo3"
end
いずれZooKeeperを3台構成で稼動させる予定である。それぞれ個別の設定はまだしていない。
■ 起動
上記のように記載したVagrantfileを使って起動する。
$ vagrant up
Bringing machine 'zoo1' up with 'virtualbox' provider...
Bringing machine 'zoo2' up with 'virtualbox' provider...
Bringing machine 'zoo3' up with 'virtualbox' provider...
:
3台を一気に起動しているのでローカルマシンに負荷が掛かるのは仕方がない。起動すると下記のように確認できる。
$ vagrant status
Current machine states:
zoo1 running (virtualbox)
zoo2 running (virtualbox)
zoo3 running (virtualbox)
This environment represents multiple VMs. The VMs are all listed
above with their current state. For more information about a specific
VM, run `vagrant status NAME`.
$
個別の状態も確認することができる。
$ vagrant status zoo1
■ SSH接続
名前を指定すれば、1台での時と同じようにSSHでログイン可能だ。
$ vagrant ssh zoo1
ちなみに名前を指定しない場合は下記のようにエラーとなる。
$ vagrant ssh
This command requires a specific VM name to target in a multi-VM environment.
$
他のコマンドも基本的に全て名前をつければ動作するであろう。
■ 状態変更
状態を変更してみる。
$ vagrant halt zoo2
:
$ vagrant suspend zoo3
:
この場合の”status”コマンドの結果は下記の通りだ。
$ vagrant status
Current machine states:
zoo1 running (virtualbox)
zoo2 poweroff (virtualbox)
zoo3 saved (virtualbox)
:
■ 破棄
全てを破棄する。
$ vagrant destroy
zoo3: Are you sure you want to destroy the 'zoo3' VM? [y/N] y
==> zoo3: Discarding saved state of VM...
==> zoo3: Destroying VM and associated drives...
==> zoo3: Removing hosts
zoo2: Are you sure you want to destroy the 'zoo2' VM? [y/N] y
==> zoo2: Destroying VM and associated drives...
==> zoo2: Removing hosts
zoo1: Are you sure you want to destroy the 'zoo1' VM? [y/N] y
==> zoo1: Forcing shutdown of VM...
==> zoo1: Destroying VM and associated drives...
==> zoo1: Removing hosts
$
複数台構成の環境も容易に扱えて便利だ。
以上。