abra_app_move
The snippet can be accessed without any authentication.
Authored by
fauno
Edited
abra_app_move 1.21 KiB
#!/bin/bash
set -e
usage() {
echo -e "${0##*/} -o origin.serv.er -d destinat.ion [-r new-app.name.destinat.ion] app.name.serv.er"
exit 1
}
while getopts "o:d:a:r:h" arg; do
case $arg in
o) ORIGIN="$OPTARG" ;;
d) DESTINATION="${OPTARG}" ;;
r) RENAME="${OPTARG}" ;;
h) usage ;;
esac
done
let OPTIND--; shift ${OPTIND}
APP="$1"
# don't rename by default
RENAME="${RENAME:-${APP}}"
# required arguments
test -n "${ORIGIN}" || usage
test -n "${DESTINATION}" || usage
test -n "${APP}" || usage
test -n "${RENAME}"
# undeploy
abra app undeploy ${APP}
# ssh-agent
WITH_AGENT=false
if test -z "${SSH_AUTH_SOCK}"; then
eval "$(ssh-agent)"
WITH_AGENT=true
fi
ssh-add -l &>/dev/null || ssh-add
# find volumes and copy them to new server
abra app volume ls -n ${APP} | tail -n +4 | head -n -1 | cut -d "|" -f2 | while read volume; do
ssh -A -o StrictHostKeyChecking=accept-new ${ORIGIN} rsync -avHAX /var/lib/docker/volumes/${volume}/ ${DESTINATION}:/var/lib/docker/volumes/${volume}/
done
# copy env file
cp -a ~/.abra/servers/${ORIGIN}/${APP}.env ~/.abra/servers/${DESTINATION}/${RENAME}.env
# TODO: copy secrets
# remove local ssh-agent. weird logic to cope with set -e
test ! ${WITH_AGENT} || ssh-agent -k
Please register or sign in to comment