我已经预先配置了RHEL图像,我不知道它最初是如何设置的。 默认情况下,它在ip 192.168.50.50上配置了本地网络接口。我想要做的是从Vagrant脚本配置它的IP。
这似乎没有做任何事情:
config.vm.network "private_network", ip: "192.168.50.10"
这确实改变了ip:
sudo nmcli con mod bond0 ipv4.addresses 192.168.50.10/24
service network restart
但在那之后显然Vagrant没有自动检测到连接的ip,所以我需要添加:
config.ssh.host = LOCAL_IP
但问题出在这里:第一次,ip是默认值(.50.50)。所以我不能将config.ssh.host
设置为我想要的ip。如果我省略config.ssh.host
行,它会在第一次运行但不会运行,vagrant ssh
也会失败。
有没有办法在不编辑第一个和第二个vagrant up
之间的Vagrant脚本的情况下设置box ip?
修改:vagrant up --debug
命令的结果:http://pastebin.com/BTccc4NT
编辑:问题在于默认框中的Vagrant文件(在Windows上,它位于C:\Users\user\.vagrant.d\boxes\nameofbox\virtualbox\Vagrantfile
)本身就有这一行:
config.vm.network "private_network", ip: "192.168.50.50", auto_config: false
答案 0 :(得分:1)
DEBUG network: Normalized configuration: {:adapter_ip=>"192.168.50.1", :auto_config=>false, :ip=>"192.168.50.50", :mac=>nil, :name=>nil, :netmask=>"255.255.255.0", :nic_type=>nil, :type=>:static, :adapter=>2}
INFO network: Searching for matching hostonly network: 192.168.50.50
INFO subprocess: Starting process: ["C:/Program Files/Oracle/VirtualBox/VBoxManage.exe", "list", "hostonlyifs"]
......
DEBUG network: Normalized configuration: {:adapter_ip=>"192.168.50.1", :auto_config=>true, :ip=>"192.168.50.10", :mac=>nil, :name=>nil, :netmask=>"255.255.255.0", :nic_type=>nil, :type=>:static, :adapter=>3}
INFO network: Searching for matching hostonly network: 192.168.50.10
INFO subprocess: Starting process: ["C:/Program Files/Oracle/VirtualBox/VBoxManage.exe", "list", "hostonlyifs"]
在适配器2上你有192.168.50.50,在适配器3你有192.168.50.10
可能的原因是您使用的框具有特定的Vagrantfile
,它在静态地址上定义了一个网络。
我对Windows并不完全熟悉,但是在mac上,框定义在~/.vagrant/boxes/<yourbox>/<theprovider>/Vagrantfile
下(请注意,这不是项目中的Vagrantfile,这实际上是一个Vagrantfile,它将应用于由此构建的任何VM框);如果你看到它,请检查文件并删除网络配置
作为documented,Vagrantfile将从不同的位置合并
在每个级别,设置集将与先前的值合并。这究竟意味着什么取决于设置。对于大多数设置,这意味着较新的设置会覆盖旧设置。 但是,对于定义网络等内容,网络实际上是相互附加的。默认情况下,您应该假设设置将相互覆盖。如果行为不同,将在相关文档部分中注明。
所以默认情况下,Vagrant会创建额外的网络接口,而不会替换来自Vagrantfile框的那个。