1
1

Compare commits

..

No commits in common. "cc6bdef20d83bcb24a9bd22158c9e602bb3dfc2d" and "c08260a2d4cdcf7ab39adc821b130f82c7a82925" have entirely different histories.

7 changed files with 99 additions and 109 deletions

10
.vscode/settings.json vendored
View File

@ -14,11 +14,11 @@
"-x" "-x"
], ],
"shellcheck.ignorePatterns": {}, "shellcheck.ignorePatterns": {},
// "shellcheck.exclude": [ "shellcheck.exclude": [
// "SC1090", "SC1090",
// "SC1091", "SC1091",
// "SC2029" "SC2029"
// ], ],
"terminal.integrated.fontFamily": "monospace", "terminal.integrated.fontFamily": "monospace",
"workbench.colorCustomizations": { "workbench.colorCustomizations": {
"activityBar.background": "#1900a565", "activityBar.background": "#1900a565",

View File

@ -101,4 +101,4 @@ export PRIMARY_DOMAIN=
# this is the git commit of the project/ sub git repo. # this is the git commit of the project/ sub git repo.
# used in the migration script to switch into past for backup # used in the migration script to switch into past for backup
# then back to present (TARGET_PROJECT_GIT_COMMIT) for restore. # then back to present (TARGET_PROJECT_GIT_COMMIT) for restore.
export TARGET_PROJECT_GIT_COMMIT=c042ff404f02d3fc1739b325660411c68e3bf0b3 export TARGET_PROJECT_GIT_COMMIT=bdd80779227775ad64c761a9f2deed2e878e76d1

View File

@ -26,22 +26,15 @@ fi
. ./remote_env.sh . ./remote_env.sh
for PROJECT_CHAIN in ${DEPLOYMENT_STRING//,/ }; do . ./project_env.sh
NO_PARENS="${PROJECT_CHAIN:1:${#PROJECT_CHAIN}-2}"
PROJECT_PREFIX=$(echo "$NO_PARENS" | cut -d'|' -f1)
BITCOIN_CHAIN=$(echo "$NO_PARENS" | cut -d'|' -f2)
export PROJECT_PREFIX="$PROJECT_PREFIX"
export BITCOIN_CHAIN="$BITCOIN_CHAIN"
. ./project_env.sh if ! lxc info | grep "project:" | grep -q "$PROJECT_NAME"; then
if ! lxc info | grep "project:" | grep -q "$PROJECT_NAME"; then
if lxc project list | grep -q "$PROJECT_NAME"; then if lxc project list | grep -q "$PROJECT_NAME"; then
lxc project switch "$PROJECT_NAME" lxc project switch "$PROJECT_NAME"
fi fi
fi fi
for VM in www btcpayserver; do for VM in www btcpayserver; do
LXD_NAME="$VM-${DOMAIN_NAME//./-}" LXD_NAME="$VM-${DOMAIN_NAME//./-}"
if lxc list | grep -q "$LXD_NAME"; then if lxc list | grep -q "$LXD_NAME"; then
@ -54,24 +47,25 @@ for PROJECT_CHAIN in ${DEPLOYMENT_STRING//,/ }; do
if lxc profile list | grep -q "$LXD_NAME"; then if lxc profile list | grep -q "$LXD_NAME"; then
lxc profile delete "$LXD_NAME" lxc profile delete "$LXD_NAME"
fi fi
done done
if lxc network list -q | grep -q ss-ovn; then
if lxc network list -q | grep -q ss-ovn; then
lxc network delete ss-ovn lxc network delete ss-ovn
fi fi
if ! lxc info | grep "project:" | grep -q default; then if ! lxc info | grep "project:" | grep -q default; then
lxc project switch default lxc project switch default
fi fi
if lxc project list | grep -q "$PROJECT_NAME"; then
if lxc project list | grep -q "$PROJECT_NAME"; then
lxc project delete "$PROJECT_NAME" lxc project delete "$PROJECT_NAME"
fi fi
# delete the base image so it can be created. # delete the base image so it can be created.
if lxc list | grep -q "$BASE_IMAGE_VM_NAME"; then if lxc list | grep -q "$BASE_IMAGE_VM_NAME"; then
lxc delete -f "$BASE_IMAGE_VM_NAME" lxc delete -f "$BASE_IMAGE_VM_NAME"
# remove the ssh known endpoint else we get warnings. # remove the ssh known endpoint else we get warnings.
ssh-keygen -f "$SSH_HOME/known_hosts" -R "$LXD_NAME" ssh-keygen -f "$SSH_HOME/known_hosts" -R "$LXD_NAME"
fi fi
done

View File

@ -8,11 +8,10 @@ cd "$(dirname "$0")"
PROJECT_NAME="$PROJECT_PREFIX-$BITCOIN_CHAIN" PROJECT_NAME="$PROJECT_PREFIX-$BITCOIN_CHAIN"
export PROJECT_NAME="$PROJECT_NAME" export PROJECT_NAME="$PROJECT_NAME"
PROJECT_PATH="$PROJECTS_DIR/$PROJECT_NAME" PROJECT_PATH="$PROJECTS_DIR/$PROJECT_NAME"
export PROJECT_PATH="$PROJECT_PATH" PROJECT_DEFINITION_PATH="$PROJECT_PATH/project_definition"
PROJECT_DEFINITION_PATH="$PROJECT_PATH/project.conf"
if [ ! -f "$PROJECT_DEFINITION_PATH" ]; then if [ ! -f "$PROJECT_DEFINITION_PATH" ]; then
echo "ERROR: 'project.conf' not found $PROJECT_DEFINITION_PATH not found." echo "ERROR: 'project_definition' not found $PROJECT_DEFINITION_PATH not found."
exit 1 exit 1
fi fi

View File

@ -22,25 +22,28 @@ fi
source ../defaults.sh source ../defaults.sh
export REMOTE_PATH="$REMOTES_DIR/$REMOTE_NAME" export REMOTE_PATH="$REMOTES_DIR/$REMOTE_NAME"
REMOTE_DEFINITION="$REMOTE_PATH/remote.conf" REMOTE_DEFINITION="$REMOTE_PATH/remote_definition"
export REMOTE_DEFINITION="$REMOTE_DEFINITION" export REMOTE_DEFINITION="$REMOTE_DEFINITION"
mkdir -p "$REMOTE_PATH" mkdir -p "$REMOTE_PATH"
if [ ! -f "$REMOTE_DEFINITION" ]; then if [ ! -f "$REMOTE_DEFINITION" ]; then
# stub out a remote.conf. # stub out a remote_definition.
cat >"$REMOTE_DEFINITION" <<EOL cat >"$REMOTE_DEFINITION" <<EOL
# https://www.sovereign-stack.org/ss-remote #!/bin/bash
LXD_REMOTE_PASSWORD="$(gpg --gen-random --armor 1 14)" # see https://www.sovereign-stack.org/remote for more info!
DEPLOYMENT_STRING="(dev|regtest),(staging|testnet)"
# REGISTRY_URL=http://registry.domain.tld:5000 export LXD_REMOTE_PASSWORD="$(gpg --gen-random --armor 1 14)"
export BITCOIN_CHAIN="regtest"
export PROJECT_PREFIX="$REMOTE_NAME"
#export REGISTRY_URL=http://registry.domain.tld:5000
EOL EOL
chmod 0744 "$REMOTE_DEFINITION" chmod 0744 "$REMOTE_DEFINITION"
echo "We stubbed out a '$REMOTE_DEFINITION' file for you." echo "We stubbed out a '$REMOTE_DEFINITION' file for you."
echo "Use this file to customize your remote deployment;" echo "Use this file to customize your remote deployment;"
echo "Check out 'https://www.sovereign-stack.org/ss-remote' for more information." echo "Check out 'https://www.sovereign-stack.org/remote' for more information."
exit 1 exit 1
fi fi
@ -137,7 +140,7 @@ IP_OF_MGMT_MACHINE="$(echo "$IP_OF_MGMT_MACHINE" | cut -d: -f1)"
# error out if the remote password is unset. # error out if the remote password is unset.
if [ -z "$LXD_REMOTE_PASSWORD" ]; then if [ -z "$LXD_REMOTE_PASSWORD" ]; then
echo "ERROR: LXD_REMOTE_PASSWORD must be set in your remote.conf file." echo "ERROR: LXD_REMOTE_PASSWORD must be set in your remote_definition."
exit 1 exit 1
fi fi

View File

@ -27,13 +27,13 @@ if echo "$CURRENT_REMOTE" | grep -q "production"; then
fi fi
export REMOTE_PATH="$REMOTES_DIR/$CURRENT_REMOTE" export REMOTE_PATH="$REMOTES_DIR/$CURRENT_REMOTE"
REMOTE_DEFINITION="$REMOTE_PATH/remote.conf" REMOTE_DEFINITION="$REMOTE_PATH/remote_definition"
export REMOTE_DEFINITION="$REMOTE_DEFINITION" export REMOTE_DEFINITION="$REMOTE_DEFINITION"
# ensure the remote definition exists. # ensure the remote definition exists.
if [ ! -f "$REMOTE_DEFINITION" ]; then if [ ! -f "$REMOTE_DEFINITION" ]; then
echo "ERROR: The remote definition could not be found. You may need to run 'ss-remote'." echo "ERROR: The remote definition could not be found. You may need to run 'ss-remote'."
echo "INFO: Consult https://www.sovereign-stack.org/ss-remote for more information." echo "INFO: Consult https://www.sovereign-stack.org/remote for more information."
exit 1 exit 1
fi fi

View File

@ -16,18 +16,13 @@ fi
. ./remote_env.sh . ./remote_env.sh
for PROJECT_CHAIN in ${DEPLOYMENT_STRING//,/ }; do . ./project_env.sh
NO_PARENS="${PROJECT_CHAIN:1:${#PROJECT_CHAIN}-2}"
PROJECT_PREFIX=$(echo "$NO_PARENS" | cut -d'|' -f1)
BITCOIN_CHAIN=$(echo "$NO_PARENS" | cut -d'|' -f2)
export PROJECT_PREFIX="$PROJECT_PREFIX"
export BITCOIN_CHAIN="$BITCOIN_CHAIN"
. ./project_env.sh
# Check to see if any of the VMs actually don't exist.
# (we only migrate instantiated vms) # Check to see if any of the VMs actually don't exist.
for VM in www btcpayserver; do # (we only migrate instantiated vms)
for VM in www btcpayserver; do
LXD_NAME="$VM-${DOMAIN_NAME//./-}" LXD_NAME="$VM-${DOMAIN_NAME//./-}"
# if the VM doesn't exist, the we emit an error message and hard quit. # if the VM doesn't exist, the we emit an error message and hard quit.
@ -35,45 +30,44 @@ for PROJECT_CHAIN in ${DEPLOYMENT_STRING//,/ }; do
echo "ERROR: there is no VM named '$LXD_NAME'. You probably need to run ss-deploy again." echo "ERROR: there is no VM named '$LXD_NAME'. You probably need to run ss-deploy again."
exit 1 exit 1
fi 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.
# first, let's grab the GIT commit from the remote machine.
export DOMAIN_NAME="$PRIMARY_DOMAIN"
export SITE_PATH="$SITES_PATH/$PRIMARY_DOMAIN"
# source the site path so we know what features it has.
source ../defaults.sh
source "$SITE_PATH/site_definition"
source ./project/domain_env.sh
# now we want to switch the git HEAD of the project subdirectory to the
# version of code that was last used
GIT_COMMIT_ON_REMOTE_HOST="$(ssh ubuntu@$BTCPAY_FQDN cat /home/ubuntu/.ss-githead)"
cd project/
git checkout "$GIT_COMMIT_ON_REMOTE_HOST"
cd -
sleep 5
# run deploy which backups up everything, but doesnt restart any services.
bash -c "./project/deploy.sh --stop --no-cert-renew --backup-archive-path=$BTCPAY_RESTORE_ARCHIVE_PATH"
# call the destroy script. If user proceed, then user data is DESTROYED!
./destroy.sh
cd project/
git checkout "$TARGET_PROJECT_GIT_COMMIT"
cd -
sleep 5
# Then we can run a restore operation and specify the backup archive at the CLI.
bash -c "./project/deploy.sh -y --restore-www --restore-btcpay --backup-archive-path=$BTCPAY_RESTORE_ARCHIVE_PATH"
done 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.
# first, let's grab the GIT commit from the remote machine.
export DOMAIN_NAME="$PRIMARY_DOMAIN"
export SITE_PATH="$SITES_PATH/$PRIMARY_DOMAIN"
# source the site path so we know what features it has.
source ../defaults.sh
source "$SITE_PATH/site_definition"
source ./project/domain_env.sh
# now we want to switch the git HEAD of the project subdirectory to the
# version of code that was last used
GIT_COMMIT_ON_REMOTE_HOST="$(ssh ubuntu@$BTCPAY_FQDN cat /home/ubuntu/.ss-githead)"
cd project/
git checkout "$GIT_COMMIT_ON_REMOTE_HOST"
cd -
sleep 5
# run deploy which backups up everything, but doesnt restart any services.
bash -c "./project/deploy.sh --stop --no-cert-renew --backup-archive-path=$BTCPAY_RESTORE_ARCHIVE_PATH"
# call the destroy script. If user proceed, then user data is DESTROYED!
./destroy.sh
cd project/
git checkout "$TARGET_PROJECT_GIT_COMMIT"
cd -
sleep 5
# Then we can run a restore operation and specify the backup archive at the CLI.
bash -c "./project/deploy.sh -y --restore-www --restore-btcpay --backup-archive-path=$BTCPAY_RESTORE_ARCHIVE_PATH"