From a7e1233614c28d7798f6bd92262f263a9c870893 Mon Sep 17 00:00:00 2001 From: Luca BRUNO Date: Fri, 11 Dec 2020 12:36:34 +0000 Subject: [PATCH] core/dracut/ignition-ostree: add ignition-ostree-sysusers service This introduces a new `ignition-ostree-sysusers.service`, which takes care of poulating users and groups on the target sysroot before the Ignition `files` stage. --- .../ignition-ostree-sysusers | 19 +++++++++++++++++++ .../ignition-ostree-sysusers.service | 16 ++++++++++++++++ .../40ignition-ostree/module-setup.sh | 4 ++++ 3 files changed, 39 insertions(+) create mode 100755 overlay.d/05core/usr/lib/dracut/modules.d/40ignition-ostree/ignition-ostree-sysusers create mode 100644 overlay.d/05core/usr/lib/dracut/modules.d/40ignition-ostree/ignition-ostree-sysusers.service diff --git a/overlay.d/05core/usr/lib/dracut/modules.d/40ignition-ostree/ignition-ostree-sysusers b/overlay.d/05core/usr/lib/dracut/modules.d/40ignition-ostree/ignition-ostree-sysusers new file mode 100755 index 0000000000..172b5a8e43 --- /dev/null +++ b/overlay.d/05core/usr/lib/dracut/modules.d/40ignition-ostree/ignition-ostree-sysusers @@ -0,0 +1,19 @@ +#!/usr/bin/env bash +# Run systemd-sysusers for the target OSTree sysroot. + +set -euo pipefail + +main() { + coreos-sysroot-bwrap systemd-sysusers + coreos-relabel \ + /etc/group \ + /etc/group- \ + /etc/gshadow \ + /etc/gshadow- \ + /etc/passwd \ + /etc/passwd- \ + /etc/shadow \ + /etc/shadow- +} + +main "$@" diff --git a/overlay.d/05core/usr/lib/dracut/modules.d/40ignition-ostree/ignition-ostree-sysusers.service b/overlay.d/05core/usr/lib/dracut/modules.d/40ignition-ostree/ignition-ostree-sysusers.service new file mode 100644 index 0000000000..85c8e1b1ba --- /dev/null +++ b/overlay.d/05core/usr/lib/dracut/modules.d/40ignition-ostree/ignition-ostree-sysusers.service @@ -0,0 +1,16 @@ +[Unit] +Description=Populate OSTree sysusers +DefaultDependencies=false +ConditionKernelCommandLine=|ostree + +# Need to do this with all mount points active +After=ignition-mount.service + +# But *before* we start dumping files in there +Before=ignition-files.service +Before=ignition-ostree-populate-var.service + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/sbin/ignition-ostree-sysusers diff --git a/overlay.d/05core/usr/lib/dracut/modules.d/40ignition-ostree/module-setup.sh b/overlay.d/05core/usr/lib/dracut/modules.d/40ignition-ostree/module-setup.sh index c50358cbd4..89eaed86d1 100755 --- a/overlay.d/05core/usr/lib/dracut/modules.d/40ignition-ostree/module-setup.sh +++ b/overlay.d/05core/usr/lib/dracut/modules.d/40ignition-ostree/module-setup.sh @@ -60,6 +60,10 @@ install() { sgdisk \ find + inst_script "$moddir/ignition-ostree-sysusers" \ + "/usr/sbin/ignition-ostree-sysusers" + install_ignition_unit ignition-ostree-sysusers.service + for x in mount populate; do install_ignition_unit ignition-ostree-${x}-var.service inst_script "$moddir/ignition-ostree-${x}-var.sh" "/usr/sbin/ignition-ostree-${x}-var"