Fix: don't try to remove /etc/defined (busy volume), use copy-based persistence instead
This commit is contained in:
parent
05079fb24a
commit
5495aec1f4
1 changed files with 19 additions and 9 deletions
|
|
@ -1,26 +1,36 @@
|
|||
#!/usr/bin/env sh
|
||||
set -e
|
||||
|
||||
CONFIG_DIR="/data/defined"
|
||||
PERSIST_DIR="/data/defined"
|
||||
SYSTEM_DIR="/etc/defined"
|
||||
|
||||
# Ensure persistent config directory exists
|
||||
mkdir -p "${CONFIG_DIR}"
|
||||
# Ensure persistent directory exists
|
||||
mkdir -p "${PERSIST_DIR}"
|
||||
|
||||
# Symlink /etc/defined -> /data/defined for persistence across restarts
|
||||
if [ ! -L "${SYSTEM_DIR}" ]; then
|
||||
rm -rf "${SYSTEM_DIR}"
|
||||
ln -s "${CONFIG_DIR}" "${SYSTEM_DIR}"
|
||||
# Restore persisted config if it exists
|
||||
if [ -f "${PERSIST_DIR}/config.yml" ]; then
|
||||
cp -a "${PERSIST_DIR}/." "${SYSTEM_DIR}/"
|
||||
echo "Restored persisted dnclient config."
|
||||
fi
|
||||
|
||||
# Read enrollment code from HA options
|
||||
ENROLLMENT_CODE="$(cat /data/options.json | sed -n 's/.*"enrollment_code" *: *"\([^"]*\)".*/\1/p')"
|
||||
|
||||
# Only set enrollment code if non-empty and host is not already enrolled
|
||||
if [ -n "${ENROLLMENT_CODE}" ] && [ ! -f "${CONFIG_DIR}/config.yml" ]; then
|
||||
if [ -n "${ENROLLMENT_CODE}" ] && [ ! -f "${SYSTEM_DIR}/config.yml" ]; then
|
||||
export DN_ENROLLMENT_CODE="${ENROLLMENT_CODE}"
|
||||
echo "Enrolling host with provided enrollment code..."
|
||||
fi
|
||||
|
||||
# Persist config on shutdown
|
||||
trap 'echo "Persisting config..."; cp -a "${SYSTEM_DIR}/." "${PERSIST_DIR}/"; exit 0' TERM INT
|
||||
|
||||
echo "Starting dnclient..."
|
||||
exec dnclient
|
||||
dnclient &
|
||||
DNCLIENT_PID=$!
|
||||
|
||||
# Wait a moment for enrollment to complete, then persist
|
||||
sleep 5
|
||||
cp -a "${SYSTEM_DIR}/." "${PERSIST_DIR}/" 2>/dev/null || true
|
||||
|
||||
wait ${DNCLIENT_PID}
|
||||
|
|
|
|||
Loading…
Reference in a new issue