Bug 1212151

Summary: Cloud Snapshot 20230605 images do not perform dhcp with cloud-init
Product: [openSUSE] openSUSE Tumbleweed Reporter: William Brown <william.brown>
Component: PatternsAssignee: Dominique Leuenberger <dimstar>
Status: NEW --- QA Contact: E-mail List <qa-bugs>
Severity: Major    
Priority: P5 - None CC: rjschwei
Version: Current   
Target Milestone: ---   
Hardware: Other   
OS: Other   
Whiteboard:
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---

Description William Brown 2023-06-09 01:19:23 UTC
openSUSE-Tumbleweed-Minimal-VM.x86_64-1.0.0-Cloud-Snapshot20230605.qcow2 does not attempt dhcp on machine boot. This changes the previous behaviour where dhcp/dhcp6 was requested. 

This appears to be a fault in cloud-init with the following message:

Jun 09 11:10:45 nettest cloud-init[662]: 2023-06-09 01:10:45,140 - util.py[WARNING]: failed stage init-local
Jun 09 11:10:45 nettest cloud-init[662]: failed run of stage init-local
Jun 09 11:10:45 nettest cloud-init[662]: ------------------------------------------------------------
Jun 09 11:10:45 nettest cloud-init[662]: Traceback (most recent call last):
Jun 09 11:10:45 nettest cloud-init[662]:   File "/usr/lib/python3.10/site-packages/cloudinit/util.py", line 1608, in chownbyname
Jun 09 11:10:45 nettest cloud-init[662]:     uid = pwd.getpwnam(user).pw_uid
Jun 09 11:10:45 nettest cloud-init[662]: KeyError: "getpwnam(): name not found: 'systemd-network'"
Jun 09 11:10:45 nettest cloud-init[662]: The above exception was the direct cause of the following exception:
Jun 09 11:10:45 nettest cloud-init[662]: Traceback (most recent call last):
Jun 09 11:10:45 nettest cloud-init[662]:   File "/usr/lib/python3.10/site-packages/cloudinit/cmd/main.py", line 767, in status_wrapper
Jun 09 11:10:45 nettest cloud-init[662]:     ret = functor(name, args)
Jun 09 11:10:45 nettest cloud-init[662]:   File "/usr/lib/python3.10/site-packages/cloudinit/cmd/main.py", line 433, in main_init
Jun 09 11:10:45 nettest cloud-init[662]:     init.apply_network_config(bring_up=bring_up_interfaces)
Jun 09 11:10:45 nettest cloud-init[662]:   File "/usr/lib/python3.10/site-packages/cloudinit/stages.py", line 939, in apply_network_config
Jun 09 11:10:45 nettest cloud-init[662]:     return self.distro.apply_network_config(
Jun 09 11:10:45 nettest cloud-init[662]:   File "/usr/lib/python3.10/site-packages/cloudinit/distros/__init__.py", line 278, in apply_network_config
Jun 09 11:10:45 nettest cloud-init[662]:     self._write_network_state(network_state, renderer)
Jun 09 11:10:45 nettest cloud-init[662]:   File "/usr/lib/python3.10/site-packages/cloudinit/distros/__init__.py", line 167, in _write_network_state
Jun 09 11:10:45 nettest cloud-init[662]:     renderer.render_network_state(network_state)
Jun 09 11:10:45 nettest cloud-init[662]:   File "/usr/lib/python3.10/site-packages/cloudinit/net/networkd.py", line 306, in render_network_state
Jun 09 11:10:45 nettest cloud-init[662]:     self.create_network_file(k, v, network_dir)
Jun 09 11:10:45 nettest cloud-init[662]:   File "/usr/lib/python3.10/site-packages/cloudinit/net/networkd.py", line 290, in create_network_file
Jun 09 11:10:45 nettest cloud-init[662]:     util.chownbyname(net_fn, net_fn_owner, net_fn_owner)
Jun 09 11:10:45 nettest cloud-init[662]:   File "/usr/lib/python3.10/site-packages/cloudinit/util.py", line 1612, in chownbyname
Jun 09 11:10:45 nettest cloud-init[662]:     raise OSError("Unknown user or group: %s" % (e)) from e
Jun 09 11:10:45 nettest cloud-init[662]: OSError: Unknown user or group: "getpwnam(): name not found: 'systemd-network'"


It appears that there are no network management packages installed:

nettest:/home/admin # rpm -qa | grep -i wick
nettest:/home/admin # rpm -qa | grep -i network
nettest:/home/admin #

Given the trend toward NetworkManager within SUSE, it is likely that NetworkManager should be the preferred backend here.
Comment 1 Robert Schweikert 2023-06-09 12:49:25 UTC
NetworkManager does not have an independent way to make a dhcp request, as such cloud-init still needs dhcp-client which should be installed as the package has

Requires:       dhcp-client

therefore the cloud-init code itself will work w.r.t. retrieving the initial configuration and making the dhcp request.

After this initial stage, where cloud-init makes a dhcp request it is expected that the system network stack starts. That used to be wicked and cloud-init used to have an unconditional

Requires:       wicked-service

directive. This was changed to

%if 0%{?suse_version} && 0%{?suse_version} <= 1500
Requires:       wicked-service
%endif

As such it is now the responsibility of those that set up the image build to include a network stack tool of their choice. Meaning most likely a

<package name="NetworkManager">

is missing in the image description for the TW image build.

I do not know who maintains the build descriptions or where they are maintained. As such I will set this to "Other" as the images are not built in the Cloud:Images project