Add support for mysql dumps

master
Baptiste Bouchereau 2019-03-04 20:54:11 +13:00
rodzic 6c295c60d7
commit 3770ad6443
4 zmienionych plików z 42 dodań i 9 usunięć

Wyświetl plik

@ -11,6 +11,10 @@ RUN apt-get install -y \
build-essential \
borgbackup
# Install packages for mysqldump
RUN apt-get install -y mysql-client
RUN pip install PyMySql
# Install cron
RUN apt-get install -y cron

Wyświetl plik

@ -1,7 +1,8 @@
Borg backup cron
=================
A docker image to backup periodically a folder using borg
A docker image to backup periodically a folder using borg.
Additionnally this image can dump a mysql database in the same folder beforehand.
Build
-----
@ -34,9 +35,21 @@ docker run \
ovski/borgbackup-cron
```
With mysql dump
```bash
docker run \
# ... other options
-e MYSQL_USER=/var/folder_to_backup \
-e MYSQL_DATABASE=/var/folder_to_backup \
-e MYSQL_PASSWORD=/var/folder_to_backup \
ovski/borgbackup-cron
```
You can also use secrets in a stack to store sensitive information.
Instead of specifiying environment variables, create the following secrets in /var/secrets (default location):
```
/run/secrets/borg_passphrase
/run/secrets/borg_passphrase instead of BORG_PASSPHRASE
/run/secrets/db_password instead of MYSQL_PASSWORD
```

Wyświetl plik

@ -1,9 +1,19 @@
#!/bin/bash
if [[ ! -z "$MYSQL_USER" && ! -z "$MYSQL_DATABASE" && ! -z "$MYSQL_PASSWORD" ]]; then
ansible-playbook /var/mysql-dump-playbook/main.yml \
-e "mysql_dumps_target_folder=$LOCAL_FOLDER/mysql_dumps" \
-e "prune=yes" \
-e "db_user=$MYSQL_USER" \
-e "db_password=$MYSQL_PASSWORD" \
-e "db_host=mysql" \
-e "db_name=$MYSQL_DATABASE"
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
-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"

Wyświetl plik

@ -14,8 +14,9 @@ if [[ -n "$SSH_KNOWN_HOSTS" ]]; then
fi
# Clone ansible playbooks
echo "Cloning ansible gitlab repository"
echo "Cloning ansible gitlab repositories"
git clone https://gitlab.com/ovski-projects/infra/ansible-playbooks/borg-backup.git /var/borg-backup-playbook
git clone https://gitlab.com/ovski-projects/infra/ansible-playbooks/mysql-dump.git /var/mysql-dump-playbook
# Set borg passphrase env variable
if [[ -f /run/secrets/borg_passphrase ]]; then
@ -26,6 +27,11 @@ elif [[ -z "$BORG_PASSPHRASE" ]]; then
exit 1
fi
if [[ -f /run/secrets/db_password ]]; then
echo "Setting MYSQL_PASSWORD env variable from secret"
export MYSQL_PASSWORD=$(cat /run/secrets/db_password)
fi
# Make env variables accessible in crontab
declare -p | grep -Ev 'BASHOPTS|BASH_VERSINFO|EUID|PPID|SHELLOPTS|UID' > /container.env