Vagrant でマルチVM

一つのシステムで複数のサーバで構成されるのは、よくあることだ。
Vagrant では、一つの設定ファイルで複数の仮想サーバを管理する仕組みも用意してある。
http://docs-v1.vagrantup.com/v1/docs/multivm.html

Vagrantfile という設定ファイルで管理されている。マルチVMの設定例は以下の通り。

Vagrant::Config.run do |config|
  config.vm.box = "base"
  config.vm.define :web do |web_config|
  end
  config.vm.define :db do |db_config|
  end
end

上記の例では、web と db の2つの仮想マシンを定義した。
それぞれの仮想マシンを起動する場合、vagrant up コマンドにVM名を付けて実行する。

 vagrant up web
 vagrant up db

SSH 接続も同様にVM名を指定する。

 # web に接続
 vagrant ssh web

仮想マシン間のネットワーク通信

VirtualBox のホストオンリーアダプタを利用すると、仮想マシン間もネットワークで通信ができるようになる。これで Web - DB 間の通信を再現できる。
Vagrantfile に設定を追加するだけで、仮想マシン起動時に自動的にネットワークの設定をしてくれる。

Vagrant::Config.run do |config|
  config.vm.box = "base"
  config.vm.define :web do |web_config|
    web_config.vm.network "192.168.1.10"
  end
  config.vm.define :db do |db_config|
    db_config.vm.network "192.168.1.11"
  end
end