** 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

Reply via email to