本稿では、Vagrant に仮想マシン複数台を定義するマルチマシン(Malti-Machine)設定について解説します。
マルチマシン設定とは?
マルチマシン設定とは、一つの Vagrantfile に複数のゲストマシンを定義する設定です。
例えばWEBサーバーとDBサーバーの両方を同時に起動する必要がある場合や、クライアントとサーバーの関係のマシンを起動する必要がある場合などに、マルチマシン設定が役立ちます。
設定
複数台分のマシンの設定を同一の Vagrantfile に config.vm.define を利用して定義します。 サーバーを2台定義する最低限の設定は次のようなイメージです。 ここでは例として Box として precise32 を指定して2台を定義します。
Vagrant.configure("2") do |config|
config.vm.box = "precise32"
config.vm.box_url = "http://files.vagrantup.com/precise32.box"
config.vm.define "server1" do |server|
end
config.vm.define "server2" do |server|
end
end
この二台のマシンにネットワークの設定(IPアドレスの指定)をすると次のようになります。
Vagrant.configure("2") do |config|
config.vm.box = "precise32"
config.vm.box_url = "http://files.vagrantup.com/precise32.box"
config.vm.define "server1" do |server|
server.vm.network "private_network", ip: "192.168.33.10"
end
config.vm.define "server2" do |server|
server.vm.network "private_network", ip: "192.168.33.11"
end
end
それぞれのマシンで違う Box を利用する場合は、次のようにします。
Vagrant.configure("2") do |config|
config.vm.define "server1" do |server|
server.vm.box = "centOS65"
server.vm.network "private_network", ip: "192.168.33.10"
end
config.vm.define "server2" do |server|
server.vm.box = "centOS70"
server.vm.network "private_network", ip: "192.168.33.11"
end
end
起動
マルチマシン設定でもゲストマシンの起動方法は代わりません。 vagrant up コマンドで起動します、すると定義した台数全てのマシンが起動します。
$ vagrant up
Bringing machine 'server1' up with 'virtualbox' provider...
Bringing machine 'server2' up with 'virtualbox' provider...
...
もし定義した1つのマシンだけを起動したい場合は、vagrant up コマンドに起動したいマシン名を引数で渡してあげます。
$ vagrant up server2
また、起動するマシンを正規表現で指定することもできます。 例えばもっと多くのマシンを定義したとします。 (例: WEB1, WEB2, WEB3, DB1, DB2) 定義したマシンの中で DB サーバーだけ起動したい場合に正規表現で起動することができます。
$ vagrant up /db[0-9]/
SSHログイン
起動したマシンに vagrant ssh コマンドでログインする場合は、ログインする対象のマシン名を指定します。
$ vagrant ssh server2
おわりに
本稿では、Vagrant のマルチマシン設定について解説しました。 複数台のマシンを起動するのでホストマシンに潤沢にメモリが必要となるかもしれませんが、それでもとても有用な機能ですので積極的に利用したいものです。