#!/usr/bin/env bash # setup-checks.sh — deploy check scripts to /opt/oikos/checks. # Auto-setup hook: tools/setup-*.sh runs after every git pull. # # On a plain host/workstation this installs the scripts locally (the pulling # host). On a Proxmox host it ALSO pushes the scripts into every running LXC/VM # guest, because an ssh-script check runs the script INSIDE the target — a # script present only on the host does nothing for a guest reached via # pct/qm exec. Guest deployment is delegated to deploy-checks.sh. set -euo pipefail CLONE_DIR="${HOMELAB_CONTEXT_DIR:-/opt/homelab}" CHECK_SETUP="$CLONE_DIR/checks/install.sh" DEPLOY="$CLONE_DIR/tools/deploy-checks.sh" if [ -f "$CHECK_SETUP" ]; then bash "$CHECK_SETUP" || echo "[setup-checks] WARNING: install.sh exited with code $?" else echo "[setup-checks] no checks/install.sh found, skipping" fi # On a Proxmox host, keep every guest's scripts in sync too. Best-effort: a # failing push to one guest must not abort the whole hook. Warn (not skip # silently) if deploy-checks.sh itself is absent — without it guests never get # scripts and the pct-exec routing reports every guest check down. if command -v pct >/dev/null 2>&1; then if [ ! -f "$DEPLOY" ]; then echo "[setup-checks] WARNING: $DEPLOY missing — guest scripts will go stale. Commit tools/deploy-checks.sh alongside this hook." elif [ ! -x "$DEPLOY" ]; then echo "[setup-checks] WARNING: $DEPLOY not executable — running via bash" bash "$DEPLOY" || echo "[setup-checks] WARNING: guest deploy exited non-zero (scripts may be stale on some guests)" else "$DEPLOY" || echo "[setup-checks] WARNING: guest deploy exited non-zero (scripts may be stale on some guests)" fi fi