Skip to content
Snippets Groups Projects

abra_app_move

  • Clone with SSH
  • Clone with HTTPS
  • Embed
  • Share
    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
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Please register or to comment