Skip to content

Commit

Permalink
dracut/30ignition: Reboot the system after ignition if kargs.d exists
Browse files Browse the repository at this point in the history
As mentioned in https://github.com/coreos/ignition-dracut/issues/81#issuecomment-494888494,
this change adds a service that checks for the presence of `/etc/ostree/kargs.d` and redeploys
then reboots the system if it exists.

Closes: #81
  • Loading branch information
Allen Bai committed Jul 5, 2019
1 parent 8551bc7 commit a6c15a0
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 1 deletion.
13 changes: 13 additions & 0 deletions dracut/30ignition/ignition-apply-kargs.service
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
[Unit]
Description=Reboot after Ignition to apply kargs
Documentation=https://github.com/coreos/ignition-dracut
DefaultDependencies=false
Before=ignition-complete.target

# Make sure user configs have kargs files
After=ignition-files.service

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/sbin/ignition-apply-kargs
15 changes: 15 additions & 0 deletions dracut/30ignition/ignition-apply-kargs.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/bin/bash
set -euo pipefail

# Checks if kernel argument directory exists,
# then redeploy and reboot the system if it exists
reboot_if_kargs_dir_exists() {
local REFSPEC=( $(ostree refs --repo /ostree/repo) )
if [ -d /etc/ostree/kargs.d ]; then
/usr/bin/ostree admin deploy REFSPEC
exec systemctl reboot
echo "Nothing happended..."
fi
}

reboot_if_kargs_dir_exists
7 changes: 6 additions & 1 deletion dracut/30ignition/module-setup.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,18 @@ install() {
useradd \
usermod \
realpath \
touch
touch \
ostree

# This one is optional; https://src.fedoraproject.org/rpms/ignition/pull-request/9
inst_multiple -o mkfs.btrfs

inst_script "$moddir/ignition-setup.sh" \
"/usr/sbin/ignition-setup"

inst_script "$moddir/ignition-apply-kargs.sh" \
"/usr/sbin/ignition-apply-kargs"

# Distro packaging is expected to install the ignition binary into the
# module directory.
inst_simple "$moddir/ignition" \
Expand All @@ -53,6 +57,7 @@ install() {
install_ignition_unit ignition-mount.service
install_ignition_unit ignition-files.service
install_ignition_unit ignition-remount-sysroot.service
install_ignition_unit ignition-apply-kargs.service

# needed for openstack config drive support
inst_rules 60-cdrom_id.rules
Expand Down

0 comments on commit a6c15a0

Please sign in to comment.