diff --git a/deployment/domain_list.sh b/deployment/domain_list.sh new file mode 100755 index 0000000..c572bf5 --- /dev/null +++ b/deployment/domain_list.sh @@ -0,0 +1,16 @@ +#!/bin/bash + + +# the DOMAIN_LIST is a complete list of all our domains. We often iterate over this list. +DOMAIN_LIST="${PRIMARY_DOMAIN}" +if [ -n "$OTHER_SITES_LIST" ]; then + DOMAIN_LIST="${DOMAIN_LIST},${OTHER_SITES_LIST}" +fi + +export DOMAIN_LIST="$DOMAIN_LIST" +export DOMAIN_COUNT=$(("$(echo "$DOMAIN_LIST" | tr -cd , | wc -c)"+1)) +export OTHER_SITES_LIST="$OTHER_SITES_LIST" + +export PRIMARY_WWW_FQDN="$WWW_HOSTNAME.$DOMAIN_NAME" +export BTCPAY_SERVER_FQDN="$BTCPAY_SERVER_HOSTNAME.$DOMAIN_NAME" +export CLAMS_SERVER_FQDN="$CLAMS_SERVER_HOSTNAME.$DOMAIN_NAME" \ No newline at end of file diff --git a/deployment/down.sh b/deployment/down.sh index ef43ab2..4ff4c11 100755 --- a/deployment/down.sh +++ b/deployment/down.sh @@ -67,12 +67,14 @@ export SITE_PATH="$SITES_PATH/$PRIMARY_DOMAIN" source "$SITE_PATH/site.conf" source ./project/domain_env.sh -SKIP=btcpayserver -for VIRTUAL_MACHINE in www btcpayserver; do +source ./domain_list.sh + +for VIRTUAL_MACHINE in $SERVERS; do + LXD_NAME="$VIRTUAL_MACHINE-${PRIMARY_DOMAIN//./-}" if lxc list | grep -q "$LXD_NAME"; then - bash -c "./up.sh --stop --skip-$SKIP" + bash -c "./stop.sh --server=$VIRTUAL_MACHINE" lxc stop "$LXD_NAME" diff --git a/deployment/stop.sh b/deployment/stop.sh new file mode 100755 index 0000000..fcf62b8 --- /dev/null +++ b/deployment/stop.sh @@ -0,0 +1,61 @@ +#!/bin/bash + +# https://www.sovereign-stack.org/ss-down/ + +set -eu +cd "$(dirname "$0")" + +if lxc remote get-default -q | grep -q "local"; then + echo "ERROR: you are on the local lxc remote. Nothing to take down" + exit 1 +fi + +SERVER_TO_STOP= +OTHER_SITES_LIST= + +# grab any modifications from the command line. +for i in "$@"; do + case $i in + --server=*) + SERVER_TO_STOP="${i#*=}" + shift + ;; + *) + echo "Unexpected option: $1" + exit 1 + ;; + esac +done + +if [ -z "$SERVER_TO_STOP" ]; then + echo "ERROR: you MUST specify a server to stop with '--server=www' for example." + exit 1 +fi + + +. ./deployment_defaults.sh + +. ./remote_env.sh + +. ./project_env.sh + +# let's bring down services on the remote deployment if necessary. +export DOMAIN_NAME="$PRIMARY_DOMAIN" +export SITE_PATH="$SITES_PATH/$PRIMARY_DOMAIN" + +source "$SITE_PATH/site.conf" +source ./project/domain_env.sh + +source ./domain_list.sh + +if [ "$SERVER_TO_STOP" = www ]; then + DOCKER_HOST="ssh://ubuntu@$PRIMARY_WWW_FQDN" ./project/www/stop_docker_stacks.sh +fi + +if [ "$SERVER_TO_STOP" = btcpayserver ]; then + ssh "$BTCPAY_SERVER_FQDN" "bash -c $BTCPAY_SERVER_APPPATH/btcpay-down.sh" +fi + +if [ "$SERVER_TO_STOP" = clamsserver ]; then + DOCKER_HOST="ssh://ubuntu@$CLAMS_SERVER_FQDN" ./project/clams-server/down.sh +fi \ No newline at end of file