homelab/k3s/scripts/on-all-nodes.sh
2026-04-18 18:28:55 -04:00

22 lines
763 B
Bash
Executable file

#!/usr/bin/env bash
# Copy a local script to /tmp on every k3s node (control + worker) and execute it with sudo.
# Usage: on-all-nodes.sh <local-script> [args...]
set -uo pipefail
SCRIPT="${1:?usage: $(basename "$0") <local-script> [args...]}"
shift
[[ -f "$SCRIPT" ]] || { echo "not a file: $SCRIPT" >&2; exit 1; }
NODES=(pve-control adder-control game-control pve-worker adder-worker game-worker-hdd game-worker-ssd fat_mama)
NAME="$(basename "$SCRIPT")"
REMOTE="/tmp/$NAME"
rc=0
for node in "${NODES[@]}"; do
echo "========== $node =========="
if ! scp -q "$SCRIPT" "$node:$REMOTE"; then
echo "(scp failed on $node)" >&2; rc=1; continue
fi
ssh "$node" "sudo bash $REMOTE $*; ret=\$?; rm -f $REMOTE; exit \$ret" || rc=1
done
exit $rc