为什么在提供程序块中配置时不设置流浪专用网络?

时间:2014-03-12 16:18:30

标签: vagrant vagrantfile

我试图理解为什么将网络选项放在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,如后者。任何想法为什么它不起作用?

1 个答案:

答案 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