2013-07-18 25 views
10

我的流浪者箱子使用公共網絡,以便他們可以通過zeroconf/Bonjour做廣告。該Vagrantfile明確設置橋接網絡接口:使用Vagrant的首選回退網絡接口?

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從首選網絡接口列表中進行選擇?如果主網絡不可用,我想要的是優雅的後備。

回答

13

這是我想出了,似乎很好,到目前爲止可正常工作的解決方案:

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 
+0

酷,但對於剛剛在建立Vagrantfile你的〜/ .vagrant.d /指定全局的缺省值,而不是看着的g每次使用您發佈的紅寶石的可用選項? – kanzure

+0

非常感謝,這是一個很棒的提示。我在列表中添加了'en1:Wi-Fi(AirPort)',因爲在我的mac中是en1 –