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 plugin
的 v3.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 插件进行配置。
我正在使用 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 plugin
的 v3.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 插件进行配置。