Come si reimposta /etc/networking/interfacesquando si utilizzano "nomi di interfaccia di rete prevedibili"?
Le versioni di Ubuntu precedenti alla 15.10 utilizzano nomi di schede di rete come:
eth0eth1eth2
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.rulesfarebbe 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.
ens3ens32ens192
Durante la migrazione di un VM, la rete non si avvia poiché fa /etc/network/interfacesancora 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/interfacese mi ip addressriferisco ancoraens32