** Description changed: - Since virt-manager 5.1.0, cloud-init's user-data gets ignored when - passing the following option: + [ Impact ] - --cloud-init user-data=xxx + * virt-install's `--cloud-init user-data=...` option is silently ignored + when invoked without an accompanying `meta-data=...` argument. This is a + regression introduced upstream in virt-manager 5.1.0 by the cloud-init + config-file refactor (commit 5b2d0997a1d2d213b17c227169da64e2fa7d09a6). + + * This affects any user relying on the common, documented invocation + `virt-install --cloud-init user-data=<file>` without also specifying + `meta-data=`, and results in newly provisioned guests silently not + receiving the cloud-init configuration. + + * Fixed upstream in commit ea71cf9a8a4161ce6e19eacf5f0d86d40ab74f23. + + [ Test Plan ] + + * On the affected release, install/upgrade to the virt-manager package + containing the fix. + + * Prepare a non-empty `user-data` file, e.g.: + #cloud-config + write_files: + - path: /tmp/sru-test + content: hello + + * Run virt-install without a meta-data argument, e.g.: + virt-install --connect qemu:///system --name sru-test \ + --memory 1024 --disk size=5 --import \ + --os-variant <variant> \ + --cloud-init user-data=/path/to/user-data \ + --noautoconsole + + * Inspect the generated cloud-init config ISO (path logged by virt-install, + or find it under the libvirt image pool) and confirm it now contains + BOTH a `user-data` and a `meta-data` file: + isoinfo -i <cloudinit>.iso -l + + * Boot the guest and confirm cloud-init applied the user-data, e.g. check + for /tmp/sru-test inside the guest, or `cloud-init status --long` shows + no "NoCloud" datasource detection failure. + + * Before the fix: the meta-data file is absent from the ISO and the + user-data is never applied to the guest. After the fix: both files are + present and the user-data is applied as expected. + + [ Where problems could occur ] + + * The fix changes a single predicate in `_CloudInitConfig._create_file()` + from `if not content:` to `if content is None:`. This only changes + behaviour for the previously-mishandled case where the generated content + is an empty string (empty meta-data) — that case now correctly produces + a (empty) file instead of being skipped. All other cases (user-data, + vendor-data, network-config, or meta-data with actual content) continue + to return non-empty strings and are unaffected by this change. + + * Low regression risk: the change cannot affect guests that were already + working (non-empty content paths are untouched) + + [ Other Info ] + + * Upstream fix: https://github.com/virt-manager/virt-manager/commit/ea71cf9a8a4161ce6e19eacf5f0d86d40ab74f23 + * Upstream issue: https://github.com/virt-manager/virt-manager/issues/975 + * Regression introduced by: https://github.com/virt-manager/virt-manager/commit/5b2d0997a1d2d213b17c227169da64e2fa7d09a6 (virt-manager 5.1.0) + + ---- + Since virt-manager 5.1.0, cloud-init's user-data gets ignored when passing the following option: + + --cloud-init user-data=xxx without specifying a meta-data=xxx argument. There is an upstream bug report: https://github.com/virt-manager/virt- manager/issues/975 with a fix that we can backport.
-- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2171406 Title: virt-install --cloud-init user-data=... ignored when no meta-data is specified To manage notifications about this bug go to: https://bugs.launchpad.net/virt-manager/+bug/2171406/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
