51 lines
1.1 KiB
Bash
Executable file
51 lines
1.1 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
# Get cluster subdirectory name
|
|
|
|
cd $(dirname $0)
|
|
|
|
CLUSTER="$1"
|
|
if [ -z "$CLUSTER" ] || [ ! -d "cluster/$CLUSTER" ]; then
|
|
echo "Usage: $0 <cluster name>"
|
|
echo "The cluster name must be the name of a subdirectory of cluster/"
|
|
exit 1
|
|
fi
|
|
shift 1
|
|
|
|
# Do actual stuff
|
|
|
|
if [ -z "$@" ]; then
|
|
NIXHOSTLIST=$(ls cluster/$CLUSTER/node | grep -v '\.site\.')
|
|
else
|
|
NIXHOSTLIST="$@"
|
|
fi
|
|
|
|
TMP_SCRIPT=/tmp/tmp-upgrade-$(date +%s).sh
|
|
SSH_CONFIG=cluster/$CLUSTER/ssh_config
|
|
|
|
for NIXHOST in $NIXHOSTLIST; do
|
|
NIXHOST=${NIXHOST%.*}
|
|
|
|
if [ -z "$SSH_USER" ]; then
|
|
SSH_DEST=$NIXHOST
|
|
else
|
|
SSH_DEST=$SSH_USER@$NIXHOST
|
|
fi
|
|
|
|
echo "==== DOING $NIXHOST ===="
|
|
|
|
ssh -F $SSH_CONFIG $SSH_DEST tee $TMP_SCRIPT > /dev/null <<EOF
|
|
set -ex
|
|
|
|
nix-channel --add https://nixos.org/channels/nixos-21.11 nixos
|
|
nix-channel --update
|
|
nixos-rebuild boot
|
|
EOF
|
|
|
|
read -p "Press Enter to continue (run upgrade on $NIXHOST)..."
|
|
ssh -t -F $SSH_CONFIG $SSH_DEST sudo sh $TMP_SCRIPT
|
|
ssh -F $SSH_CONFIG $SSH_DEST rm -v $TMP_SCRIPT
|
|
|
|
read -p "Press Enter to continue (reboot $NIXHOST)..."
|
|
ssh -t -F $SSH_CONFIG $SSH_DEST sudo reboot
|
|
done
|