概要
ロードバランサの検証だったりレプリケーションの検証をするときに複数のVMを立ち上げる必要がありますが、それぞれ別々に作って起動するのは面倒ですよね。
Vagrant だと設定ファイルを編集すれば一度にできてしまうのでご紹介します。
環境
複数起動するための最低限の設定例
Vagrantfile を編集します。 最後の方に各VM毎の設定を追記します。
Vagrant.configure(2) do |config| # 色々コメントたくさん〜 config.vm.define :web1 do |web| end config.vm.define :web2 do |web| end end
この状態で
$ vagrant up
すると複数のVMを起動してくれます。
ネットワークを設定した例
先ほどの設定だとNICが共有されちゃってるのでもう1つNICを追加します。
Vagrant.configure(2) do |config| # 色々コメントたくさん〜 config.vm.define :web1 do |web| web.vm.network :private_network, ip: "192.168.33.10" end config.vm.define :web2 do |web| web.vm.network :private_network, ip: "192.168.33.11" end end
これで起動すればそれぞれ異なるIPを持った状態で起動できます。 また内部ネットワークを構築しているのでVM同士の疎通もできます。
ポートフォワーディングの設定をした例
Vagrant.configure(2) do |config| # 色々コメントたくさん〜 config.vm.define :web1 do |web| web.vm.network :private_network, ip: "192.168.33.10" web.vm.network :forwarded_port, host: 8001, guest: 8000 end config.vm.define :web2 do |web| web.vm.network :private_network, ip: "192.168.33.11" web.vm.network :forwarded_port, host: 8002, guest: 8000 end end
このように設定すれば
ホストPCの8001 -> web1の8000 ホストPCの8002 -> web2の8000
といった形で設定が可能になります。
CPUやメモリの設定をした例
Vagrant.configure(2) do |config| # 色々コメントたくさん〜 config.vm.define :web1 do |web| web.vm.provider "virtualbox" do |vb| vb.cpus = 1 vb.memory = 1024 end end config.vm.define :web2 do |web| web.vm.provider "virtualbox" do |vb| vb.cpus = 2 vb.memory = 2048 end end end
これでCPU: 1, Memory: 1G
とCPU:2, Memory: 2G
のマシンができました。
その他
注意として以前使った
$ vagrant ssh
はそのまま使えません。どちらに接続するかはっきりしないからですね。
$ vagrant ssh web1
といった感じで名前を指定するとSSH接続できます。もしくは以前のように
$ vagrant ssh-config >> ~/.ssh/config
として設定すれば
$ ssh web1
といったようにどのフォルダからでも接続できます。