概要
Vagrantで複数ホストがそれぞれ複数ネットワークをもつゲストOSを作りたかった。
いい例がなかったのでまとめた。VMはVirutalboxを前提としている。
デフォルトゲートウェイ
デフォルトゲートウェイを変更したい場合がある。Vagrantではポストスクリプトで変更する。コマンドがOS毎に違うので、あらかじめ調べておく必要がある。例えばCentOS6とCentOS7の場合では、次のよう異なる。
CentOS6
route del default
route add default gw 192.168.0.1
CentOS7
ip route del default
ip route add default via 192.168.0.1
テンプレート
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
config.vm.box = "saitou1978/centos-6_dev"
config.vm.define "node01" do |server|
server.vm.hostname = "node01"
server.vm.network "public_network", type: "dhcp"
server.vm.network "private_network", ip: "192.168.44.115"
server.vm.provision "shell", inline: <<-SHELL
route del default
route add default gw 192.168.0.1
SHELL
end
config.vm.define "node02" do |server|
server.vm.hostname = "node02"
server.vm.network "public_network", type: "dhcp"
server.vm.network "private_network", ip: "192.168.44.116"
server.vm.provision "shell", inline: <<-SHELL
route del default
route add default gw 192.168.0.1
SHELL
end
end
まとめ
デフォルトゲートウェイは以下のようにもできる。
route add default gw 192.168.0.1 eth1
ただし、Virutalboxを使っている場合は、eth0の設定は変更しないようにする。
Appendix
Vagrantfileに以下を加えておけば忘れないかもしれない。
############################################
## N/W 1: NAT (static)
# config.vm.network "public_network", ip: '192.168.0.30'
## N/W 2: NAT (DHCP)
# config.vm.network "public_network", type: "dhcp"
## N/W 3: Localのみ
# config.vm.network "private_network", ip: "192.168.44.116"
## デフォルトゲートウェイの変更
# config.vm.provision "shell", inline: <<-SHELL
# route del default
# route add default gw 192.168.0.1 eth1
# SHELL