homelab/k3s/resilience/deploy-resilience.sh
Samantha Atkins b7c9dc81a0 cleanup
2026-04-17 20:33:17 -04:00

55 lines
1.7 KiB
Bash
Executable file

#!/bin/bash
# Deploy k3s resilience configs to all cluster nodes.
# Run from workstation where SSH aliases work.
set -e
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
CONTROL_NODES="pve-control adder-control game-control"
WORKER_NODES="pve-worker adder-worker game-worker-hdd game-worker-ssd fat_mama"
ALL_NODES="$CONTROL_NODES $WORKER_NODES"
echo "=== Deploying k3s resilience to all nodes ==="
for host in $ALL_NODES; do
echo "--- $host ---"
# Copy scripts
scp "$SCRIPT_DIR/wait-for-wg0.sh" "$host:/tmp/"
scp "$SCRIPT_DIR/k3s-flannel-watchdog.sh" "$host:/tmp/"
scp "$SCRIPT_DIR/k3s-flannel-watchdog.service" "$host:/tmp/"
scp "$SCRIPT_DIR/k3s-flannel-watchdog.timer" "$host:/tmp/"
ssh "$host" bash <<'REMOTE'
sudo install -m 755 /tmp/wait-for-wg0.sh /usr/local/bin/
sudo install -m 755 /tmp/k3s-flannel-watchdog.sh /usr/local/bin/
sudo cp /tmp/k3s-flannel-watchdog.service /etc/systemd/system/
sudo cp /tmp/k3s-flannel-watchdog.timer /etc/systemd/system/
# Determine which k3s service runs on this node
if systemctl is-active k3s >/dev/null 2>&1; then
K3S_SVC="k3s"
else
K3S_SVC="k3s-agent"
fi
# Install systemd drop-in for wg0 dependency
sudo mkdir -p /etc/systemd/system/${K3S_SVC}.service.d
cat <<EOF | sudo tee /etc/systemd/system/${K3S_SVC}.service.d/wait-wg0.conf
[Unit]
After=wg-quick@wg0.service
Wants=wg-quick@wg0.service
[Service]
ExecStartPre=/usr/local/bin/wait-for-wg0.sh
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now k3s-flannel-watchdog.timer
echo "$host: done (service=$K3S_SVC)"
REMOTE
done
echo "=== All nodes configured ==="