From 4a90aaa173fde3e915c2862ee28c39a6b4100005 Mon Sep 17 00:00:00 2001 From: Sohan Kunkerkar Date: Mon, 21 Mar 2022 16:19:42 -0400 Subject: [PATCH] 05core/*: display Ignition warnings on the console Fixes https://github.com/coreos/fedora-coreos-tracker/issues/1125 This change displays all Ignition warnings on the console. Also, renamed the existing Ignition service to make it more generalized for handling status information about the Ignition run. --- .../lib/systemd/system-preset/40-coreos.preset | 4 ++-- .../system/coreos-check-ignition-config.service | 14 -------------- .../system/coreos-ignition-write-issue.service | 16 ++++++++++++++++ ...nition-config => coreos-ignition-write-issue} | 10 ++++++++++ 4 files changed, 28 insertions(+), 16 deletions(-) delete mode 100644 overlay.d/05core/usr/lib/systemd/system/coreos-check-ignition-config.service create mode 100644 overlay.d/05core/usr/lib/systemd/system/coreos-ignition-write-issue.service rename overlay.d/05core/usr/libexec/{coreos-check-ignition-config => coreos-ignition-write-issue} (82%) diff --git a/overlay.d/05core/usr/lib/systemd/system-preset/40-coreos.preset b/overlay.d/05core/usr/lib/systemd/system-preset/40-coreos.preset index 13963ef789..25c6f632c5 100644 --- a/overlay.d/05core/usr/lib/systemd/system-preset/40-coreos.preset +++ b/overlay.d/05core/usr/lib/systemd/system-preset/40-coreos.preset @@ -23,5 +23,5 @@ enable bootupd.socket # Ideally it should have been added as part of base Fedora - but since it was arch specific, it was not added: https://bugzilla.redhat.com/show_bug.cgi?id=1433859 enable rtas_errd.service enable clevis-luks-askpass.path -# Provide information if no ignition is provided -enable coreos-check-ignition-config.service +# Provide status information about the Ignition run +enable coreos-ignition-status-info.service diff --git a/overlay.d/05core/usr/lib/systemd/system/coreos-check-ignition-config.service b/overlay.d/05core/usr/lib/systemd/system/coreos-check-ignition-config.service deleted file mode 100644 index 569de69eee..0000000000 --- a/overlay.d/05core/usr/lib/systemd/system/coreos-check-ignition-config.service +++ /dev/null @@ -1,14 +0,0 @@ -# This service is used for printing a message if -# no Ignition config is provided. -[Unit] -Description=Check if Ignition config is provided -Before=systemd-user-sessions.service -ConditionPathExists=/etc/.ignition-result.json - -[Service] -Type=oneshot -ExecStart=/usr/libexec/coreos-check-ignition-config -RemainAfterExit=yes - -[Install] -WantedBy=multi-user.target diff --git a/overlay.d/05core/usr/lib/systemd/system/coreos-ignition-write-issue.service b/overlay.d/05core/usr/lib/systemd/system/coreos-ignition-write-issue.service new file mode 100644 index 0000000000..e6e3e817fe --- /dev/null +++ b/overlay.d/05core/usr/lib/systemd/system/coreos-ignition-write-issue.service @@ -0,0 +1,16 @@ +# This service writes issue files describing status +# information about the Ignition run, which includes +# Ignition warnings and information if no Ignition +# config is provided. +[Unit] +Description=Create Ignition Status Issue Files +Before=systemd-user-sessions.service +ConditionPathExists=/etc/.ignition-result.json + +[Service] +Type=oneshot +ExecStart=/usr/libexec/coreos-ignition-write-issue +RemainAfterExit=yes + +[Install] +WantedBy=multi-user.target diff --git a/overlay.d/05core/usr/libexec/coreos-check-ignition-config b/overlay.d/05core/usr/libexec/coreos-ignition-write-issue similarity index 82% rename from overlay.d/05core/usr/libexec/coreos-check-ignition-config rename to overlay.d/05core/usr/libexec/coreos-ignition-write-issue index 794efe974e..080b9c491b 100755 --- a/overlay.d/05core/usr/libexec/coreos-check-ignition-config +++ b/overlay.d/05core/usr/libexec/coreos-ignition-write-issue @@ -42,6 +42,16 @@ else >> /run/issue.d/30_coreos_ignition_provisioning.issue fi +# This is for displaying Ignition warnings on the console +# TODO: Find a way to query journald logs before the system switches to real root +journalctl -t ignition -o json-pretty -b 0 -p warning | jq -r '.MESSAGE' | while read +line; do + if [ "$line" != "" ]; then + echo "Ignition: $line" >> /run/issue.d/30_coreos_ignition_warnings.issue + fi + done + # Our makeshift way of getting /run/issue.d semantics. See: # https://github.com/coreos/console-login-helper-messages/blob/e06fc88ae8fbcc3a422bc8c686f70c15aebb9d9a/usr/lib/console-login-helper-messages/issue.defs#L8-L17 ln -sf /run/issue.d/30_coreos_ignition_provisioning.issue /etc/issue.d/ +ln -sf /run/issue.d/30_coreos_ignition_warnings.issue /etc/issue.d/