Vagrant 仮想マシンとして複数のサーバを同時に立ち上げるには、Vagrantfile
の中で下記のようにそれぞれの仮想マシン定義を行います。
ここでは、すべて仮想マシンの box として hashicorp/precise
(Ubuntu 12.04) を指定していますが、仮想マシンごとに異なる box を設定することもできます。
Vagrant.configure("2") do |config|
config.vm.box = "hashicorp/precise64"
config.vm.define "vagrant1" do |c|
c.vm.network "forwarded_port", guest: 80, host: 10080
c.vm.network "forwarded_port", guest: 443, host: 10443
end
config.vm.define "vagrant2" do |c|
c.vm.network "forwarded_port", guest: 80, host: 20080
c.vm.network "forwarded_port", guest: 443, host: 20443
end
config.vm.define "vagrant3" do |c|
c.vm.network "forwarded_port", guest: 80, host: 30080
c.vm.network "forwarded_port", guest: 443, host: 30443
end
end
各仮想マシンのコンフィギュレーションブロック内でポートフォワード設定を行っていますが、単純に仮想マシンを立ち上げるだけであれば、このあたりの個別の設定は後回しにしても構いません。
あとは、vagrant up
とするだけで、すべての仮想マシンが順番に立ち上がります。
$ vagrant up
Bringing machine 'vagrant1' up with 'virtualbox' provider...
Bringing machine 'vagrant2' up with 'virtualbox' provider...
Bringing machine 'vagrant3' up with 'virtualbox' provider...
...
ちゃんと稼働しているかどうかは vagrant status
コマンドで確認することができます。
$ vagrant status
Current machine states:
vagrant1 running (virtualbox)
vagrant2 running (virtualbox)
vagrant3 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`.
それぞれの仮想マシンに SSH 接続するときは、下記のように vagrant ssh
コマンドのパラメータで仮想マシン名を指定します。
$ vagrant ssh vagrant1
複数の仮想マシンが存在する環境では、Vagrant のコマンドも複数の仮想マシンに影響するように変化します。
$ vagrant reload # すべての仮想マシンを再起動
$ vagrant reload web1 # web1 という名前の仮想マシンを再起動
$ vagrant reload web1 web2 # web1 と web2 を再起動
$ vagrant reload /web\d/ # 正規表現で仮想マシンを指定することも可能
上記は、vagrant reload
の例ですが、vagrant up
や vagrant halt
も同様に仮想マシン名を指定した制御を行えます。