40 lines
1.3 KiB
Bash
40 lines
1.3 KiB
Bash
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
copy_file_if_exists() {
|
|
src="${1}"; dst="${2}"
|
|
if [ -f "${src}" ]; then
|
|
echo "Copying ${src} to ${dst}"
|
|
cp "${src}" "${dst}"
|
|
else
|
|
echo "File ${src} does not exist.. Skipping copy"
|
|
fi
|
|
}
|
|
|
|
# systemd v256 now runs the initrd with ProtectSystem=yes, which makes /usr
|
|
# read-only. Just remount it rw until we have:
|
|
# https://github.com/coreos/ignition/issues/1891
|
|
if [ ! -w /usr ]; then
|
|
mount -o rw,remount /usr
|
|
fi
|
|
|
|
destination=/usr/lib/ignition
|
|
mkdir -p $destination
|
|
|
|
if command -v is-live-image >/dev/null && is-live-image; then
|
|
# Live image. If the user has supplied a config.ign via an appended
|
|
# initrd, put it in the right place.
|
|
copy_file_if_exists "/config.ign" "${destination}/user.ign"
|
|
else
|
|
# We will support a user embedded config in the boot partition
|
|
# under $bootmnt/ignition/config.ign. Note that we mount /boot
|
|
# but we don't unmount boot because we are run in a systemd unit
|
|
# with MountFlags=slave so it is unmounted for us.
|
|
bootmnt=/mnt/boot_partition
|
|
mkdir -p $bootmnt
|
|
if [ -e /dev/disk/by-label/ignition ]; then
|
|
mount /dev/disk/by-label/ignition $bootmnt
|
|
fi
|
|
copy_file_if_exists "${bootmnt}/ignition/config.ign" "${destination}/user.ign"
|
|
fi
|