> Where in this diff[1] is the change only impacting "Hetzner"?

Strictly, it's not, but that's the only datasource we know of that is
affected.

In early boot, before networking has started, cloud-init usually sets up
an Ephemeral DHCP connection so that it connect to the IMDS and then
tears that connection down. This is can be quite expensive time-wise,
and there are a few datasources that already have network configured by
the time cloud-init comes up. Because of this, a few datasources use a
"connectivity url" to check if a datasource already has network
connectivity to the IMDS so that the ephemeral DHCP setup can be
skipped. If the connectivity check fails, that's no problem because it
indicates to us that we need to set up ephemeral DHCP.

When we need to retrieve data from a remote URL, cloud-init has two
separate helper functions with slightly different usage semantics. In
24.4, the helper used to do the connectivity check was changed in order
to accommodate multiple connectivity urls being used by Oracle. The
helper that we switched to would emit a log at ERROR level if the
request failed. Ultimately, this is incorrect because there are valid
reasons for a GET request to fail (as mentioned above).

This change impacted Hetzer because they DO at times expect their
connectivity check to fail. The error log resulted in the cloud-init
process returning 2 where it used to return 0 before.

The fix was to stop logging the error so deep in the call stack, and
instead have each individual datasource log error if they cannot
retrieve IMDS data (most already do), as that is the true error we need
to be concerned with.

We have 3 datasources that use the connectivity url: Oracle, NWCS, and
Hetzner. I'm 99.9% sure this issue can't affect Oracle, because their
network is always brought up in the initramfs, so the connectivity check
should never fail there. It is possible that NWCS is also affected, but
no problems have been reported there.

So what you're seeing in that diff is the removal of the error message
from the helper function that handles the GET responses, and the
addition of error messages in datasources that didn't previously report
them, but instead relied on the error from that helper function.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2094857

Title:
  cloud-init exits 2 if IMDS connectivity fails

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/2094857/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to