Improve down.sh
This commit is contained in:
parent
778ca21dc7
commit
e7a0e9c2b0
|
@ -10,56 +10,40 @@ if lxc remote get-default -q | grep -q "local"; then
|
|||
exit 1
|
||||
fi
|
||||
|
||||
KEEP_DOCKER_VOLUME=true
|
||||
PURGE_STORAGE_VOLUMES=false
|
||||
OTHER_SITES_LIST=
|
||||
SKIP_BTCPAYSERVER=false
|
||||
SKIP_WWW=false
|
||||
SKIP_LNPLAY_SERVER=false
|
||||
BACKUP_WWW_APPS=true
|
||||
NON_INTERACTIVE_MODE=false
|
||||
LNPLAY_ENV_FILE_PATH=
|
||||
|
||||
# grab any modifications from the command line.
|
||||
for i in "$@"; do
|
||||
case $i in
|
||||
--purge)
|
||||
KEEP_DOCKER_VOLUME=false
|
||||
--purge-storage-volumes=*)
|
||||
PURGE_STORAGE_VOLUMES="${i#*=}"
|
||||
shift
|
||||
;;
|
||||
--skip-btcpayserver)
|
||||
SKIP_BTCPAYSERVER=true
|
||||
--non-interactive)
|
||||
NON_INTERACTIVE_MODE=true
|
||||
shift
|
||||
;;
|
||||
--skip-wwwserver)
|
||||
SKIP_WWW=true
|
||||
shift
|
||||
;;
|
||||
--skip-lnplayserver)
|
||||
SKIP_LNPLAY_SERVER=true
|
||||
--lnplay-env-path=*)
|
||||
LNPLAY_ENV_FILE_PATH="${i#*=}"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
echo "Unexpected option: $1"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
SERVERS=
|
||||
if [ "$SKIP_BTCPAYSERVER" = false ]; then
|
||||
SERVERS="btcpayserver"
|
||||
fi
|
||||
|
||||
if [ "$SKIP_WWW" = false ]; then
|
||||
SERVERS="www $SERVERS"
|
||||
fi
|
||||
|
||||
if [ "$SKIP_LNPLAY_SERVER" = false ]; then
|
||||
SERVERS="lnplayserver $SERVERS"
|
||||
fi
|
||||
export NON_INTERACTIVE_MODE="$NON_INTERACTIVE_MODE"
|
||||
|
||||
. ./deployment_defaults.sh
|
||||
|
||||
. ./remote_env.sh
|
||||
|
||||
. ./defaults.env
|
||||
|
||||
. ./project_env.sh
|
||||
|
||||
# let's bring down services on the remote deployment if necessary.
|
||||
|
@ -67,65 +51,101 @@ 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
|
||||
|
||||
for VIRTUAL_MACHINE in $SERVERS; do
|
||||
function deleteVM {
|
||||
IP_V4_ADDRESS=
|
||||
LXD_VM_NAME="$1"
|
||||
FORCE_DELETE_VM="$3"
|
||||
if lxc list | grep -q "$1"; then
|
||||
if [ "$FORCE_DELETE_VM" = false ]; then
|
||||
if [ -n "$WWW_SERVER_MAC_ADDRESS" ]; then
|
||||
DOCKER_HOST="ssh://ubuntu@$PRIMARY_WWW_FQDN" ./project/www/stop_docker_stacks.sh
|
||||
fi
|
||||
|
||||
LXD_NAME="$VIRTUAL_MACHINE-${PRIMARY_DOMAIN//./-}"
|
||||
if [ -n "$BTCPAY_SERVER_MAC_ADDRESS" ]; then
|
||||
if wait-for-it -t 5 "$BTCPAY_SERVER_FQDN":22; then
|
||||
ssh "$BTCPAY_SERVER_FQDN" "bash -c $BTCPAY_SERVER_APPPATH/btcpay-down.sh"
|
||||
else
|
||||
echo "ERROR: the remote BTCPAY Server is not available on ssh."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if lxc list | grep -q "$LXD_NAME"; then
|
||||
bash -c "./stop.sh --server=$VIRTUAL_MACHINE"
|
||||
if [ -n "$LNPLAY_SERVER_MAC_ADDRESS" ]; then
|
||||
bash -c "./project/lnplay/down.sh --non-interactive=true --env-file=$LNPLAY_ENV_FILE_PATH"
|
||||
fi
|
||||
|
||||
if [ "$VIRTUAL_MACHINE" = www ] && [ "$BACKUP_WWW_APPS" = true ]; then
|
||||
APP_LIST="letsencrypt ghost nextcloud gitea nostr"
|
||||
echo "INFO: Backing up WWW apps."
|
||||
for APP in $APP_LIST; do
|
||||
bash -c "$(pwd)/project/www/backup_www.sh --app=$APP"
|
||||
done
|
||||
# if [ "$VIRTUAL_MACHINE" = www ] && [ "$BACKUP_WWW_APPS" = true ]; then
|
||||
# APP_LIST="letsencrypt ghost nextcloud gitea nostr"
|
||||
# echo "INFO: Backing up WWW apps."
|
||||
# for APP in $APP_LIST; do
|
||||
# bash -c "$(pwd)/project/www/backup_www.sh --app=$APP"
|
||||
# done
|
||||
# fi
|
||||
|
||||
IP_V4_ADDRESS="$(lxc list "$LXD_VM_NAME" --format csv --columns=4 | grep enp5s0 | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}')" || true
|
||||
|
||||
if lxc list -q --format csv | grep "$1" | grep -q RUNNING; then
|
||||
lxc stop -f "$LXD_VM_NAME"
|
||||
fi
|
||||
|
||||
lxc delete -f "$LXD_VM_NAME"
|
||||
else
|
||||
lxc delete -f "$LXD_VM_NAME"
|
||||
fi
|
||||
|
||||
lxc stop "$LXD_NAME"
|
||||
|
||||
lxc delete "$LXD_NAME"
|
||||
fi
|
||||
|
||||
# remove the ssh known endpoint else we get warnings.
|
||||
ssh-keygen -f "$SSH_HOME/known_hosts" -R "$VIRTUAL_MACHINE.$PRIMARY_DOMAIN" | exit
|
||||
ssh-keygen -R "$SSH_HOME/known_hosts" -R "$2.$3" >> /dev/null
|
||||
|
||||
if lxc profile list | grep -q "$LXD_NAME"; then
|
||||
lxc profile delete "$LXD_NAME"
|
||||
if [ -n "$IP_V4_ADDRESS" ]; then
|
||||
ssh-keygen -R "$SSH_HOME/known_hosts" -R "$IP_V4_ADDRESS" >> /dev/null
|
||||
fi
|
||||
|
||||
if [ "$KEEP_DOCKER_VOLUME" = false ]; then
|
||||
# destroy the docker volume
|
||||
VM_ID=w
|
||||
if [ "$VIRTUAL_MACHINE" = btcpayserver ]; then
|
||||
VM_ID="b"
|
||||
elif [ "$VIRTUAL_MACHINE" = lnplayserver ]; then
|
||||
VM_ID="c"
|
||||
fi
|
||||
|
||||
# d for docker; b for backup; s for ss-data
|
||||
for DATA in d b s; do
|
||||
VOLUME_NAME="$PRIMARY_DOMAIN_IDENTIFIER-$VM_ID""$DATA"
|
||||
if lxc storage volume list ss-base -q | grep -q "$VOLUME_NAME"; then
|
||||
RESPONSE=
|
||||
read -r -p "Are you sure you want to delete the '$VOLUME_NAME' volume intended for '$LXD_NAME'?": RESPONSE
|
||||
|
||||
if [ "$RESPONSE" = "y" ]; then
|
||||
lxc storage volume delete ss-base "$VOLUME_NAME"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
else
|
||||
# we maintain the volumes
|
||||
# TODO make a snapshot on all the zfs storage volumes.
|
||||
echo "TODO: create snapshot of ZFS volumes and pull them to mgmt machine."
|
||||
if lxc profile list | grep -q "$1"; then
|
||||
lxc profile delete "$1" >> /dev/null
|
||||
fi
|
||||
done
|
||||
|
||||
if lxc network list -q | grep -q ss-ovn; then
|
||||
lxc network delete ss-ovn
|
||||
}
|
||||
|
||||
LXD_NAME=
|
||||
|
||||
if [ -n "$WWW_SERVER_MAC_ADDRESS" ]; then
|
||||
LXD_NAME="${WWW_HOSTNAME//./-}-${PRIMARY_DOMAIN//./-}"
|
||||
deleteVM "$LXD_NAME" "$WWW_HOSTNAME" "$PRIMARY_DOMAIN" false
|
||||
fi
|
||||
|
||||
if [ -n "$BTCPAY_SERVER_MAC_ADDRESS" ]; then
|
||||
LXD_NAME="${BTCPAY_HOSTNAME//./-}-${PRIMARY_DOMAIN//./-}"
|
||||
deleteVM "$LXD_NAME" "$BTCPAY_HOSTNAME" "$PRIMARY_DOMAIN" false
|
||||
fi
|
||||
|
||||
if [ -n "$LNPLAY_SERVER_MAC_ADDRESS" ]; then
|
||||
LXD_NAME="${LNPLAY_SERVER_HOSTNAME//./-}-${PRIMARY_DOMAIN//./-}"
|
||||
deleteVM "$LXD_NAME" "$LNPLAY_SERVER_HOSTNAME" "$PRIMARY_DOMAIN" true
|
||||
fi
|
||||
|
||||
|
||||
if [ "$PURGE_STORAGE_VOLUMES" = true ]; then
|
||||
|
||||
EXISTING_STORAGE_VOLUMES=$(lxc storage volume list ss-base -q --format csv)
|
||||
if echo "$EXISTING_STORAGE_VOLUMES" | grep -q docker; then
|
||||
lxc storage volume delete ss-base docker >> /dev/null
|
||||
fi
|
||||
|
||||
if echo "$EXISTING_STORAGE_VOLUMES" | grep -q ss-data; then
|
||||
lxc storage volume delete ss-base ss-data >> /dev/null
|
||||
fi
|
||||
|
||||
if echo "$EXISTING_STORAGE_VOLUMES" | grep -q backup; then
|
||||
lxc storage volume delete ss-base backup >> /dev/null
|
||||
fi
|
||||
|
||||
if lxc network list -q | grep -q ss-ovn; then
|
||||
lxc network delete ss-ovn
|
||||
fi
|
||||
fi
|
Loading…
Reference in New Issue