FS#66035 - [cloud-init] add dependency on dhclient

Attached to Project: Community Packages
Opened by Jon Gjengset (Jonhoo) - Monday, 30 March 2020, 18:05 GMT
Last edited by Christian Rebischke (Shibumi) - Saturday, 04 April 2020, 12:00 GMT
Task Type Bug Report
Category Packages
Status Closed
Assigned To Christian Rebischke (Shibumi)
Architecture All
Severity Medium
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

Description:

cloud-init uses dhclient to get an initial network config during boot, so that it can reach network-based metadata services. The code is hard-wired to use dhclient for this process, as you can see here: https://github.com/canonical/cloud-init/blob/1bb1896ec900622e02c1ffb59db4d3f2df4a964d/cloudinit/net/dhcp.py#L153. That code fails to run without dhclient installed, which in turn results in network data sources (like OpenStack metadata) being unavailable.

It appears that there may be something more going on that prevents network metadata services from being available (specifically, even with `dhclient`, no static route to 169.254.169.254 is generated), but that I believe is a separate issue.

Package version: 19.3-1
This task depends upon

Closed by  Christian Rebischke (Shibumi)
Saturday, 04 April 2020, 12:00 GMT
Reason for closing:  Fixed
Additional comments about closing:  cloud-init-19.3-2
Comment by Jon Gjengset (Jonhoo) - Monday, 30 March 2020, 22:06 GMT
Specifically, without `dhclient` installed, `/var/log/cloud-init.log` contains:

2020-03-30 17:31:35,199 - dhcp.py[DEBUG]: Skip dhclient configuration: No dhclient command found.
2020-03-30 17:31:35,199 - util.py[DEBUG]:
Traceback (most recent call last):
File "/usr/lib/python3.8/site-packages/cloudinit/sources/DataSourceOpenStack.py", line 131, in _get_data
with EphemeralDHCPv4(self.fallback_interface):
File "/usr/lib/python3.8/site-packages/cloudinit/net/dhcp.py", line 57, in __enter__
return self.obtain_lease()
File "/usr/lib/python3.8/site-packages/cloudinit/net/dhcp.py", line 87, in obtain_lease
raise NoDHCPLeaseError()
cloudinit.net.dhcp.NoDHCPLeaseError

Loading...