docker-borgbackup-cron/backup_script.sh

53 wiersze
2.0 KiB
Bash

#!/bin/bash
send_email_on_error() {
ansible-playbook /var/smtp-email-playbook/main.yml \
-e "smtp_user=$SMTP_USER" \
-e "smtp_password=$SMTP_PASSWORD" \
-e "smtp_port=$SMTP_PORT" \
-e "smtp_host=$SMTP_HOST" \
-e "mail_to='$MAIL_TO'" \
-e "mail_body='$MAIL_BODY'" \
-e "mail_subject='$MAIL_SUBJECT'"
}
# Only handle errors if the required environment variables are defined to send an email
if [[ ! -z "$SMTP_USER" && ! -z "$SMTP_PASSWORD" && ! -z "$SMTP_PORT" && ! -z "$SMTP_HOST" && ! -z "$MAIL_TO" && ! -z "$MAIL_BODY" && ! -z "$MAIL_SUBJECT" ]]; then
set -o errexit -o errtrace
trap send_email_on_error ERR
fi
if [[ ! -z "$MYSQL_USER" && ! -z "$MYSQL_DATABASE" && ! -z "$MYSQL_PASSWORD" && ! -z "$MYSQL_HOST" ]]; then
ansible-playbook /var/mysql-dump-playbook/main.yml \
-e "mysql_dumps_target_folder=$LOCAL_FOLDER" \
-e "prune=yes" \
-e "db_user=$MYSQL_USER" \
-e "db_password=$MYSQL_PASSWORD" \
-e "db_host=$MYSQL_HOST" \
-e "db_name=$MYSQL_DATABASE"
fi
if [[ ! -z "$MONGO_HOST" && ! -z "$MONGO_DATABASE" && ! -z "$MONGO_PORT" ]]; then
ansible-playbook /var/mongo-dump-playbook/main.yml \
-e "mongo_dumps_target_folder=$LOCAL_FOLDER" \
-e "prune=yes" \
-e "db_port=$MONGO_PORT" \
-e "db_host=$MONGO_HOST" \
-e "db_name=$MONGO_DATABASE"
fi
if [[ ! -z "$ELASTICSEARCH_HOST" && ! -z "$ELASTICSEARCH_REPOSITORY" && ! -z "$ELASTICSEARCH_PORT" ]]; then
ansible-playbook /var/elasticsearch-snapshot-playbook/main.yml \
-e "elasticsearch_port=$ELASTICSEARCH_PORT" \
-e "elasticsearch_host=$ELASTICSEARCH_HOST" \
-e "elasticsearch_repository=$ELASTICSEARCH_REPOSITORY"
fi
ansible-playbook /var/borg-backup-playbook/main.yml \
-e "ssh_connection=$SSH_CONNECTION" \
-e "private_key_path=$PRIVATE_KEY_PATH" \
-e "borg_repo_path=$BORG_REPO_PATH" \
-e "borg_repo_name=$BORG_REPO_NAME" \
-e "borg_passphrase=$BORG_PASSPHRASE" \
-e "local_folder=$LOCAL_FOLDER"