10 votes

Interfaces réseau de repli préférées avec Vagrant ?

Mes boîtes Vagrant utilisent un réseau public afin de pouvoir se faire connaître via zeroconf/Bonjour. Le site Vagrantfile définit explicitement l'interface réseau pontée :

  config.vm.network :public_network, :bridge => 'en2: USB Ethernet'

La plupart du temps, tout fonctionne, mais si je suis connecté via un réseau différent et que l'interface spécifiée n'existe pas, vagrant up me demandera de choisir parmi les interfaces réseau disponibles :

[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?

Existe-t-il un moyen d'indiquer à Vagrant de choisir dans une liste d'interfaces réseau préférées ? Ce que je veux, c'est une solution de repli si le réseau principal n'est pas disponible.

14voto

joemaller Points 2349

Voici une solution que j'ai trouvée et qui semble bien fonctionner jusqu'à présent :

En Vagrantfile ajoutez ce qui suit au début du fichier :

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]

Ensuite, à l'intérieur Vagrant.configure utiliser $network_interface pour spécifier le pont :

config.vm.network :public_network, :bridge => $network_interface

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X