** Description changed: [ Impact ] * MAAS systems make use of a number of debconf settings which are read by cloud-init-base.postinst in order to create configuration files in /etc/cloud/cloud.cfg.d to instruct cloud-init how to obtain configuration information from the MAAS provisioning server. In the presence of multi-line settings, cloud-init-base.postinst fails to complete package upgrade resulting in invalid apt configuration and manual intervention of APT unattended upgrades on MAAS-provisioned machines and VMs. This postinst failure breaks automatic upgrades on MAAS systems. - [ Test Plan ] * Assert upgrade path to -proposed doesn't create unexpected /etc/cloud/cloud.cfg.d files due to cloud-init-base.postinst processing of debconf values on standard cloud images in non-MAAS environment cat > setup_proposed.sh <<EOF #!/usr/bin/bash - mirror=http://archive.ubuntu.com/ubuntu - echo deb $mirror \$(lsb_release -sc)-proposed main | tee /etc/apt/sources.list.d/proposed.list + echo -e "Types: deb\nURIs: http://archive.ubuntu.com/ubuntu\nSuites: \$(lsb_release -sc)-proposed\nComponents: main universe restricted multiverse\nSigned-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg" | tee /etc/apt/sources.list.d/proposed.sources apt-get update -q; apt-get install -qy cloud-init; EOF lxc launch ubuntu-daily:questing test-2127022 lxc file push setup_proposed.sh test-21272022/ lxc exec test-2127022 bash # Peek at existing debconf settings debconf-show cloud-init > debconf.cloud-init.orig debconf-show cloud-init-base >> debconf.cloud-init.orig # Copy existing /etc/cloud/cloud.cfg.d to ensure no new files on upgrade cp -r /etc/cloud/cloud.cfg.d . bash /setup_proposed.sh # Upgrade and ensure exit 0 and no errors echo $? debconf-show cloud-init > debconf.cloud-init.new debconf-show cloud-init-base >> debconf.cloud-init.new # expect no new config files created by postinst diff -urN cloud.cfg.d /etc/cloud/cloud.cfg.d/ * Assert multi-line debconf settings used by MAAS are properly processed and written to /etc/cloud/cloud.cfg.d by cloud-init- base.postinst # provide multi-line value matching MAAS provisioning config debconf settings cat > selections <<EOF cloud-init cloud-init/local-cloud-config string manage_etc_hosts: true\nmanual_cache_clean: true EOF lxc launch ubuntu-daily:questing test-2127022 lxc file push selections test-2127022/ lxc exec test-2127022 -- debconf-set-selections /selections # install from -proposed lxc file push setup_proposed.sh test-21272022/ lxc exec test-2127022 bash # Peek at existing debconf settings debconf-show cloud-init > debconf.cloud-init.orig debconf-show cloud-init-base >> debconf.cloud-init.orig # Copy existing /etc/cloud/cloud.cfg.d to ensure no new files on upgrade cp -r /etc/cloud/cloud.cfg.d . bash /setup_proposed.sh # Upgrade and ensure exit 0 and no errors echo $? debconf-show cloud-init > debconf.cloud-init.new debconf-show cloud-init-base >> debconf.cloud-init.new # expect 1 new config file created by postinst 90_dpkg_cloud_init_local.cfg diff -urN cloud.cfg.d /etc/cloud/cloud.cfg.d/ [ Where problems could occur ] * Problems processing cloud-init or cloud-init-base debconf settings can show up across package upgrade path due to cloud-init-base.postinst use of db_get and db_set tooling to read and write debconfig configuration settings. Errors during package upgrade can result in non-zero exit codes from cloud-init-base.postinst which can result in errors affecting automatic upgrades which would force manual intervention to resolve or ignore such post install errors as seen in the original bug * Specific to MAAS debconf value processing, invalid handling of db_get results could result regressions by creating invalid cloud-config artifacts in /etc/cloud/cloud.cfg.d which would generate cloud-init schema warnings at boot resulting from exit 2 from such tools as `cloud-init status`. This type of regression has been seen in Resolute series https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/2131809 [ Other Info ] ===== Original description ===== Trying to upgrade a Power10 node from Ubuntu 25.04 Plucky to 25.10 Questing (do-release-upgrade -d) : ``` Found initrd image: /boot/initrd.img-6.14.0-33-generic Warning: os-prober will not be executed to detect other bootable partitions. Systems on them will not be added to the GRUB boot configuration. Check GRUB_DISABLE_OS_PROBER documentation entry. Adding boot menu entry for UEFI Firmware Settings ... done Processing triggers for ca-certificates (20250419) ... Updating certificates in /etc/ssl/certs... 0 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d... done. Processing triggers for initramfs-tools (0.150ubuntu3) ... update-initramfs: Generating /boot/initrd.img-6.17.0-5-generic Errors were encountered while processing: cloud-init-base cloud-init needrestart is being skipped since dpkg has failed packages have been installed but needrestart is suspended Exception during pm.DoInstall(): E:Sub-process /usr/bin/dpkg returned an error code (1) *** Send problem report to the developers? After the problem report has been sent, please fill out the form in the automatically opened web browser. What would you like to do? Your options are: S: Send report (345.0 KB) V: View report K: Keep report file for sending later or copying to somewhere else I: Cancel and ignore future crashes of this program version C: Cancel Please choose (S/V/K/I/C): ``` It finishes the upgrade, but requires a manual reboot. Then I can boot it into Questing.
** Description changed: [ Impact ] * MAAS systems make use of a number of debconf settings which are read by cloud-init-base.postinst in order to create configuration files in /etc/cloud/cloud.cfg.d to instruct cloud-init how to obtain configuration information from the MAAS provisioning server. In the presence of multi-line settings, cloud-init-base.postinst fails to complete package upgrade resulting in invalid apt configuration and manual intervention of APT unattended upgrades on MAAS-provisioned machines and VMs. This postinst failure breaks automatic upgrades on MAAS systems. [ Test Plan ] * Assert upgrade path to -proposed doesn't create unexpected /etc/cloud/cloud.cfg.d files due to cloud-init-base.postinst processing of debconf values on standard cloud images in non-MAAS environment cat > setup_proposed.sh <<EOF #!/usr/bin/bash echo -e "Types: deb\nURIs: http://archive.ubuntu.com/ubuntu\nSuites: \$(lsb_release -sc)-proposed\nComponents: main universe restricted multiverse\nSigned-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg" | tee /etc/apt/sources.list.d/proposed.sources apt-get update -q; apt-get install -qy cloud-init; EOF lxc launch ubuntu-daily:questing test-2127022 - lxc file push setup_proposed.sh test-21272022/ + lxc file push setup_proposed.sh test-2127022/ lxc exec test-2127022 bash # Peek at existing debconf settings debconf-show cloud-init > debconf.cloud-init.orig debconf-show cloud-init-base >> debconf.cloud-init.orig # Copy existing /etc/cloud/cloud.cfg.d to ensure no new files on upgrade cp -r /etc/cloud/cloud.cfg.d . bash /setup_proposed.sh # Upgrade and ensure exit 0 and no errors echo $? debconf-show cloud-init > debconf.cloud-init.new debconf-show cloud-init-base >> debconf.cloud-init.new # expect no new config files created by postinst diff -urN cloud.cfg.d /etc/cloud/cloud.cfg.d/ * Assert multi-line debconf settings used by MAAS are properly processed and written to /etc/cloud/cloud.cfg.d by cloud-init- base.postinst # provide multi-line value matching MAAS provisioning config debconf settings cat > selections <<EOF cloud-init cloud-init/local-cloud-config string manage_etc_hosts: true\nmanual_cache_clean: true EOF lxc launch ubuntu-daily:questing test-2127022 lxc file push selections test-2127022/ lxc exec test-2127022 -- debconf-set-selections /selections # install from -proposed lxc file push setup_proposed.sh test-21272022/ lxc exec test-2127022 bash # Peek at existing debconf settings debconf-show cloud-init > debconf.cloud-init.orig debconf-show cloud-init-base >> debconf.cloud-init.orig # Copy existing /etc/cloud/cloud.cfg.d to ensure no new files on upgrade cp -r /etc/cloud/cloud.cfg.d . bash /setup_proposed.sh # Upgrade and ensure exit 0 and no errors echo $? debconf-show cloud-init > debconf.cloud-init.new debconf-show cloud-init-base >> debconf.cloud-init.new # expect 1 new config file created by postinst 90_dpkg_cloud_init_local.cfg diff -urN cloud.cfg.d /etc/cloud/cloud.cfg.d/ [ Where problems could occur ] * Problems processing cloud-init or cloud-init-base debconf settings can show up across package upgrade path due to cloud-init-base.postinst use of db_get and db_set tooling to read and write debconfig configuration settings. Errors during package upgrade can result in non-zero exit codes from cloud-init-base.postinst which can result in errors affecting automatic upgrades which would force manual intervention to resolve or ignore such post install errors as seen in the original bug * Specific to MAAS debconf value processing, invalid handling of db_get results could result regressions by creating invalid cloud-config artifacts in /etc/cloud/cloud.cfg.d which would generate cloud-init schema warnings at boot resulting from exit 2 from such tools as `cloud-init status`. This type of regression has been seen in Resolute series https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/2131809 [ Other Info ] ===== Original description ===== Trying to upgrade a Power10 node from Ubuntu 25.04 Plucky to 25.10 Questing (do-release-upgrade -d) : ``` Found initrd image: /boot/initrd.img-6.14.0-33-generic Warning: os-prober will not be executed to detect other bootable partitions. Systems on them will not be added to the GRUB boot configuration. Check GRUB_DISABLE_OS_PROBER documentation entry. Adding boot menu entry for UEFI Firmware Settings ... done Processing triggers for ca-certificates (20250419) ... Updating certificates in /etc/ssl/certs... 0 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d... done. Processing triggers for initramfs-tools (0.150ubuntu3) ... update-initramfs: Generating /boot/initrd.img-6.17.0-5-generic Errors were encountered while processing: cloud-init-base cloud-init needrestart is being skipped since dpkg has failed packages have been installed but needrestart is suspended Exception during pm.DoInstall(): E:Sub-process /usr/bin/dpkg returned an error code (1) *** Send problem report to the developers? After the problem report has been sent, please fill out the form in the automatically opened web browser. What would you like to do? Your options are: S: Send report (345.0 KB) V: View report K: Keep report file for sending later or copying to somewhere else I: Cancel and ignore future crashes of this program version C: Cancel Please choose (S/V/K/I/C): ``` It finishes the upgrade, but requires a manual reboot. Then I can boot it into Questing. -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2127022 Title: upgrade from Plucky to Questing cloud-init-base 25.3~2g890873f5-0ubuntu2 failed to install/upgrade on MAAS To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu-power-systems/+bug/2127022/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
