aboutsummaryrefslogtreecommitdiff
path: root/deploy.sh
blob: 4d6387f8a20738e1718e63863293bfb29811998c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/usr/bin/env bash

cd $(dirname $0)

if [ -z "$@" ]; then
	NIXHOSTLIST=$(ls node | grep -v '\.site\.')
else
	NIXHOSTLIST="$@"
fi

TMP_PATH=/tmp/tmp-deploy-$(date +%s)

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 ===="

	echo "Sending NixOS config files"

	ssh -F ssh_config $SSH_DEST mkdir -p $TMP_PATH
	cat configuration.nix | ssh -F ssh_config $SSH_DEST tee $TMP_PATH/configuration.nix > /dev/null
	cat node/$NIXHOST.nix | ssh -F ssh_config $SSH_DEST tee $TMP_PATH/node.nix > /dev/null
	cat node/$NIXHOST.site.nix | ssh -F ssh_config $SSH_DEST tee $TMP_PATH/site.nix > /dev/null

	echo "Sending secret files"
	test -f secrets/rclone.conf && (cat secrets/rclone.conf | ssh -F ssh_config $SSH_DEST tee $TMP_PATH/rclone.conf > /dev/null)

	echo "Rebuilding NixOS"

	ssh -F ssh_config $SSH_DEST tee $TMP_PATH/deploy.sh > /dev/null <<EOF
set -ex

cd $TMP_PATH
mv configuration.nix node.nix site.nix /etc/nixos
test -f rclone.conf && (mv rclone.conf /root; chmod 600 /root/rclone.conf)
nixos-rebuild switch
EOF

	ssh -t -F ssh_config $SSH_DEST sudo sh $TMP_PATH/deploy.sh
	ssh -F ssh_config $SSH_DEST rm -rv $TMP_PATH
done