読者です 読者をやめる 読者になる 読者になる

Vagrant で仮想マシンを構築する(5) 複数仮想マシンの起動

明けましておめでとうございます。
今年もよろしくお願いします。

引き続き、Vagrant です。
Vagrant では、一つの Vagrantfile で複数仮想マシンを起動することができます。
仮想マシン同士の通信は、プライベートネットワークで行います。*1

複数仮想マシンの起動

config.vm.define で複数マシンを起動します。
使用する box や共有フォルダ、プロビジョニングは、仮想マシン毎に設定可能です。*2

Vagrant.configure(2) do |config|
  config.vm.box = "ubuntu/trusty64"
  config.vm.define "host01" do |config|
    config.vm.network "private_network", ip: "192.168.56.10"
    config.vm.synced_folder "./data/host01", "/home/vagrant/data"
  end
  config.vm.define "host02" do |config|
    config.vm.network "private_network", ip: "192.168.56.11"
    config.vm.synced_folder "./data/host02", "/home/vagrant/data"
  end
end

複数仮想マシンの制御

上記の設定で vagrant up すると、2 つの仮想マシンが起動します。

$ vagrant status                                                                                     2015-01-01 15:30:50
Current machine states:

host01                    running (virtualbox)
host02                    running (virtualbox)
.....

仮想マシンを制御する、reload、halt、destroy などのコマンドは、定義名(host01, host02) を指定することで仮想マシン毎に実行できます。
定義名を指定しない場合は、全ての仮想マシンに対して実行されます。

(host01 への ssh ログイン)
$ vagrant ssh host01

(host01 再起動)
$ vagrant reload host01

(host01 停止)
$ vagrant halt host01

(host01 削除)
$ vagrant destroy host01

Multi-Machine - Vagrant Documentation

*1:パブリックネットワーク(ブリッジネットワーク)でも仮想ホスト同士の通信はできますが、お手軽なプライベートネットワークを使用します

*2:今回は同じ box を使用しました