我试图理解为什么将网络选项放在Vagrantfile的提供程序块中并不起作用。例如,这似乎有效:
config.vm.define "mymachine" do |vbox_config|
vbox_config.vm.network :private_network, ip: "10.10.10.10"
vbox_config.vm.provider :virtualbox do |vb|
vb.ssh.forward_agent = true
end
end
但这不起作用(网络无法访问):
config.vm.define "mymachine" do |vbox_config|
vbox_config.vm.provider :virtualbox do |vb|
vb.ssh.forward_agent = true
vb.vm.network :private_network, ip: "10.10.10.10"
end
end
似乎我想将网络选项设置为特定于提供者并构建Vagrantfile,如后者。任何想法为什么它不起作用?
答案 0 :(得分:3)
如果要在提供程序块中设置非提供程序特定的配置,则必须使用不同的语法:
config.vm.define "mymachine" do |vbox_config|
vbox_config.vm.provider :virtualbox do |vb, override|
override.ssh.forward_agent = true
override.vm.network :private_network, ip: "10.10.10.10"
end
end
实际上,第一个参数是针对提供者特定的配置(例如vb.customize
),而第二个参数是针对覆盖的。有关详细信息,请参阅the documentation。