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

12

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

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

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

有人成功地使用了静态IP吗?

这是一个CentOS-6.6盒子。

更新:这是特定的VM配置问题,创建者没有删除需要在VM封装之前清除的/etc/文件。

3个回答

5

在等待vagrant-vmware-workstation插件团队修复此问题时,我想出了一个相当优雅的解决方案。

我使用vagrant设置了一个public_network,并将auto_config设置为false。(这样vagrant就不会覆盖我更改的文件)

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

在我设置好之后,我可以运行一个shell provisioner来向包含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脚本修改/etc/sysconfig/network-scripts/ifcfg-eth1(CentOS-6.6中eth1的配置文件),然后重启网络以使设置生效。

setIP.sh:

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

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

EOF

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

就像我所说的那样,这个问题似乎已经存在一段时间了。我现在创建了一个最优雅的修复方法。


1
根据此错误线程,当人们使用vmware_fusion作为提供程序时,会遇到相同的问题;而使用virtualbox提供程序则可以正常工作。
看起来VMware Fusion/Workstation 插件v3.2.0已经发布了一个修复此问题的bugfix。请尝试将您的VMWare插件更新到此版本并再次测试。
但是,如果我们查看3.2.0的Vagrant VMWare Plugin,它提到:

core:静态IP适用于公共网络(私有网络一直有效)

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

我仍然遇到这个问题,即我声明一个公共网络,但它被配置为DHCP。 - grepsedawk

0
原来我们使用的 CentOS 基础 Vagrant Box 存在某种问题。我手动打包了一个全新的 CentOS Vagrant Box,使用 Vagrant 插件进行了配置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接