No.194
【Vagrant】仮想マシンを同時に起動する
ひとつのVagrantfileで仮想マシンを複数起動させたい
まあ、Vagrantfileを複数用意すればいいとかそういう話もあるけど、せっかくVagrantにはMulti-Machineという概念があるので利用しない手はない。
ひとつのリポジトリで、
- 旧システムの環境と新システムの環境を同時に管理したい
- WEBサーバとDBサーバを別立てしたい
などの時に便利なはず。たぶん。
環境別の項目
環境ごとにconfig.vm.define
ブロックを用意して記載すればOK。
Vagrant.configure(2) do |config|
config.vm.define :環境1 do |instance|
環境1の設定
end
config.vm.define :環境2 do |instance|
環境2の設定
end
end
これでvagrant up
すると複数の環境が起動するようになる。
環境を指定して起動させたい場合はvagrant up
に環境名を追加すればOK。
vagrant up 環境1
共通の設定項目
共通の設定、例えば共有フォルダの設定などはVagrant.configure
ブロックの直下に記載すればいい。
boxファイルの共用もOKだ。
Vagrant.configure(2) do |config|
共通の設定
config.vm.define :環境1 do |instance|
環境1の設定
end
config.vm.define :環境2 do |instance|
環境2の設定
end
end
Primary Machine
複数の環境を定義する場合、デフォルトの環境を指定することができる。それがPrimary Machine
だ。
記述は簡単。下記のようにデフォルトにしたい環境にprimary: true
をつければよい。下記の例では環境1をデフォルト(プライマリ)にしている。
プライマリの環境はひとつしか指定できないので注意すること。
Vagrant.configure(2) do |config|
config.vm.define :環境1, primary: true do |instance|
環境1の設定
end
config.vm.define :環境2 do |instance|
環境2の設定
end
end
Autostart Machines
Vagrantfileに複数の環境を記述した場合、vagrant up
すると全ての環境が起動してしまう。
全部起動させたくない場合は、オプションにautostart: false
を追加すればOK。
Vagrant.configure(2) do |config|
config.vm.define :環境1, primary: true do |instance|
環境1の設定
end
config.vm.define :環境2, autostart: false do |instance|
環境2の設定
end
end
これでvagrant up
しても環境1だけしか起動しなくなる。