Предпочитаемые резервные сетевые интерфейсы с Vagrant?
Мои бродячие боксы используют общественные сети, чтобы они могли рекламировать себя по zeroconf/Bonjour. Vagrantfile
явно устанавливает мостовой интерфейс сети:
config.vm.network :public_network, :bridge => 'en2: USB Ethernet'
В большинстве случаев все работает, но если я подключен через другую сеть и указанный интерфейс не существует, vagrant up
предложит мне выбрать из доступных сетевых интерфейсов:
[default] Specific bridge 'en2: USB Ethernet' not found. You may be asked to specify
which network to bridge to.
[default] Available bridged network interfaces:
1) en0: Wi-Fi (AirPort)
2) p2p0
What interface should the network bridge to?
Есть ли способ сказать Vagrant выбрать из списка предпочтительных сетевых интерфейсов? То, что я хочу, - это изящный откат, если основная сеть недоступна.
Ответы
Ответ 1
Вот решение, с которым я столкнулся, похоже, работает до сих пор:
В Vagrantfile
добавить в верхнюю часть файла следующее:
pref_interface = ['en2: USB Ethernet', 'en0: Wi-Fi (AirPort)']
vm_interfaces = %x( VBoxManage list bridgedifs | grep ^Name ).gsub(/Name:\s+/, '').split("\n")
pref_interface = pref_interface.map {|n| n if vm_interfaces.include?(n)}.compact
$network_interface = pref_interface[0]
Затем внутри Vagrant.configure
используйте $network_interface
, чтобы указать мост:
config.vm.network :public_network, :bridge => $network_interface