diff options
author | EuAndreh <eu@euandre.org> | 2019-06-05 21:57:28 -0300 |
---|---|---|
committer | EuAndreh <eu@euandre.org> | 2019-06-05 21:57:28 -0300 |
commit | 6df3a61c1976f7ce57080ddc530fa800d2ba12c2 (patch) | |
tree | fd8aa35db5a38780604f476ba4e1c8306a6dc370 /scripts | |
parent | Add Ansible to shell derivation (diff) | |
download | toph-6df3a61c1976f7ce57080ddc530fa800d2ba12c2.tar.gz toph-6df3a61c1976f7ce57080ddc530fa800d2ba12c2.tar.xz |
Restore from backup in fresh volume
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/box/create-backup.env.sh (renamed from scripts/box/run-backup.env.sh) | 3 | ||||
-rwxr-xr-x | scripts/box/restore-backup.env.sh | 18 | ||||
-rwxr-xr-x | scripts/ci/provision.sh | 35 |
3 files changed, 46 insertions, 10 deletions
diff --git a/scripts/box/run-backup.env.sh b/scripts/box/create-backup.env.sh index bd506e9..c9b2d3d 100755 --- a/scripts/box/run-backup.env.sh +++ b/scripts/box/create-backup.env.sh @@ -4,10 +4,11 @@ export BORG_REMOTE_PATH="${BORG_REMOTE_PATH}" export BORG_PASSPHRASE="${BORG_PASSPHRASE}" # The configured $BORG_REPO is already the rsync remote. # No need to send the files after the backup is done. +echo xiu borg create \ --verbose \ --stats \ --progress \ --compression lzma,6 \ "${BORG_REPO}::{hostname}-{now}-${VPS_COMMIT_SHA}" \ - "${VOLUME_HOME}" + ${VOLUME_HOME}/* diff --git a/scripts/box/restore-backup.env.sh b/scripts/box/restore-backup.env.sh new file mode 100755 index 0000000..b12d4f0 --- /dev/null +++ b/scripts/box/restore-backup.env.sh @@ -0,0 +1,18 @@ +#!/usr/bin/env bash + +export BORG_REMOTE_PATH="${BORG_REMOTE_PATH}" +export BORG_PASSPHRASE="${BORG_PASSPHRASE}" + +pushd "$(mktemp -d)" +ARCHIVE="$(borg list "${BORG_REPO}" --last 1 --short)" + +echo "Extracting archive ${ARCHIVE}" +borg extract \ + --verbose \ + --stats \ + --progress \ + "${BORG_REPO}"::"${ARCHIVE}" +echo "Done." + +mv home/vps/volumes/* /home/vps/volumes/ +popd diff --git a/scripts/ci/provision.sh b/scripts/ci/provision.sh index 1000a55..87bb4c5 100755 --- a/scripts/ci/provision.sh +++ b/scripts/ci/provision.sh @@ -8,25 +8,38 @@ cd ../../ VPS_COMMIT_SHA="$(git rev-parse HEAD)" export VPS_COMMIT_SHA +# FIXME: use Ansible instead +setup_borg_files() { + local -r template_file="${1}" + local -r destination_name="${2}" + scp ./secrets/borg/borg-remote.pub "$TLD":/root/.ssh/id_rsa.pub + scp ./secrets/borg/borg-remote "$TLD":/root/.ssh/id_rsa + scp ./secrets/borg/known-hosts.txt "$TLD":/root/.ssh/known_hosts + ssh "$TLD" 'chmod 600 /root/.ssh/id_rsa' + envsubst < "${template_file}" | ssh "$TLD" "cat > /home/vps/${destination_name} && chmod +x /home/vps/${destination_name}" + ssh "$TLD" "chmod +x /home/vps/${destination_name}" +} + echo "Shutting down running containers and backing up data..." ssh "$TLD" "cd /home/vps/ && docker-compose down" -scp ./secrets/borg/borg-remote.pub "$TLD":/root/.ssh/id_rsa.pub -scp ./secrets/borg/borg-remote "$TLD":/root/.ssh/id_rsa -scp ./secrets/borg/known-hosts.txt "$TLD":/root/.ssh/known_hosts -ssh "$TLD" 'chmod 600 /root/.ssh/id_rsa' -envsubst < ./scripts/box/run-backup.env.sh | ssh "$TLD" 'cat > /home/vps/run-backup.sh && chmod +x /home/vps/run-backup.sh' -ssh "$TLD" /home/vps/run-backup.sh +setup_borg_files ./scripts/box/create-backup.env.sh create-backup.sh +ssh "$TLD" /home/vps/create-backup.sh echo "Done." -echo "Running 'terraform plan' and storing the planfile..." +echo "Initializing Terraform..." terraform --version terraform init +echo "Done." + +echo "Destroying existing infrastructure..." +terraform destroy -input=false -auto-approve +echo "Done." + +echo "Running 'terraform plan' and storing the planfile..." mkdir -p "../vps-state/secrets/plan-files/" PLAN_FILE_NAME="$(date -Iseconds)-$VPS_COMMIT_SHA.tfplan" PLAN_FILE_PATH="../vps-state/secrets/plan-files/$PLAN_FILE_NAME" - terraform plan -input=false -out="$PLAN_FILE_PATH" - pushd ../vps-state/ git add "secrets/plan-files/$PLAN_FILE_NAME" git commit -m "CI: add .tfplan plan file for CI run $VPS_COMMIT_SHA" @@ -46,6 +59,10 @@ git push origin master popd echo "Done." +echo "Restoring data from backup into volume..." +setup_borg_files ./scripts/box/restore-backup.env.sh restore-backup.sh +echo "Done." + echo "Running the Ansible playbook..." ansible-playbook provision.yaml echo "Done." |