更新 Vagrant 虚拟机中的 IP 地址

update IP Address in Vagrant VMs

我有 5 个使用 vagrant 启动的虚拟机。

3 负载平衡器和 2 网络服务器。


VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.define "lb0" do |lb0|
    lb0.vm.box = "ubuntu/trusty64"
    lb0.vm.hostname = "lb0"
    lb0.vm.network :private_network, ip: "10.11.13.50"
  end
  config.vm.define "lb01" do |lb01|
    lb01.vm.box = "ubuntu/trusty64"
    lb01.vm.hostname = "lb01"
    lb01.vm.network :private_network, ip: "10.11.13.51"
  end
  config.vm.define "lb02" do |lb02|
    lb02.vm.box = "ubuntu/trusty64"
    lb02.vm.hostname = "lb02"
    lb02.vm.network :private_network, ip: "10.11.13.52"
  end

  config.vm.define "web01" do |web01|
    web01.vm.box = "ubuntu/trusty64"
    web01.vm.hostname = "web01"
    web01.vm.network :private_network, ip: "10.11.12.53"
  end

  config.vm.define "web02" do |web02|
    web02.vm.box = "ubuntu/trusty64"
    web02.vm.hostname = "web02"
    web02.vm.network :private_network, ip: "10.11.12.54"
  end
end

由于新要求,我最近刚刚从 10.11.12.x --> 10.11.13.x 更新了我的负载均衡器的 IP。


我再次 运行 vagrant up,我 没有 在我的 lb0lb1 上看到更新的新 IP,和 lb2。 :( 我错过了什么吗?


我该怎么做才能更新我现有的 VM IP 而不必 销毁它们并重新创建它们?

这很奇怪,通常如果您从 Vagrantfile 更改网络配置,vagrant 应该会在您的 VM 中进行相应更新。

如果启用类似 config.vm.network :private_network, ip: "10.11.13.52" 的内容,您应该会在文件 /etc/network/interfaces 的末尾看到类似

的内容
#VAGRANT-BEGIN
# The contents below are automatically generated by Vagrant. Do not modify.
auto eth1
iface eth1 inet static
      address 10.11.13.52
      netmask 255.255.255.0
#VAGRANT-END

如果您没有在文件中看到更新后的 IP,请手动更改它并运行 sudo /etc/init.d/networking restart 以获得可用的新 IP

Vagrantfile

中调整新IP后
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.define "lb0" do |lb0|
    lb0.vm.box = "ubuntu/trusty64"
    lb0.vm.hostname = "lb0"
    lb0.vm.network :private_network, ip: "10.11.13.50"
  end
  config.vm.define "lb01" do |lb01|
    lb01.vm.box = "ubuntu/trusty64"
    lb01.vm.hostname = "lb01"
    lb01.vm.network :private_network, ip: "10.11.13.51"
  end
  config.vm.define "lb02" do |lb02|
    lb02.vm.box = "ubuntu/trusty64"
    lb02.vm.hostname = "lb02"
    lb02.vm.network :private_network, ip: "10.11.13.52"
  end

  config.vm.define "web01" do |web01|
    web01.vm.box = "ubuntu/trusty64"
    web01.vm.hostname = "web01"
    web01.vm.network :private_network, ip: "10.11.12.53"
  end

  config.vm.define "web02" do |web02|
    web02.vm.box = "ubuntu/trusty64"
    web02.vm.hostname = "web02"
    web02.vm.network :private_network, ip: "10.11.12.54"
  end
end

我知道我必须 运行 vagrant reload

然后,我注意到我的 IP 已按预期更新。

使用可用的 ip 地址更新您的 Vagrantfile 并vagrant reload使更改生效。