From c2b060df9e281f70dcbd7042652542574e88000d Mon Sep 17 00:00:00 2001 From: Felix Stupp Date: Fri, 9 Aug 2019 15:22:09 +0200 Subject: [PATCH] common: Added support for backup databases --- roles/common/files/backup_rename.sh | 9 +++++++++ roles/common/tasks/helpers.yml | 11 +++++++++++ roles/common/tasks/main.yml | 11 +++++++++++ roles/common/tasks/packages.yml | 1 + roles/common/templates/backup_database.sh | 9 +++++++++ 5 files changed, 41 insertions(+) create mode 100644 roles/common/files/backup_rename.sh create mode 100644 roles/common/templates/backup_database.sh diff --git a/roles/common/files/backup_rename.sh b/roles/common/files/backup_rename.sh new file mode 100644 index 0000000..caf237e --- /dev/null +++ b/roles/common/files/backup_rename.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +set -e; + +dir=$(dirname "$1"); +date=$(date +%Y-%m-%d-%H-%M); +name=$(basename "$1"); + +mv "$1" "$dir/$date-$name"; diff --git a/roles/common/tasks/helpers.yml b/roles/common/tasks/helpers.yml index 97eb84f..17bd80e 100644 --- a/roles/common/tasks/helpers.yml +++ b/roles/common/tasks/helpers.yml @@ -16,4 +16,15 @@ group: root mode: "u=rwx,g=rx,o=rx" loop: + - backup_rename.sh - gpg_import_url_key.sh + +- name: Build and upload template helper scripts + template: + src: "{{ item }}" + dest: "{{ global_helper_directory }}/{{ item }}" + owner: root + group: root + mode: "u=rwx,g=rx,o=rx" + loop: + - backup_database.sh diff --git a/roles/common/tasks/main.yml b/roles/common/tasks/main.yml index 0342d0c..14585b6 100644 --- a/roles/common/tasks/main.yml +++ b/roles/common/tasks/main.yml @@ -39,3 +39,14 @@ owner: root group: root mode: "u=rwx,g=rx" + +- name: Create backups directories + file: + path: "{{ item }}" + state: directory + owner: root + group: root + mode: "u=rwx,g=rx,o=rx" + loop: + - "{{ backups_directory }}" + - "{{ backups_databases_directory }}" diff --git a/roles/common/tasks/packages.yml b/roles/common/tasks/packages.yml index 983c765..125296d 100644 --- a/roles/common/tasks/packages.yml +++ b/roles/common/tasks/packages.yml @@ -5,6 +5,7 @@ name: - acl - apt-transport-https + - buffer - ca-certificates - cron - curl diff --git a/roles/common/templates/backup_database.sh b/roles/common/templates/backup_database.sh new file mode 100644 index 0000000..1ed814c --- /dev/null +++ b/roles/common/templates/backup_database.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +set -e + +file={{ backups_databases_directory | quote }}"/$1.sql.gpg"; + +mysqldump --opt --databases "$1" | buffer -m 128M -s 128K | gpg --quiet --no-verbose --encrypt --recipient 73D09948B2392D688A45DC8393E1BD26F6B02FB7 --trust-model always > "$file"; +chmod u+r-wx,g+r-wx,o+r-wx "$file"; +{{ global_helper_directory | quote }}/backup_rename.sh "$file";