Jay, The good news is that, with 0.130ubuntu3.11, initramfs-tools is now able to render a correct netplan YAML file:
# cat /run/netplan/ens3.yaml network: version: 2 renderer: networkd ethernets: ens3: set-name: ens3 dhcp4: true dhcp-identifier: mac critical: true nameservers: addresses: ["100.100.100.60", "100.100.100.160"] search: ["domainname.com"] However, net_failover 3-netdev interfaces are still showing incorrect names: # ip l 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: ens3: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000 link/ether 12:3f:bd:fd:bb:1e brd ff:ff:ff:ff:ff:ff 3: rename3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master ens3 state UP mode DEFAULT group default qlen 1000 link/ether 12:3f:bd:fd:bb:1e brd ff:ff:ff:ff:ff:ff 4: rename4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master ens3 state UP mode DEFAULT group default qlen 1000 link/ether 12:3f:bd:fd:bb:1e brd ff:ff:ff:ff:ff:ff while we should expect to see something like: # ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: ens3: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000 link/ether 12:3f:bd:fd:bb:1e brd ff:ff:ff:ff:ff:ff 3: ens3nsby: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master ens3 state UP mode DEFAULT group default qlen 1000 link/ether 12:3f:bd:fd:bb:1e brd ff:ff:ff:ff:ff:ff 4: ens4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master ens3 state UP mode DEFAULT group default qlen 1000 link/ether 12:3f:bd:fd:bb:1e brd ff:ff:ff:ff:ff:ff The culprit, as I ever indicated before, is that even with the seemingly correct netplan config provided, the netplan tool itself still doesn't recognize the 3-netdev failover interface, ending up with below udev rules renderred that runs conflict with the 3-netdev model: # cat /run/systemd/network/10-netplan-ens3.link [Match] MACAddress=12:3f:bd:fd:bb:1e [Link] Name=ens3 WakeOnLan=off # cat /run/udev/rules.d/99-netplan-ens3.rules SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="12:3f:bd:fd:bb:1e", NAME="ens3" I understand that the solution we agreed upon has to rely on cloud-init providing supplemental udev rules for naming the ens3nsby (failover standby) and the ens4 (failover primary) interface. But, I don't see how the resulted 99-netplan-ens3.rules would work, given that all the 3 netdevs share a same MAC address, and there's no other udev attribute to differentiate? What's in your mind that needs to be fixed next, netplan or udevd? Thanks, -Siwei -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to systemd in Ubuntu. https://bugs.launchpad.net/bugs/1820929 Title: netplan should consider adding more udev attribute for exact matching of failover 3-netdev interfaces Status in netplan: Triaged Status in initramfs-tools package in Ubuntu: New Status in netplan.io package in Ubuntu: Triaged Status in systemd package in Ubuntu: Incomplete Status in initramfs-tools source package in Bionic: Fix Released Status in netplan.io source package in Bionic: New Status in systemd source package in Bionic: New Bug description: [Impact] * At present, virtual machines utilizing net_failover network interface configurations are incorrectly configured due to the reliance on the MAC address to identify specific network interfaces. When net_failover is utilized, multiple interfaces will bear the same MAC address (the net_failover master itself, as well as the interfaces subordinate to it), rendering the MAC address ineffective for unique identification of the interface. This results in incorrect naming of network interfaces from the "set-name" directive in the netplan configuration. * The solution here is to use the interface name instead of the MAC address when the interface is a net_failover master device. Logic is added on initramfs-tools to check the device type and virtio flags to apply this change only to net_failover master devices. [Test Case] * The change can be tested by configuring a virtual machine with a virtio_net network device with the "failover=on" option to the "-device" option to qemu, e.g., -device virtio-net- pci,netdev=hostnet0,id=net0,bus=pci.0,addr=0x3,mac=00:00:17:00:18:04,failover=on * This will set the virtio device "standby" feature bit (bit 62, counting from 0). This requires a version of qemu with support for this feature. * When so configured, the netplan configuration generated by initramfs will not contain a "macaddress:" match directive for the network interface in question. [Regression Potential] * Erroneous identification of a network interface as a net_failover master device could lead to omission of a macaddress directive, causing interfaces to be incorrectly named. To manage notifications about this bug go to: https://bugs.launchpad.net/netplan/+bug/1820929/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : touch-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp