** Description changed: + [Impact] + + When creating a bare metal instance on Oracle Cloud (which are backed by an iscsi disk), the IP address is configured on an interface (enp45s0f0) on boot, but cloud-init is generating a /etc/netplan/50-cloud-init.yaml with an entry to configure enp12s0f0 using dhcp. As a result, enp12s0f0 will send a DHCPREQUEST and wait for a reply until it times out, delaying the boot process, as there's no dhcp server serving this interface. + This is caused by a missing /run/initramfs/open-iscsi.interface that should point to the enp45s0f0 interface + + + [Fix] + + There is a script from the open-iscsi package that checks if there are + no iscsi disks present and if there are no disks removes the + /run/initramfs/open-iscsi.interface file that stores the interface where + the iscsi disk is present. + + This script originally runs along the local-top initrd scripts but uses + the /dev/disk/by-path/ path to find if there are iscsi discs present. + This path does not yet exists when the local-top scripts are run so the + file is always removed. + + This was fixed in Focal by moving the script to run along the local- + bottom scripts. When these scripts run the /dev/disk/by-path/ path + exists. + + + [Test Plan] + + This can be reproduced by instancing any bare metal instance on Oracle + Cloud (all are backed by an iscsi disk) and checking if the + /run/initramfs/open-iscsi.interface file is present. + + + [Where problems could occur] + + There should be no problems as the script runs anyway but later into the + boot process. + + If the script fails to run it could leave the open-iscsi.interface file + present with no iscsi drives but that should cause no issues besides + delaying the boot process. + + + [Original description] + Currently focal images on Oracle are failing to get data from the Oracle DS with this traceback: Traceback (most recent call last): - File "/usr/lib/python3/dist-packages/cloudinit/sources/__init__.py", line 772, in find_source - if s.update_metadata([EventType.BOOT_NEW_INSTANCE]): - File "/usr/lib/python3/dist-packages/cloudinit/sources/__init__.py", line 661, in update_metadata - result = self.get_data() - File "/usr/lib/python3/dist-packages/cloudinit/sources/__init__.py", line 279, in get_data - return_value = self._get_data() - File "/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceOracle.py", line 195, in _get_data - with dhcp.EphemeralDHCPv4(net.find_fallback_nic()): - File "/usr/lib/python3/dist-packages/cloudinit/net/dhcp.py", line 57, in __enter__ - return self.obtain_lease() - File "/usr/lib/python3/dist-packages/cloudinit/net/dhcp.py", line 109, in obtain_lease - ephipv4.__enter__() - File "/usr/lib/python3/dist-packages/cloudinit/net/__init__.py", line 1019, in __enter__ - self._bringup_static_routes() - File "/usr/lib/python3/dist-packages/cloudinit/net/__init__.py", line 1071, in _bringup_static_routes - util.subp( - File "/usr/lib/python3/dist-packages/cloudinit/util.py", line 2084, in subp - raise ProcessExecutionError(stdout=out, stderr=err, + File "/usr/lib/python3/dist-packages/cloudinit/sources/__init__.py", line 772, in find_source + if s.update_metadata([EventType.BOOT_NEW_INSTANCE]): + File "/usr/lib/python3/dist-packages/cloudinit/sources/__init__.py", line 661, in update_metadata + result = self.get_data() + File "/usr/lib/python3/dist-packages/cloudinit/sources/__init__.py", line 279, in get_data + return_value = self._get_data() + File "/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceOracle.py", line 195, in _get_data + with dhcp.EphemeralDHCPv4(net.find_fallback_nic()): + File "/usr/lib/python3/dist-packages/cloudinit/net/dhcp.py", line 57, in __enter__ + return self.obtain_lease() + File "/usr/lib/python3/dist-packages/cloudinit/net/dhcp.py", line 109, in obtain_lease + ephipv4.__enter__() + File "/usr/lib/python3/dist-packages/cloudinit/net/__init__.py", line 1019, in __enter__ + self._bringup_static_routes() + File "/usr/lib/python3/dist-packages/cloudinit/net/__init__.py", line 1071, in _bringup_static_routes + util.subp( + File "/usr/lib/python3/dist-packages/cloudinit/util.py", line 2084, in subp + raise ProcessExecutionError(stdout=out, stderr=err, cloudinit.util.ProcessExecutionError: Unexpected error while running command. Command: ['ip', '-4', 'route', 'add', '0.0.0.0/0', 'via', '10.0.0.1', 'dev', 'ens3'] Exit code: 2 Reason: - - Stdout: + Stdout: Stderr: RTNETLINK answers: File exists - - In https://github.com/canonical/cloud-init/blob/46cf23c28812d3e3ba0c570defd9a05628af5556/cloudinit/sources/DataSourceOracle.py#L194-L198, we can see that this path is only taken if _is_iscsi_root returns False. + In https://github.com/canonical/cloud- + init/blob/46cf23c28812d3e3ba0c570defd9a05628af5556/cloudinit/sources/DataSourceOracle.py#L194-L198, + we can see that this path is only taken if _is_iscsi_root returns False.
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1872813 Title: cloud-init fails to detect iSCSI root on focal Oracle instances To manage notifications about this bug go to: https://bugs.launchpad.net/cloud-init/+bug/1872813/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs