diff --git a/ansible-create_backup_script.yml b/ansible-create_backup_script.yml new file mode 100644 index 0000000..5a459db --- /dev/null +++ b/ansible-create_backup_script.yml @@ -0,0 +1,74 @@ +--- +- 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: