如何在Vagrant中自动选择桥接网络接口?

ald*_*n.h 27 vagrant vagrantfile vagrant-windows

我应该在Vagrant文​​件中添加什么以防止询问(在vagrant up命令之后)

网络应该连接哪个接口?

Available bridged network interfaces:
1) Intel(R) 82579LM Gigabit Network Connection
2) VMware Virtual Ethernet Adapter for VMnet1
3) VMware Virtual Ethernet Adapter for VMnet8
Run Code Online (Sandbox Code Playgroud)

我想选择#1选项.当前我需要手动输入"1".请帮忙!

Fré*_*nri 34

在你的Vagrantfile中,你应该添加

config.vm.network "public_network", bridge: "Intel(R) 82579LM Gigabit Network Connection"
Run Code Online (Sandbox Code Playgroud)

然后它应该使vagrant高兴(实际上它更多的VirtualBox在这种情况下变得快乐)并为VM选择正确的网络适配器

  • 也适用于我。只需确保根据主机操作系统向 VBox 公开的内容传递网络接口的名称。 (3认同)

slm*_*slm 7

您实际上可以提供一个网桥列表,Virtualbox 将循环浏览它们,直到找到可以使用的网桥。将这些按您希望如何尝试的顺序排列:

例如在我的 OSX Macbook 上:

  config.vm.network "public_network", bridge: [
      "en0: Wi-Fi (AirPort)",    
      "en1: Wi-Fi (AirPort)",
  ]
Run Code Online (Sandbox Code Playgroud)

所以在你的情况下:

config.vm.network "public_network", bridge: [
    "Intel(R) 82579LM Gigabit Network Connection",
    "VMware Virtual Ethernet Adapter for VMnet1",
    "VMware Virtual Ethernet Adapter for VMnet8",
]
Run Code Online (Sandbox Code Playgroud)


小智 6

对于 Linux,我利用这个文件是一个 Ruby 脚本这一事实来检测默认路由并使用该接口的名称。这允许我们的整个团队按原样使用 Vagrantfile,而不必硬编码接口名称或不断更新列表。我想你可以在 Windows 或 Mac 上做类似的事情(猜测 Mac 可能实际上是一样的,因为它是 *​​nix)。

请注意,如果未检测到默认网络接口,系统仍会提示您选择一个。

# Grab the name of the default interface
$default_network_interface = `ip route | awk '/^default/ {printf "%s", $5; exit 0}'`
...
Vagrant.configure("2") do |config|
    # Specify the interface when creating the public network
    config.vm.network "public_network", bridge: "#$default_network_interface"
    ...
end
Run Code Online (Sandbox Code Playgroud)