From cfbb38d570a668de342fead1ff8aff7c275a2636 Mon Sep 17 00:00:00 2001 From: Christian Goll Date: Tue, 15 Aug 2023 17:31:15 -0600 Subject: [PATCH] Use ignition as a systemd service simple init.d ignition fails as systemd is needed to set up drivers, etc. Signed-off-by: Christian Goll --- .../systemd/system/ignition-ww4-disks.service | 32 +++++++++++++++++++ .../systemd/system/ignition-ww4-mount.service | 16 ++++++++++ .../ignition-ww4-disks.service | 1 + .../ignition-ww4-mount.service | 1 + overlays/wwinit/warewulf/ignition.json.ww | 1 + 5 files changed, 51 insertions(+) create mode 100644 overlays/wwinit/etc/systemd/system/ignition-ww4-disks.service create mode 100644 overlays/wwinit/etc/systemd/system/ignition-ww4-mount.service create mode 120000 overlays/wwinit/etc/systemd/system/multi-user.target.wants/ignition-ww4-disks.service create mode 120000 overlays/wwinit/etc/systemd/system/multi-user.target.wants/ignition-ww4-mount.service create mode 100644 overlays/wwinit/warewulf/ignition.json.ww diff --git a/overlays/wwinit/etc/systemd/system/ignition-ww4-disks.service b/overlays/wwinit/etc/systemd/system/ignition-ww4-disks.service new file mode 100644 index 00000000..ce377b79 --- /dev/null +++ b/overlays/wwinit/etc/systemd/system/ignition-ww4-disks.service @@ -0,0 +1,32 @@ +[Unit] +Description=Ignition warewulf (disks) +Documentation=https://hpcng.github.io/warewulf +ConditionPathExists=/warewulf/ignition.json +ConditionPathExists=/usr/lib/dracut/modules.d/30ignition/ignition +DefaultDependencies=false + +Before=ignition-ww4-mount.service + +# This stage runs between `basic.target` and `initrd-root-device.target`, +# see https://www.freedesktop.org/software/systemd/man/bootup.html +# Make sure to run before the file system checks, as sgdisk will trigger +# udev events, potentially resulting in race conditions due to disappearing +# devices. + +# Note that CL runs this before `local-fs-pre.target` to allow for configs that +# completely wipe the rootfs. Though we're not there yet. But we still run +# before `sysroot.mount` on principle. +Before=initrd-root-device.target +Before=sysroot.mount + +#OnFailure=emergency.target +#OnFailureJobMode=isolate + +# This stage requires udevd to detect disk partitioning changes. +Requires=systemd-udevd.service +After=systemd-udevd.service + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/lib/dracut/modules.d/30ignition/ignition --platform=metal --stage=disks --config-cache /warewulf/ignition.json diff --git a/overlays/wwinit/etc/systemd/system/ignition-ww4-mount.service b/overlays/wwinit/etc/systemd/system/ignition-ww4-mount.service new file mode 100644 index 00000000..35986da7 --- /dev/null +++ b/overlays/wwinit/etc/systemd/system/ignition-ww4-mount.service @@ -0,0 +1,16 @@ +[Unit] +Description=Ignition warewulf (mount) +Documentation=https://hpcng.github.io/warewulf +ConditionPathExists=/warewulf/ignition.json +ConditionPathExists=/usr/lib/dracut/modules.d/30ignition/ignition +DefaultDependencies=false +Before=ignition-complete.target + +After=ignition-ww4-disks.service + + +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/usr/lib/dracut/modules.d/30ignition/ignition --platform=metal --stage=mount --config-cache /warewulf/ignition.json +ExecStop=/usr/lib/dracut/modules.d/30ignition/ignition --platform=metal --stage=umount --config-cache /warewulf/ignition.json diff --git a/overlays/wwinit/etc/systemd/system/multi-user.target.wants/ignition-ww4-disks.service b/overlays/wwinit/etc/systemd/system/multi-user.target.wants/ignition-ww4-disks.service new file mode 120000 index 00000000..726d662c --- /dev/null +++ b/overlays/wwinit/etc/systemd/system/multi-user.target.wants/ignition-ww4-disks.service @@ -0,0 +1 @@ +/etc/systemd/system/ignition-ww4-disks.service \ No newline at end of file diff --git a/overlays/wwinit/etc/systemd/system/multi-user.target.wants/ignition-ww4-mount.service b/overlays/wwinit/etc/systemd/system/multi-user.target.wants/ignition-ww4-mount.service new file mode 120000 index 00000000..112c95c9 --- /dev/null +++ b/overlays/wwinit/etc/systemd/system/multi-user.target.wants/ignition-ww4-mount.service @@ -0,0 +1 @@ +/etc/systemd/system/ignition-ww4-mount.service \ No newline at end of file diff --git a/overlays/wwinit/warewulf/ignition.json.ww b/overlays/wwinit/warewulf/ignition.json.ww new file mode 100644 index 00000000..7b800e85 --- /dev/null +++ b/overlays/wwinit/warewulf/ignition.json.ww @@ -0,0 +1 @@ +{{ IgnitionJson }}