Skip to content

Commit

Permalink
examples: add ignition-kargs binary example
Browse files Browse the repository at this point in the history
  • Loading branch information
Stephen Lowrie committed Mar 31, 2021
1 parent bda6b72 commit aa8839d
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 0 deletions.
45 changes: 45 additions & 0 deletions examples/ignition-kargs-helper
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
#!/bin/bash

set -euxo pipefail

# Mount /boot. Note that we mount /boot but we don't unmount it because we
# are run in a systemd unit with MountFlags=slave so it is unmounted for us.
bootmnt=/mnt/boot_partition
mkdir -p ${bootmnt}
bootdev=/dev/disk/by-label/boot
mount -o rw ${bootdev} ${bootmnt}
grubcfg="${bootmnt}/grub/grub.cfg"

kernelopts="$(grep kernelopts= <$grubcfg)"

while [[ $# -gt 0 ]]
do
key="$1"

case $key in
--should-exist)
arg="$2"
# don't repeat the arg
if [[ ! " ${kernelopts[*]} " =~ " ${arg} " ]]; then
kernelopts="$kernelopts $arg "
fi
shift 2
;;
--should-not-exist)
arg="$2"
kernelopts="$(echo "$kernelopts" | sed "s|$2||g")"
shift 2
;;
*)
echo "Unknown option"
exit 1
;;
esac
done

# only apply the changes & reboot if changes have been made
if [[ ! "$kernelopts" == "$(grep kernelopts= <$grubcfg)" ]]; then
awk "{sub(/kernelopts=.*/,\"$kernelopts\"); print}" $grubcfg > tmp && mv tmp $grubcfg

systemctl reboot
fi
22 changes: 22 additions & 0 deletions examples/ignition-kargs.service
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
[Unit]
Description=Ignition (kargs)
Documentation=https://github.com/coreos/ignition
ConditionPathExists=/etc/initrd-release
DefaultDependencies=false
Before=ignition-complete.target

# Stage order: setup -> fetch-offline [-> fetch] [-> kargs] -> disks -> mount -> files.
After=ignition-fetch.service
Before=ignition-disks.service

OnFailure=emergency.target
OnFailureJobMode=isolate

[Service]
Type=oneshot
RemainAfterExit=yes
EnvironmentFile=/run/ignition.env
ExecStart=/usr/bin/ignition --root=/sysroot --platform=${PLATFORM_ID} --stage=kargs
# MountFlags=slave is so the umount of /boot is guaranteed to happen.
# /boot will only be mounted for the lifetime of the unit.
MountFlags=slave

0 comments on commit aa8839d

Please sign in to comment.