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

How to automatically select bridged network interfaces in Vagrant?

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

Which interface should the network bridge to?

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

我想要 select #1 选项。 目前我需要手动输入“1”。 请帮忙!

在你的 Vagrantfile 中,你应该添加

config.vm.network "public_network", bridge: "Intel(R) 82579LM Gigabit Network Connection"

然后它应该让 vagrant 开心(实际上它更多的 VirtualBox 在这种情况下变得开心)和 select VM 的正确网络适配器

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

例如在我的 OSX Macbook 上:

  config.vm.network "public_network", bridge: [
      "en0: Wi-Fi (AirPort)",    
      "en1: Wi-Fi (AirPort)",
  ]

所以在你的情况下:

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

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

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

# Grab the name of the default interface
$default_network_interface = `ip route | awk '/^default/ {printf "%s", ; 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

我只是从 vagrant 配置文件中取出 config.vm.network :public_network。

vagrant 启动时没有问我关于连接到 Internet 的桥接接口的奇怪问题。