getty.target starts before cloud-config is done

Bug #1861128 reported by Dimitri John Ledkov
14
This bug affects 2 people
Affects Status Importance Assigned to Milestone
cloud-init (Ubuntu)
High
Unassigned

Bug Description

On targets that are normally accessed via serial console (i.e. Subiquity, Ubuntu Classic/Core on RPi, etc) cloud-init often does not complete before getty spawns login shell.

This creates subpar user experience, as it appears as if one can login, and should be able to login using cloud-init provided credentials, but in practice cannot.

To mitigate this we have started to add the following override on some of our images:

See: http://launchpadlibrarian.net/461986467/livecd-rootfs_2.636_2.637.diff.gz

+ mkdir -p /etc/systemd/system/cloud-config.service.d
+ cat << EOF > /etc/systemd/system/cloud-config.service.d/getty-wait.conf
+# Wait for cloud-init to finish (creating users, etc.) before running getty
+
+[Unit]
+Before=getty.target
+EOF

Instead, cloud-config.service itself should declare `Before=getty.target`

Use case is monitoring RPi booting on serial console, and loging in once getty is up. With expectation that login succeeds.

Currently login fails, more cloud-config spew appears on screen, then one has to hit enter to realise that login is up, realize that one is now trying to login with empty username, hit enter again, and now type in username & password to finally login.

Revision history for this message
Ryan Harper (raharper) wrote :

While the user is created earlier, other modules such as:

locale, set-password, and ssh-import-id
should be run before getty.target for login to be successful.

So I think this is the right change for now; however, if the image also were to need to seed snaps, we're also then blocking login until after snaps have seeded as well.

Changed in cloud-init (Ubuntu):
importance: Undecided → High
status: New → Triaged
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers