From a4301c0a1c92dc9b0eafa844fa84d2ea695c806b Mon Sep 17 00:00:00 2001 From: Derek Smith Date: Sun, 2 Apr 2023 09:41:42 -0400 Subject: [PATCH] Remove iteration over PROJECTS. --- deployment/destroy.sh | 47 ++++----------- deployment/show.sh | 42 ++++++------- deployment/update.sh | 134 ++++++++++++++---------------------------- 3 files changed, 71 insertions(+), 152 deletions(-) diff --git a/deployment/destroy.sh b/deployment/destroy.sh index af7e331..7af25a6 100755 --- a/deployment/destroy.sh +++ b/deployment/destroy.sh @@ -31,25 +31,7 @@ done . ./remote_env.sh -for PROJECT_CHAIN in ${DEPLOYMENT_STRING//,/ }; do - NO_PARENS="${PROJECT_CHAIN:1:${#PROJECT_CHAIN}-2}" - PROJECT_PREFIX=$(echo "$NO_PARENS" | cut -d'|' -f1) - BITCOIN_CHAIN=$(echo "$NO_PARENS" | cut -d'|' -f2) - - PROJECT_NAME="$PROJECT_PREFIX-$BITCOIN_CHAIN" - PROJECT_PATH="$PROJECTS_DIR/$PROJECT_NAME" - - # if the user sets USER_TARGET_PROJECT, let's ensure the project exists. - if [ -n "$USER_TARGET_PROJECT" ]; then - if [ "$PROJECT_NAME" != "$USER_TARGET_PROJECT" ]; then - continue - fi - fi - - export PROJECT_NAME="$PROJECT_NAME" - export PROJECT_PATH="$PROJECT_PATH" - - . ./project_env.sh +. ./project_env.sh if ! lxc info | grep "project:" | grep -q "$PROJECT_NAME"; then if lxc project list | grep -q "$PROJECT_NAME"; then @@ -90,22 +72,13 @@ for PROJECT_CHAIN in ${DEPLOYMENT_STRING//,/ }; do done - if lxc network list -q | grep -q ss-ovn; then - lxc network delete ss-ovn - fi +if lxc network list -q | grep -q ss-ovn; then + lxc network delete ss-ovn +fi - if ! lxc info | grep "project:" | grep -q default; then - lxc project switch default - fi - - if lxc project list | grep -q "$PROJECT_NAME"; then - lxc project delete "$PROJECT_NAME" - fi - - # delete the base image so it can be created. - if lxc list | grep -q "$BASE_IMAGE_VM_NAME"; then - lxc delete -f "$BASE_IMAGE_VM_NAME" - # remove the ssh known endpoint else we get warnings. - ssh-keygen -f "$SSH_HOME/known_hosts" -R "$LXD_NAME" - fi -done \ No newline at end of file +# delete the base image so it can be created. +if lxc list | grep -q "$BASE_IMAGE_VM_NAME"; then + lxc delete -f "$BASE_IMAGE_VM_NAME" --project default + # remove the ssh known endpoint else we get warnings. + ssh-keygen -f "$SSH_HOME/known_hosts" -R "$BASE_IMAGE_VM_NAME" +fi diff --git a/deployment/show.sh b/deployment/show.sh index ea6d59b..af01de6 100755 --- a/deployment/show.sh +++ b/deployment/show.sh @@ -7,7 +7,6 @@ cd "$(dirname "$0")" . ./remote_env.sh - echo "Global Settings:" lxc image list @@ -17,29 +16,22 @@ lxc storage volume list ss-base echo echo -for PROJECT_CHAIN in ${DEPLOYMENT_STRING//,/ }; do - NO_PARENS="${PROJECT_CHAIN:1:${#PROJECT_CHAIN}-2}" - PROJECT_PREFIX=$(echo "$NO_PARENS" | cut -d'|' -f1) - BITCOIN_CHAIN=$(echo "$NO_PARENS" | cut -d'|' -f2) - PROJECT_NAME="$PROJECT_PREFIX-$BITCOIN_CHAIN" +export PROJECT_NAME="$(lxc info | grep "project:" | awk '{print $2}')" +export PROJECT_PATH="$PROJECTS_PATH/$PROJECT_NAME" - echo - echo - echo "Project: $PROJECT_NAME" - echo "----------------------------------------------------------" - if ! lxc info | grep "project:" | grep -q "$PROJECT_NAME"; then - if lxc project list | grep -q "$PROJECT_NAME"; then - lxc project switch "$PROJECT_NAME" - fi - fi - echo " Networks:" - lxc network list - echo - echo " Profiles:" - lxc profile list - echo - echo " Instances (VMs):" - lxc list - echo "----------------------------------------------------------" -done \ No newline at end of file + +echo +echo +echo "Project: $PROJECT_NAME" +echo "----------------------------------------------------------" + +echo " Networks:" +lxc network list +echo +echo " Profiles:" +lxc profile list +echo +echo " Instances (VMs):" +lxc list +echo "----------------------------------------------------------" diff --git a/deployment/update.sh b/deployment/update.sh index 0cbdb23..5fbe1dd 100755 --- a/deployment/update.sh +++ b/deployment/update.sh @@ -22,108 +22,62 @@ if [ "$RESPONSE" != "y" ]; then exit 0 fi - -USER_TARGET_PROJECT= - -# grab any modifications from the command line. -for i in "$@"; do - case $i in - --project=*) - USER_TARGET_PROJECT="${i#*=}" - shift - ;; - - *) - echo "Unexpected option: $1" - exit 1 - ;; - esac -done - - . ../defaults.sh . ./remote_env.sh -for PROJECT_CHAIN in ${DEPLOYMENT_STRING//,/ }; do - 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 - PROJECT_NAME="$PROJECT_PREFIX-$BITCOIN_CHAIN" - PROJECT_PATH="$PROJECTS_DIR/$PROJECT_NAME" +# 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 user sets USER_TARGET_PROJECT, let's ensure the project exists. - if [ -n "$USER_TARGET_PROJECT" ]; then - if ! lxc project list | grep -q "$USER_TARGET_PROJECT"; then - echo "ERROR: the project does not exist! Nothing to update." - exit 1 - fi - - if [ "$PROJECT_NAME" != "$USER_TARGET_PROJECT" ]; then - continue - fi + # 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 - export PROJECT_NAME="$PROJECT_NAME" - export PROJECT_PATH="$PROJECT_PATH" +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" - . ./project_env.sh +# 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. - # 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//./-}" +# first, let's grab the GIT commit from the remote machine. +export DOMAIN_NAME="$PRIMARY_DOMAIN" +export SITE_PATH="$SITES_PATH/$PRIMARY_DOMAIN" - # 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 +# source the site path so we know what features it has. +source ../defaults.sh +source "$SITE_PATH/site.conf" +source ./project/domain_env.sh - 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" +# 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/ +echo "INFO: switch the 'project' repo to commit prior commit '$GIT_COMMIT_ON_REMOTE_HOST'" +echo " This allows Sovereign Stack to can grab a backup using the version of the code" +echo " that was used when the deployment was created." +git checkout "$GIT_COMMIT_ON_REMOTE_HOST" +cd - - # 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. +# 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" - # first, let's grab the GIT commit from the remote machine. - export DOMAIN_NAME="$PRIMARY_DOMAIN" - export SITE_PATH="$SITES_PATH/$PRIMARY_DOMAIN" +# call the destroy script. This brings down the existing deployment. Does NOT destroy docker data. +bash -c "./destroy.sh" + +cd project/ +echo "INFO: switching the 'project' repo back to the most recent commit '$TARGET_PROJECT_GIT_COMMIT'" +echo " That way new deployments will be instantiated using the latest codebase." +git checkout "$TARGET_PROJECT_GIT_COMMIT" +cd - - # source the site path so we know what features it has. - source ../defaults.sh - source "$SITE_PATH/site.conf" - 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/ - echo "INFO: switch the 'project' repo to commit prior commit '$GIT_COMMIT_ON_REMOTE_HOST'" - echo " This allows Sovereign Stack to can grab a backup using the version of the code" - echo " that was used when the deployment was created." - git checkout "$GIT_COMMIT_ON_REMOTE_HOST" - cd - - - # run deploy which backups up everything, but doesnt restart any services. - bash -c "./project/deploy.sh --project=$PROJECT_NAME --stop --no-cert-renew --backup-archive-path=$BTCPAY_RESTORE_ARCHIVE_PATH" - - # call the destroy script. If user proceed, then user data is DESTROYED! - bash -c "./destroy.sh --project=$PROJECT_NAME" - - cd project/ - echo "INFO: switching the 'project' repo back to the most recent commit '$TARGET_PROJECT_GIT_COMMIT'" - echo " That way new deployments will be instantiated using the latest codebase." - git checkout "$TARGET_PROJECT_GIT_COMMIT" - cd - - - # Then we can run a restore operation and specify the backup archive at the CLI. - bash -c "./project/deploy.sh --project=$PROJECT_NAME -y --restore-www --restore-btcpay --backup-archive-path=$BTCPAY_RESTORE_ARCHIVE_PATH" - -done \ No newline at end of file +# 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"