Vagrant无法自动设置静态私有IP

时间:2013-12-18 16:34:03

标签: linux networking virtualbox vagrant

我正在尝试让 vagrant配置具有两个网络接口的VM:

  • eth0:与DHCP通信的NAT(虚拟盒)类型接口
  • eth1:仅限主机(virtualbox)的界面,带有静态 IP

在虚拟机上一切正常。我将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从盒子中获取配置后,我不想做任何事情。

由于

1 个答案:

答案 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 upvagrant reload --provision上修改MAC地址。

上面的大部分代码都是Vagrantfile中的默认代码,但是将此行添加到Virtualbox提供程序行: vb.customize ["modifyvm", :id, "--macaddress2", "080027df863a"]