aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2021-02-25 14:18:35 -0300
committerEuAndreh <eu@euandre.org>2021-02-25 14:18:35 -0300
commit2add81f3b67b525a7aac39f550e3cdde115c2871 (patch)
treed3a3c7cf463e5831a67f200170801f68526247fb
parentWIP: Add opt/bin/ (diff)
downloadserver-2add81f3b67b525a7aac39f550e3cdde115c2871.tar.gz
server-2add81f3b67b525a7aac39f550e3cdde115c2871.tar.xz
WIP: Add scripts/deploy
-rwxr-xr-xscripts/deploy44
1 files changed, 44 insertions, 0 deletions
diff --git a/scripts/deploy b/scripts/deploy
new file mode 100755
index 0000000..f529d03
--- /dev/null
+++ b/scripts/deploy
@@ -0,0 +1,44 @@
+#!/bin/sh
+set -eu
+
+NAME="${1:-}"
+if [ -z "$NAME" ]; then
+ printf 'Missing hostname\n' >&2
+ exit 2
+fi
+
+FILE="$(find -name hostname.txt -exec grep -l "$NAME" {} \;)"
+if [ -z "$FILE" ]; then
+ printf 'Unknown hostname "%s"\n' "$NAME" >&2
+ exit 2
+fi
+
+DIR="$(dirname "$FILE")"
+
+if [ -f "$DIR"/machines.scm ]; then
+ OS=guix
+elif [ -f "$DIR"/configuration.nix ]; then
+ OS=nix
+else
+ printf 'Uknown OS type of "%s"\n' "$NAME" >&2
+ exit 2
+fi
+
+# FIXME
+# terraform apply "$DIR"
+
+TLD="$(cat "$DIR"/tld.txt)"
+DIRS='/opt /srv'
+ssh "$TLD" "\
+sudo mkdir -p $DIRS && \
+sudo chown $USER:users -R $DIRS && \
+chmod -R 755 $DIRS"
+
+rsync -avzP opt "$TLD":/
+
+if [ "$OS" = 'guix' ]; then
+ guix deploy "$DIR"/machines.scm
+elif [ "$OS" = 'nix' ]; then
+ scp "$DIR"/configuration.nix "$TLD":/etc/nixos/
+ ssh "$TLD" sudo nixos-rebuild switch
+fi