Public bug reported: 1. Zesty amd64 2. cloud-init 0.7.9-47-gc81ea53-0ubuntu1
3. cloud-init boots with a bond network config and does not attempt to rename bond0 4. cloud-init init (net mode) fails when it attempts to rename a bond interface Running with the following network config (2 nics) config: - mac_address: bc:76:4e:06:96:b3 name: interface0 type: physical - mac_address: bc:76:4e:04:88:41 name: interface1 type: physical - bond_interfaces: - interface0 - interface1 name: bond0 params: bond_miimon: 100 bond_mode: 802.3ad bond_xmit_hash_policy: layer3+4 type: bond - name: bond0.108 subnets: - address: 65.61.151.38 netmask: 255.255.255.252 routes: - gateway: 65.61.151.37 netmask: 0.0.0.0 network: 0.0.0.0 type: static - address: 2001:4800:78ff:1b:be76:4eff:fe06:96b3 netmask: 'ffff:ffff:ffff:ffff::' routes: - gateway: 2001:4800:78ff:1b::1 netmask: '::' network: '::' type: static type: vlan vlan_id: '108' vlan_link: bond0 - name: bond0.208 subnets: - address: 10.184.225.122 netmask: 255.255.255.252 routes: - gateway: 10.184.225.121 netmask: 255.240.0.0 network: 10.176.0.0 - gateway: 10.184.225.121 netmask: 255.240.0.0 network: 10.208.0.0 type: static type: vlan vlan_id: '208' vlan_link: bond0 - address: 72.3.128.240 type: nameserver - address: 72.3.128.241 type: nameserver During cloud-init init --local; the network configuration is rendered and brought up bond0 is a virtual interface which uses the MAC from one of the slaves. In cloud-init init (net) mode, we check if the interfaces are named properly; When cloud-init collects the current_rename_info, it reads the MAC address of each device listed in /sys/class/net; this includes *virtual* devices, like bonds/bridges Then it looks up an interface name by MAC, however the bond and one of the interfaces have the same value which results in cloud-init attempting to rename bond0 The solution is to not collect MACs of virtual interfaces for rename-purpose since virtual devices do not ever get renamed; their name is defined by the config. diff --git a/cloudinit/net/__init__.py b/cloudinit/net/__init__.py index ea649cc..e2a50ad 100755 --- a/cloudinit/net/__init__.py +++ b/cloudinit/net/__init__.py @@ -14,6 +14,7 @@ from cloudinit import util LOG = logging.getLogger(__name__) SYS_CLASS_NET = "/sys/class/net/" +SYS_DEV_VIRT_NET = "/sys/devices/virtual/net/" DEFAULT_PRIMARY_INTERFACE = 'eth0' @@ -205,7 +206,11 @@ def _get_current_rename_info(check_downable=True): """Collect information necessary for rename_interfaces.""" names = get_devicelist() bymac = {} + virtual = os.listdir(SYS_DEV_VIRT_NET) for n in names: + # do not attempt to rename virtual interfaces + if n in virtual: + continue bymac[get_interface_mac(n)] = { 'name': n, 'up': is_up(n), 'downable': None} Log file of a failure: http://paste.ubuntu.com/24084999/ ** Affects: cloud-init (Ubuntu) Importance: Undecided Status: New -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1669860 Title: cloud-init attempts to rename bonds To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1669860/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs