fix(updater): align bootstrap layout with updater; log update phases
The bootstrap was installing into /opt/decnet/.venv with an editable
`pip install -e .`, and /usr/local/bin/decnet pointed there. The updater
writes releases to /opt/decnet/releases/active/ with a shared venv at
/opt/decnet/venv — a parallel tree nothing on the box actually runs.
Result: updates appeared to succeed (release dir rotated, SHA changed)
but systemd kept executing the untouched bootstrap code.
Changes:
- Bootstrap now installs directly into /opt/decnet/releases/active
with the shared venv at /opt/decnet/venv and /opt/decnet/current
symlinked. Same layout the updater rotates in and out of.
- /usr/local/bin/decnet -> /opt/decnet/venv/bin/decnet.
- run_update / run_update_self heal /usr/local/bin/decnet on every
push so already-enrolled hosts recover on the next update instead
of needing a re-enroll.
- run_update / run_update_self now log each phase (receive, extract,
pip install, rotate, restart, probe) so the updater log actually
shows what happened.
This commit is contained in:
@@ -16,14 +16,19 @@ echo "[DECNET] fetching payload..."
|
||||
curl -fsSL "{{ tarball_url }}" | tar -xz -C "$WORK"
|
||||
|
||||
INSTALL_DIR=/opt/decnet
|
||||
mkdir -p "$INSTALL_DIR"
|
||||
cp -a "$WORK/." "$INSTALL_DIR/"
|
||||
cd "$INSTALL_DIR"
|
||||
RELEASE_DIR="$INSTALL_DIR/releases/active"
|
||||
VENV_DIR="$INSTALL_DIR/venv"
|
||||
# Mirror the updater's layout from day one so `decnet updater` can rotate
|
||||
# releases/active in-place and the shared venv is the thing on PATH.
|
||||
mkdir -p "$RELEASE_DIR"
|
||||
cp -a "$WORK/." "$RELEASE_DIR/"
|
||||
ln -sfn "$RELEASE_DIR" "$INSTALL_DIR/current"
|
||||
cd "$RELEASE_DIR"
|
||||
|
||||
echo "[DECNET] building venv..."
|
||||
python3 -m venv .venv
|
||||
.venv/bin/pip install -q --upgrade pip
|
||||
.venv/bin/pip install -q -e .
|
||||
echo "[DECNET] building shared venv at $VENV_DIR..."
|
||||
python3 -m venv "$VENV_DIR"
|
||||
"$VENV_DIR/bin/pip" install -q --upgrade pip
|
||||
"$VENV_DIR/bin/pip" install -q "$RELEASE_DIR"
|
||||
|
||||
install -Dm0644 etc/decnet/decnet.ini /etc/decnet/decnet.ini
|
||||
[[ -f services.ini ]] && install -Dm0644 services.ini /etc/decnet/services.ini
|
||||
@@ -51,8 +56,8 @@ fi
|
||||
|
||||
# Guarantee the pip-installed entrypoint is executable (some setuptools+editable
|
||||
# combos drop it with mode 0644) and expose it on PATH.
|
||||
chmod 0755 "$INSTALL_DIR/.venv/bin/decnet"
|
||||
ln -sf "$INSTALL_DIR/.venv/bin/decnet" /usr/local/bin/decnet
|
||||
chmod 0755 "$VENV_DIR/bin/decnet"
|
||||
ln -sf "$VENV_DIR/bin/decnet" /usr/local/bin/decnet
|
||||
|
||||
echo "[DECNET] installing systemd units..."
|
||||
install -Dm0644 etc/systemd/system/decnet-agent.service /etc/systemd/system/decnet-agent.service
|
||||
|
||||
Reference in New Issue
Block a user