99 lines
2.9 KiB
Bash
Executable File
99 lines
2.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -eu
|
|
cd "$(dirname "$0")"
|
|
|
|
CURRENT_CLUSTER="$(lxc remote get-default)"
|
|
|
|
if echo "$CURRENT_CLUSTER" | grep -q "production"; then
|
|
echo "WARNING: You are running a migration procedure on a production system."
|
|
echo ""
|
|
|
|
|
|
RESPONSE=
|
|
read -r -p " Are you sure you want to continue (y) ": RESPONSE
|
|
if [ "$RESPONSE" != "y" ]; then
|
|
echo "STOPPING."
|
|
exit 1
|
|
fi
|
|
|
|
fi
|
|
|
|
source ./defaults.sh
|
|
|
|
export CLUSTER_PATH="$CLUSTERS_DIR/$CURRENT_CLUSTER"
|
|
CLUSTER_DEFINITION="$CLUSTER_PATH/cluster_definition"
|
|
export CLUSTER_DEFINITION="$CLUSTER_DEFINITION"
|
|
|
|
# ensure the cluster definition exists.
|
|
if [ ! -f "$CLUSTER_DEFINITION" ]; then
|
|
echo "ERROR: The cluster definition could not be found. You may need to re-run 'ss-cluster create'."
|
|
exit 1
|
|
fi
|
|
|
|
source "$CLUSTER_DEFINITION"
|
|
|
|
# source project defition.
|
|
# Now let's load the project definition.
|
|
PROJECT_PATH="$PROJECTS_DIR/$PROJECT_NAME"
|
|
PROJECT_DEFINITION_PATH="$PROJECT_PATH/project_definition"
|
|
source "$PROJECT_DEFINITION_PATH"
|
|
|
|
export PRIMARY_SITE_DEFINITION_PATH="$SITES_PATH/$PRIMARY_DOMAIN/site_definition"
|
|
source "$PRIMARY_SITE_DEFINITION_PATH"
|
|
|
|
# Check to see if any of the VMs actually don't exist.
|
|
# (we only migrate instantiated vms)
|
|
for VM in www btcpayserver; do
|
|
LXD_NAME="$VM-${DOMAIN_NAME//./-}"
|
|
|
|
# if the VM doesn't exist, the we emit an error message and hard quit.
|
|
if ! lxc list --format csv | grep -q "$LXD_NAME"; then
|
|
echo "ERROR: there is no VM named '$LXD_NAME'. You probably need to run ss-deploy again."
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
BTCPAY_RESTORE_ARCHIVE_PATH="$SITES_PATH/$PRIMARY_DOMAIN/backups/btcpayserver/$(date +%s).tar.gz"
|
|
echo "INFO: The BTCPAY_RESTORE_ARCHIVE_PATH for this migration will be: $BTCPAY_RESTORE_ARCHIVE_PATH"
|
|
|
|
# first we run ss-deploy --stop
|
|
# this grabs a backup of all data (backups are on by default) and saves them to the management machine
|
|
# the --stop flag ensures that services do NOT come back online.
|
|
# by default, we grab a backup.
|
|
|
|
bash -c "./deploy.sh --stop --backup-archive-path=$BTCPAY_RESTORE_ARCHIVE_PATH"
|
|
|
|
RESPONSE=
|
|
read -r -p "Are you sure you want to continue the migration? We have a backup TODO.": RESPONSE
|
|
if [ "$RESPONSE" != "y" ]; then
|
|
echo "STOPPING."
|
|
exit 0
|
|
fi
|
|
|
|
|
|
for VM in www btcpayserver; do
|
|
LXD_NAME="$VM-${DOMAIN_NAME//./-}"
|
|
lxc delete -f "$LXD_NAME"
|
|
|
|
lxc profile delete "$LXD_NAME"
|
|
done
|
|
|
|
|
|
# delete the base image so it can be created.
|
|
if lxc list | grep -q sovereign-stack-base; then
|
|
lxc delete -f sovereign-stack-base
|
|
fi
|
|
|
|
# these only get initialzed upon creation, so we MUST delete here so they get recreated.
|
|
if lxc profile list | grep -q sovereign-stack; then
|
|
lxc profile delete sovereign-stack
|
|
fi
|
|
|
|
if lxc image list | grep -q "sovereign-stack-base"; then
|
|
lxc image rm sovereign-stack-base
|
|
fi
|
|
|
|
# Then we can run a restore operation and specify the backup archive at the CLI.
|
|
bash -c "./deploy.sh -y --restore-www --restore-btcpay --backup-archive-path=$BTCPAY_RESTORE_ARCHIVE_PATH"
|