In the latest distros (RHEL7, Ubuntu 16.04, others?) NICs are labelled persistently and not simply eth0-x by order of nic detected.
This poses a problem because we rely on the management interface being a DHCP NIC and if a box image isn't sending out dhcp requests on the right nic, or not starting DHCP at all, we end up nowhere:
DEBUG wait_till_up: Searching for IP for MAC address: 52:54:00:d7:9c:ac
INFO interface: info: Waiting for domain to get an IP address...
INFO interface: info: ==> default: Waiting for domain to get an IP address...
==> default: Waiting for domain to get an IP address...
INFO retryable: Retryable exception raised: #<Fog::Errors::TimeoutError: The specified wait_for timeout (2 seconds) was exceeded>
...
We also may have a situation where the a nic ends up named differently because libvirt attaches it to some different bus or slot (e.g. enp2s0f0 or enp1s0f0 and so on) depending on other devices in the VMs XML. This is a tricky case to handle since we need to know beforehand what the NIC is being called in order to do proper detection/configuration.
This can all be worked around by passing net.ifnames=0 biosdevname=0 on kernel commandline but we should investigate whether if we can fully support persistent naming schemes, provided that box images are configured for that (e.g. by setting DHCP on all possible interfaces) and vagrant supports it (seems OK for RHEL/Fedora but Ubuntu may be lacking support as of Vagrant 1.8.1 in configure_networks.rb)
So if any box image creators/mutators are reading this: use net.ifnames=0 biosdevname=0 in your grub commandlines until this is fixed.
In the latest distros (RHEL7, Ubuntu 16.04, others?) NICs are labelled persistently and not simply eth0-x by order of nic detected.
This poses a problem because we rely on the management interface being a DHCP NIC and if a box image isn't sending out dhcp requests on the right nic, or not starting DHCP at all, we end up nowhere:
We also may have a situation where the a nic ends up named differently because libvirt attaches it to some different bus or slot (e.g. enp2s0f0 or enp1s0f0 and so on) depending on other devices in the VMs XML. This is a tricky case to handle since we need to know beforehand what the NIC is being called in order to do proper detection/configuration.
This can all be worked around by passing
net.ifnames=0 biosdevname=0on kernel commandline but we should investigate whether if we can fully support persistent naming schemes, provided that box images are configured for that (e.g. by setting DHCP on all possible interfaces) and vagrant supports it (seems OK for RHEL/Fedora but Ubuntu may be lacking support as of Vagrant 1.8.1 inconfigure_networks.rb)So if any box image creators/mutators are reading this: use
net.ifnames=0 biosdevname=0in your grub commandlines until this is fixed.