Come si reimposta /etc/networking/interfaces
quando si utilizzano "nomi di interfaccia di rete prevedibili"?
Le versioni di Ubuntu precedenti alla 15.10 utilizzano nomi di schede di rete come:
eth0
eth1
eth2
La sostituzione di una scheda di rete o lo spostamento di un VM in un nuovo hypervisor causerebbe a Linux l'incremento del numero di interfaccia. L'eliminazione /etc/udev/rules.d/70-peristent-net.rules
farebbe riutilizzare Linux eth0
.
Ubuntu 15.10 e versioni successive utilizzano " Nomi di interfaccia di rete prevedibili ". Il nome della scheda di rete deriva dall'indirizzo mac.
ens3
ens32
ens192
Durante la migrazione di un VM, la rete non si avvia poiché fa /etc/network/interfaces
ancora riferimento alla vecchia scheda di rete inesistente.
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto ens32
iface ens32 inet dhcp
pre-up sleep 2
Qual è il modo migliore per ripristinare il file / etc / network / interfaces?
Ho bisogno di fare questa azione prima di spegnere la VM e migrare verso un nuovo hypervisor poiché sto usando packer per creare immagini dorate automatizzate, basate sulle immagini dorate dello chef / bento .
Ho scoperto che l'eliminazione di / etc / network / interfaces non funziona poiché il file non viene rigenerato automaticamente all'avvio successivo dopo la migrazione.
Ho provato a modificare il mio file grub per tornare alla convenzione di denominazione 'eth0'. Mentre / etc / network / interfaces fa riferimento al vecchio nome (eth0), la VM non otterrà un IP e qualsiasi riavvio farà sì che la VM utilizzi la nuova convenzione di denominazione. Inoltre ho scoperto che systemd avrà sempre la precedenza a meno che non possa garantire che biosdevname=0
rimanga permanentemente nella configurazione di grub . Non sono sicuro di come applicare questo in modo permanente
GRUB_CMDLINE_LINUX_DEFAULT="net.ifnames=0 bios.devname=0"
Se possibile, preferirei non utilizzare cloud init o utilizzare qualsiasi script post avvio poiché preferirei mantenere le immagini dorate il più pulite possibile.
Sicuramente questo è un problema che i provider cloud (Azure, AWS, RackSpace, Openstack) hanno già risolto quando importano vms. Non posso essere il primo a provare a migrare un VM usando nomi di interfaccia di rete prevedibili.
Ho provato a eseguire questi comandi prima di spegnere e migrare la VM
apt-get remove biosdevname -y;
ln -s /dev/null /etc/systemd/network/99-default.link;
Trovo che quando migra la VM, quello /etc/network/interfaces
e mi ip address
riferisco ancoraens32