cloud-init doesn't prefer new APT config format when old and new are provided
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
cloud-init |
Fix Released
|
High
|
Christian Ehrhardt | ||
cloud-init (Ubuntu) |
Fix Released
|
High
|
Christian Ehrhardt | ||
Xenial |
Fix Released
|
Medium
|
Unassigned |
Bug Description
==== Begin SRU Template ====
[Impact]
New apt configuration was enabled, but if the user provided both new
configuration format and old configuration format, then then cloud-init
would error.
The fixed behavior is to allow new and old and warn if they differ.
This allows a user to provide the same data for older releases and newer release.
[Test Case]
# Recreate failure (this would recreate on intermediate versions of
# cloud-init that were in trusty, but will not on xenial version.
# testing the working path is still valid though to ensure it functions.
# you will need to adjust both proxy settings to a local proxy.
$ cat >user-data <<EOF
#cloud-config
apt:
preserve_
primary:
- arches: [default]
uri: http://
proxy: http://
security:
- arches: [default]
uri: http://
sources:
launchpad_3: {source: 'deb http://
apt_proxy: http://
EOF
$ release=xenial
$ name=x1
$ lxc launch ubuntu-
$ while ! lxc exec "$name" -- [ -f /run/cloud-
$ lxc exec $name -- grep WARN /var/log/
## Now update container, clean and reboot to show first boot
$ lxc exec $name -- sh -c '
p=/
echo deb http://
apt-get update -q && apt-get -qy install cloud-init'
$ lxc exec $name -- sh -c '
cd /var/lib/cloud && for d in *; do [ "$d" = "seed" ] || rm -Rf "$d"; done
rm -Rf /var/log/
$ lxc exec $name reboot
$ lxc exec $name -- grep WARN /var/log/
# this should show us archive used.
$ lxc exec $name -- grep us.archive /etc/apt/
$ lxc exec $name -- cat /etc/apt/
[Regression Potential]
The apt feature itself (added under bug 1574113) could have regressions, as seen in bug 1621180.
This fix specifically relaxed cloud-init's behavior, making it more backwards compatible. It should not be too prone to regression itself.
==== End SRU Template ====
Trying to use the new configuration format of APT configuration while still providing the OLD format, causes cloud-init fails to configure APT.
cloud-init should be ignoring the old format if the new format is provided to ensure backwards compat.
This is a problem for MAAS provided that we cannot safely differentiate / determine what cloud-init version we are using for a specific release we are deploying, and as such, we still need to send the old config while still providing the new one because:
1. Yakkety uses newer cloud-init with new format above
2. Xenial, Trusty, Precise use older cloud-init that doesn't support new format.
And this is a problem because:
1. MAAS won't be able to use derived repositories in Xenial, Trusty, Precise until this gets backported into cloud-init.
2. Commission is done in Xenial, while deployment in Yakkety, but both may require the same config, but it is only supported in Yakkety's cloud-init.
3. Users may be using old images that may not contain new cloud-init at all, and even though the release already supports it, the image they are using doesn't and they have to continue to use the old format.
4. MAAS cannot differentiate/
Aug 25 09:44:17 node02 [CLOUDINIT] cc_apt_
Aug 25 09:51:58 node02 [CLOUDINIT] util.py[DEBUG]: Running module apt-configure (<module 'cloudinit.
description: | updated |
Changed in cloud-init (Ubuntu): | |
assignee: | nobody → ChristianEhrhardt (paelzer) |
Changed in cloud-init: | |
status: | New → Confirmed |
importance: | Undecided → High |
Changed in cloud-init (Ubuntu): | |
status: | New → Confirmed |
importance: | Undecided → High |
Changed in cloud-init: | |
assignee: | nobody → Christian Ehrhardt (der-schoenne) |
assignee: | Christian Ehrhardt (der-schoenne) → ChristianEhrhardt (paelzer) |
tags: | added: 4010 |
Changed in cloud-init (Ubuntu): | |
status: | Confirmed → In Progress |
Changed in cloud-init: | |
status: | Confirmed → Fix Committed |
Changed in cloud-init (Ubuntu Xenial): | |
status: | New → In Progress |
importance: | Undecided → Medium |
description: | updated |
description: | updated |
description: | updated |
description: | updated |
Since not all Ubuntu releases and not all users will have the latest, the new configuration format should be preferred instead of the old configuration format if both are provided, rather than failing.