Vagrantで複数のVMを立ち上げてみる

Vagrantで複数のVMを立ち上げてみる。


とりあえず適当なディレクトリを作って移動する。

$ mkdir test
$ cd test

VMを2つ立ち上げる

ChefのCentOS6.5で初期化する。

$ vagrant init chef/centos-6.5

Vagrantfileが作成される。

$ cat Vagrantfile
・・・
VAGRANTFILE_API_VERSION = "2"
・・・
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  ・・・
  config.vm.box = "chef/centos-6.5"
  ・・・
end

このVagrantfileを下記のように修正する。

$ vi Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  config.vm.box = "chef/centos-6.5"

  config.vm.define :web1 do |web|
  end

  config.vm.define :web2 do |web|
  end

end

upで2つのVMが起動する。

$ vagrant up

VirtualBoxで2つのVMが起動しているのが確認できる。


sshでそれぞれに接続できる。

$ vagrant ssh web1
[vagrant@localhost ~]$
$ vagrant ssh web2
[vagrant@localhost ~]$

haltで終了する。

$ vagrant halt

ホスト名とIPアドレスを設定する

このままではどっちのVMなのか分かりにくいので、ホスト名を設定する。
あとIPアドレスも設定する。

$ vi Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  config.vm.box = "chef/centos-6.5"

  config.vm.define :web1 do |web|
    web.vm.hostname = "web1"
    web.vm.network :private_network, ip: "192.168.33.11"
  end

  config.vm.define :web2 do |web|
    web.vm.hostname = "web2"
    web.vm.network :private_network, ip: "192.168.33.12"
  end

end

起動する。

$ vagrant up

sshで接続すると、ホスト名が表示され、
IPアドレスが設定されているのが確認できる。

$ vagrant ssh web1
[vagrant@web1 ~]$ ifconfig
・・・
eth1      Link encap:Ethernet  HWaddr 08:00:27:42:96:42
          inet addr:192.168.33.11  Bcast:192.168.33.255  Mask:255.255.255.0
・・・
$ vagrant ssh web2
[vagrant@web2 ~]$ ifconfig
・・・
eth1      Link encap:Ethernet  HWaddr 08:00:27:09:FA:54
          inet addr:192.168.33.12  Bcast:192.168.33.255  Mask:255.255.255.0
・・・

これでVM間でもsshで接続できる。

[vagrant@web2 ~]$ ssh 192.168.33.11
・・・
vagrant@192.168.33.11’s password:(パスワードはvagrant)
・・・
[vagrant@web1 ~]$