Vagrant VMWare Public: 无法自动设置静态

Vagrant VMWare Public: Unable to set static automatically

我正在使用 VMWare 插件。我目前正在使用以下内容:

config.vm.network "public_network", ip: "172.17.255.13", netmask: "255.255.255.0"

它确实建立了一个 BRIDGED 连接,但它是一个 BRIDGED DHCP 连接。

有人成功使用过静态IP吗?

这是一个 CentOS-6.6 盒子。

更新:是特定的VM配置,创建者没有删除/etc/中需要在VM打包前清除的文件

根据 this bug thread,人们在使用 vmware_fusion 作为提供者时遇到了同样的问题;当时正在与 virtualbox 提供商合作。

似乎 VMware Fusion/Workstation pluginv3.2.0 已发布,其中包含针对此问题的错误修复。尝试将您的 VMWare 插件更新到此版本并再次测试。

但是如果我们看一下 3.2.0 的 Vagrant VMWare Plugin,它会提到:

core: static IPs work for public networks (private networks have always works)

新发布的版本 (> 3.2.0) 似乎没有解决这个问题。

在等待 vagrant-vmware-workstation 插件团队对此进行修补时,我想到了一个非常优雅的解决方案。

我设置了 vagrant,设置了 public_network,auto_config 设置为 false。 (所以vagrant不会覆盖我改的文件)

config.vm.network "public_network", auto_config: false

设置之后,我可以 运行 一个 shell 配置程序回显包含 eth1 设置的文件(eth0 始终是 vagrant 的仅主机网络)

config.vm.provision "shell" do |s|
    s.path = "setIP.sh"
    s.args   = ["192.168.1.150", "255.255.255.0"] #ip/netmask
    privileged = "true"
end

它 运行 是一个 shell 脚本,将 IP 和网络掩码作为参数传递给 shell 脚本。

shell脚本修改/etc/sysconfig/network-scripts/ifcfg-eth1(CentOS-6.6中eth1的配置文件),然后重启网络使设置生效。

setIP.sh:

echo Setting IP to , Netmask to 
cat <<EOF > /etc/sysconfig/network-scripts/ifcfg-eth1

#PACHONK SET-IP CONFIG BEGIN
IPADDR=
NETMASK=
ONBOOT=yes
DEVICE=eth1
#PACHONK SET-IP CONFIG BEGIN

EOF

#Restart networking to make IP active
/etc/init.d/network restart

就像我说的,看起来这个错误已经有一段时间了。我暂时创建了最优雅的修复程序。

原来我们使用的 CentOS base vagrant box 有一些问题。我手工打包了一个新的 CentOS vagrant box,它可以使用 vagrant 插件进行配置。