aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/update_hosts.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/update_hosts.sh')
-rwxr-xr-xscripts/update_hosts.sh75
1 files changed, 68 insertions, 7 deletions
diff --git a/scripts/update_hosts.sh b/scripts/update_hosts.sh
index cc459ed..94003b8 100755
--- a/scripts/update_hosts.sh
+++ b/scripts/update_hosts.sh
@@ -3,21 +3,82 @@ set -e
base_dir="$(git rev-parse --show-toplevel)"
-user="${1-$USER}"
-hosts="${2-server2 server3}"
-branch="${3-main}"
+user="$USER"
+set_hosts=""
+branch="main"
+direct=false
+
+while [ "$#" -ne 0 ]; do
+ case "$1" in
+ --user)
+ shift 1
+ user="$1"
+ ;;
+ --host)
+ shift 1
+ set_hosts="$set_hosts $1"
+ ;;
+ --hosts)
+ shift 1
+ if [ -n "$set_hosts" ]; then
+ echo "Warning: --hosts overrides --host"
+ fi
+ set_hosts="$1"
+ ;;
+ --branch)
+ shift 1
+ branch="$1"
+ ;;
+ --direct)
+ direct=true
+ ;;
+ *)
+ echo "Arg '$1' not known."
+ exit 2
+ ;;
+ esac
+ shift 1
+done
+
+hosts="${set_hosts-"server2 server3"}"
+
+echo "update_hosts.sh --user '$user' --hosts '$hosts' --branch '$branch' --direct '$direct'"
for host in $hosts; do
echo "Updating '$user@$host.vhack.eu' ..."
- printf "Copying closure ..\n"
- nix copy --substitute-on-destination --to "ssh://$user@$host.vhack.eu" ".#nixosConfigurations.$host.config.system.build.toplevel"
-
printf "Deploying remote side script ..\n"
scp "$base_dir/scripts/update_hosts.remote" "$user@$host.vhack.eu:update_host.remote"
+ set -x
+
+ flake_path=""
+ if [ "$direct" = true ]; then
+ printf "Deploying git config ..\n"
+
+ flake_path="path:$(git archive --format=tar.gz HEAD |
+ ssh "$user@$host.vhack.eu" \
+ 'flake_path=$(mktemp -d -t update_hosts_XXXXX); cd $flake_path && tar -xz; echo $flake_path')"
+
+ fi
+
+ tmp="$(mktemp -d -t "server_build_script_XXXXX")"
+ trap 'rm -r "$tmp"' EXIT
+ if [ "$direct" = true ]; then
+ git archive --format=tar.gz HEAD | {
+ cd "$tmp"
+ tar -xz
+ }
+ else
+ git clone "git.foss-syndicate.org" --branch="$branch" "$tmp"
+ fi
+ cd "$tmp"
+
+ printf "Copying closure ..\n"
+ nix copy --substitute-on-destination --to "ssh://$user@$host.vhack.eu" ".#nixosConfigurations.$host.config.system.build.toplevel"
+
printf "Executing remote side script ..\n"
- ssh -t "$user@$host.vhack.eu" "chmod +x update_host.remote; ./update_host.remote '$branch'"
+ ssh -t "$user@$host.vhack.eu" "chmod +x update_host.remote; ./update_host.remote '$branch' '$flake_path'"
done
# Give the servers some time to reboot