--- - name: Setup Backup Script hosts: all become: yes vars_files: - vault.yml tasks: - name: Erstelle Backup-Verzeichnis file: path: /mnt/docker/backup state: directory mode: '0755' - name: Erstelle Backup-Skript copy: dest: /usr/local/src/backup-to-s3.sh mode: '0750' owner: root group: root content: | #!/bin/bash EMAIL_FROM="mail@notifications.asmodee.de" EMAIL_TO="it-admin@asmodee.de" ARCHIV_NAME="docker05" ARCHIV_PASS="{{ backup_archive_password }}" ARCHIV_PATH="/mnt/docker/backup" ARCHIV_TIME="$(date +%Y-%m-%d_%H-%M-%S)" AWS_BUCKET="de.asmodee.docker05.backup" AWS_SETUP_CP="--storage-class GLACIER" AWS_EXEC="docker run --rm -v /root/.aws:/root/.aws -v ${ARCHIV_PATH}:/aws amazon/aws-cli" BACKUP_DATAS[0]="unifi-backups|/mnt/docker/unifi-controller/data/data/backup/" # Testings test -f /root/.aws/config || exit 1 test -f /root/.aws/credentials || exit 1 test -d "${ARCHIV_PATH}" || exit 1 test -x "$(which 7z)" || exit 1 test -x "$(which docker)" || exit 1 # CleanUp previews Backups find "${ARCHIV_PATH}" -maxdepth 1 -type f -name "*.7z" -delete # Backup Attachements (only on Sunday!) if [[ $(date +%u) -eq 7 ]]; then for BACKUP_DATA in "${BACKUP_DATAS[@]}"; do mapfile -td \| ENV_MAPFILE <<<"$BACKUP_DATA" DATA_NAME=$(echo ${ENV_MAPFILE[0]}) DATA_PATH=$(echo ${ENV_MAPFILE[1]}) 7z a -p"${ARCHIV_PASS}" -mhe=on "${ARCHIV_PATH}/${ARCHIV_NAME}_${ARCHIV_TIME}_${DATA_NAME}-data.7z" "${DATA_PATH}" if [ $? -eq 0 ]; then $AWS_EXEC s3 cp "${ARCHIV_NAME}_${ARCHIV_TIME}_${DATA_NAME}-data.7z" s3://${AWS_BUCKET}/ ${AWS_SETUP_CP} else rm "${ARCHIV_PATH}/${ARCHIV_NAME}_${ARCHIV_TIME}_${DATA_NAME}-data.7z" echo "ERROR: ${DATA_NAME} Backup failed!"; exit 1; fi done fi # Email Notification echo "Subject:[$ARCHIV_NAME] Cloud Backup From:$ARCHIV_NAME <$EMAIL_FROM> To: $EMAIL_TO Mime-Version: 1.0 Content-Type: text/html Charset: UTF-8
Backup Files: