我正在尝试让 vagrant配置具有两个网络接口的VM:
在虚拟机上一切正常。我将eth0作为NAT类型接口,通过DHCP连接到互联网,eth1作为静态IP,我可以从虚拟机主机连接到该静态IP(我只需要在虚拟机设置中添加私有子网)。但是,当我打包这个虚拟机并尝试将其部署为来自流浪者的框时,由于Vagrant 更改了MAC地址,我无法自动启动eth1(这意味着静态网络配置赢了)不适用于它)
默认情况下,vagrant第一个适配器始终设置为NAT-ed interfance。这意味着我不需要在vagrantfile中为eth0添加任何内容。
对于eth1,我在Vagrantfile中添加了以下内容:
config.vm.network:private_network,ip:“192.168.100.201”,:mac => “080027df863a”,:adapter => 2
问题:当我启动vm(流浪者)时,为eth1分配新MAC 。因此,我在/ etc / sysconfig / network-scripts / ifcfg-eth1中已经存在的静态IP映射无效(因为它指向我在虚拟机中创建VM时分配的MAC)。
如果我从虚拟机中删除虚拟机,重新打包并通过具有相同配置的流浪汉部署虚拟机,接口将被添加,但MAC地址也不同(并且/ etc / sysconfig / network中不存在初始化脚本)脚本/)
TLDR:我想创建一个流浪盒,其中eth0作为NAT-ed接口(DHCP),eth1作为静态主机接口(静态IP)。尽可能实现自动化的最佳方法是什么? VM从盒子中获取配置后,我不想做任何事情。
由于
答案 0 :(得分:2)
首次启动或配置时,Virtualbox会设置MAC地址。这意味着您很可能需要修改Virtualbox本身而不是vm。以下是一些可能有用的链接:
http://docs.vagrantup.com/v2/virtualbox/configuration.html
http://www.virtualbox.org/manual/ch08.html
这是一些可能也有用的代码,但我实际上没有测试过它。
config.vm.provider :virtualbox do |vb|
# Don't boot with headless mode
#vb.gui = true
# Use VBoxManage to customize the VM. For example to change memory:
#vb.customize ["modifyvm", :id, "--memory", "1024"]
# This might be an example of modifying the MAC address:
vb.customize ["modifyvm", :id, "--macaddress2", "080027df863a"]
end
据我所知,这需要添加到您的Vagrant文件中,以便在vagrant up
或vagrant reload --provision
上修改MAC地址。
上面的大部分代码都是Vagrantfile中的默认代码,但是将此行添加到Virtualbox提供程序行:
vb.customize ["modifyvm", :id, "--macaddress2", "080027df863a"]