VagrantのGuestOS(CentOS)に静的IPを割り当てて、外部ホストからアクセスさせたい。
しかし、何度もDestroyする予定なので、毎回設定するのは面倒です。
少し調べましたが、単純にはできないようなので、シェルスクリプトを使用して行いました。
public_networkで、DHCPを使用しない場合は、Vagrantによってルーティングテーブルが自動的に設定されるようです。
これを、シェルスクリプトで書き換えます。
シェルスクリプトを使用する方法
以下はnode1に対して行っています。
defaultを使用している場合は単にconfig.vm.provisionでアクセスします。
Vagrantfile
config.vm.define :node1 do |node|
node.vm.box = "centos67"
node.vm.network :public_network, :auto_config => false
#vagrantfileのあるフォルダのbootstrap.shを使用して静的IPで外部からアクセスできるようにする
node.vm.provision :shell, :path => "bootstrap.sh"
end
Vagrantfileと同じフォルダに"bootstrap.sh"を設置します。
bashへのパスと、改行コード、BOM付きファイルに注意しましょう。
IPとデフォルトゲートウェイ、デバイスは環境に合わせて変更してください。
bootstrap.sh
#!/bin/bash
#固定ip設定
ifconfig eth1 192.168.10.20 netmask 255.255.255.0 up
#default gatewayの変更
ip route del default
ip route add default via 192.168.10.254
provisionを使用してvagrantを起動します。
vagrant up --provision
CentOS7で上記のスクリプトを使いまわす場合は、
bootstrap.sh
#!/bin/bash
#固定ip設定
yum -y install net-tools
ifconfig enpXX 192.168.10.20 netmask 255.255.255.0 up
#default gatewayの変更
ip route del default dev enpXY
ip route add default via 192.168.10.254 dev enpXX
のようにすれば良いです。