Vagrant 複数の仮想マシンを立ち上げる

Vagrantにて一つのVagrantfileで複数の仮想マシンを立ち上げる方法についてです。

環境

  • Vagrant 1.9.1

Vagrantfileの書き方

config.vm.defineブロックを使います。

初期状態では、次のように一つの仮想マシンが定義されています。

Vagrant.configure(2) do |config|
 config.vm.box = "bento/ubuntu-16.04"
 config.vm.network "private_network", ip: "192.168.33.10"
 # 省略
end

複数の仮想マシンに対応する場合は、config.vm.define <マシン名>のブロック内に定義を入れます。

もともとのマシンを活かす場合は、次のようにマシン名を”default“にします。

Vagrant.configure(2) do |config|
 config.vm.define "default" do |v|
  v.vm.box = "bento/ubuntu-16.04"
  v.vm.network "private_network", ip: "192.168.33.10"
  # 省略
 end
end

2台目の仮想マシンを追加するときは、もう一つconfig.vm.defineブロックを作り、そこに定義します。

Vagrant.configure(2) do |config|
 # 1台目
 config.vm.define "default" do |v|
  v.vm.box = "bento/ubuntu-16.04"
  v.vm.network "private_network", ip: "192.168.33.10"
  # 省略
 end

 # 2台目
 config.vm.define "db" do |v|
  v.vm.box = "bento/ubuntu-16.04"
  v.vm.network "private_network", ip: "192.168.33.11"
  # 省略
 end
end

起動方法他

各マシンを個別に起動させることができるようになりました。マシン名を省略すると、すべての仮想マシンが起動します。

$ vagrant up [<マシン名>]
$ vagrant up db

SSH接続ではマシン名の指定が必須です。

$ vagrant ssh <マシン名>
$ vagrant ssh db