「複数の仮想マシンで検証したい」、「仮想マシン同士で連携したい」ということはないでしょうか。Vagrantには「マルチマシン」という機能があり、1つのVagrantfileで複数の仮想マシンを起動することができます。
本記事では、Vagnratのマルチマシンの設定方法について紹介します。複数の仮想マシンを起動する方法や仮想マシン間の連携方法を記載していきます。
環境
本記事の作業環境は以下となります。
OS・MW | Version |
---|---|
CentOS | 7.6 |
Virtual Box | 6.0.4 |
Vagrant | 2.2.4 |
マルチマシンとは
1つのVagrantfileで複数の仮想マシンを定義し、制御することができます。APサーバやDBサーバなどサーバを用途別に用意したり、分散処理のために複数台用意したいときなどに使います。
設定方法
マルチマシンを設定するには、Vagrantfileに「config.vm.define」を定義します。仮想マシンごとに名前、ボックス、IPアドレスなどを設定することができます。同じボックスを使う場合には「config.vm.define」の外側で定義します。
Vagrant.configure("2") do |config|
config.vm.box = "centos/7"
## server1もserver2もCentOS 7の仮想マシン。
config.vm.define "server1" do |server|
end
config.vm.define "server2" do |server|
end
end
異なるボックスを使う
仮想マシンごとに異なるボックスを使う場合は、それぞれの「config.vm.define」の内側で「config.vm.box」を定義します。例えば、CentOSとUbuntuのボックスを使う場合は以下となります。
Vagrant.configure("2") do |config|
## CentOS 7の仮想マシン。
config.vm.define "server1" do |server|
config.vm.box = "centos/7"
end
## Ubuntu trusty64の仮想マシン。
config.vm.define "server2" do |server|
config.vm.box = "ubuntu/trusty64"
end
end
仮想マシン同士で連携する
仮想マシン同士で連携するには、「server.vm.network」を定義します。引数にprivate_networkとIPを指定することで、各仮想マシンにIPアドレスを割り当てます。これで仮想マシン同士での連携ができるようになります。
Vagrant.configure("2") do |config|
config.vm.define "server1" do |server|
config.vm.box = "centos/7"
server.vm.network "private_network", ip: "192.168.33.10"
end
config.vm.define "server2" do |server|
config.vm.box = "ubuntu/trusty64"
server.vm.network "private_network", ip: "192.168.33.20"
end
end
マルチマシン時のコマンド
基本的なコマンドは変わりませんが、サーバを指定せずに実行する場合は、すべての仮想マシンが対象になります。例えば、「vagrant up」ではすべての仮想マシンを起動し、「vagrant up server1」ではserver1の仮想マシンのみが起動します。
vagrant up #=> すべての仮想マシンが起動する。
vagrant up server1 #-> server1のみ起動する。