diff --git a/docs/rolereference.rst b/docs/rolereference.rst index 7cc4d804604ec463abf1b318521fe64e90f9172f..57435f31b1676d1b7ffedcca39c75cdbb7f3e127 100644 --- a/docs/rolereference.rst +++ b/docs/rolereference.rst @@ -1326,6 +1326,16 @@ The role implements the following: database. Username is set to be same as the name of database. +Backups +~~~~~~~ + +If the backup for this role has been enabled, the following paths are backed-up: + +**/srv/backup/maraidb/{{ db_name }}.sql** + Dump of the database. Database dump is created every day at 01:45 in the + morning. + + Parameters ~~~~~~~~~~ diff --git a/roles/database/defaults/main.yml b/roles/database/defaults/main.yml new file mode 100644 index 0000000000000000000000000000000000000000..dd7033087a0b2536ec2022b6484c6638a3726018 --- /dev/null +++ b/roles/database/defaults/main.yml @@ -0,0 +1,3 @@ +--- + +enable_backup: False \ No newline at end of file diff --git a/roles/database/meta/main.yml b/roles/database/meta/main.yml index 873860b6a732d202899b6ca78b98b93fecdc0a45..8fd090888ec0bde2c7c909314addd7aefdc78b4d 100644 --- a/roles/database/meta/main.yml +++ b/roles/database/meta/main.yml @@ -1,3 +1,7 @@ --- -allow_duplicates: yes \ No newline at end of file +allow_duplicates: yes + +dependencies: + - role: backup_client + when: enable_backup \ No newline at end of file diff --git a/roles/database/tasks/backup.yml b/roles/database/tasks/backup.yml new file mode 100644 index 0000000000000000000000000000000000000000..e867d1608ab2e661d36023b4c21e7facefc1ca32 --- /dev/null +++ b/roles/database/tasks/backup.yml @@ -0,0 +1,20 @@ +--- + +- name: Create directory for storing MariaDB database dumps + file: path="{{ item }}" state=directory + owner=root group=root mode=700 + with_items: + - "/srv" + - "/srv/backup" + - "/srv/backup/mariadb" + +- name: Deploy include patterns to backup + template: src="backup_patterns.j2" dest="/etc/duply/main/patterns/{{ db_name }}" + owner="root" group="root" mode="700" + notify: + - Assemble Duply include patterns + +- name: Create crontab entry for creating MariaDB database dumps every day at 01:45 + cron: name="mariadb_{{ db_name }}" cron_file="mariadb_{{ db_name }}" hour=1 minute=45 + job="/usr/bin/mysqldump \"{{ db_name }}\" > /srv/backup/mariadb/\"{{ db_name }}\".sql" + state=present user=root diff --git a/roles/database/tasks/main.yml b/roles/database/tasks/main.yml index 1a4062933d6248bf65f362d35226836280e29533..3f83e12c4832f3ae03e42b3f2a56d9b40037ab8c 100644 --- a/roles/database/tasks/main.yml +++ b/roles/database/tasks/main.yml @@ -6,3 +6,7 @@ - name: "Create database user {{ db_name }}" mysql_user: name="{{ db_name }}" password="{{ db_password }}" priv=*.*:ALL state=present + +- name: Enable backup + include: backup.yml + when: enable_backup \ No newline at end of file diff --git a/roles/database/templates/backup_patterns.j2 b/roles/database/templates/backup_patterns.j2 new file mode 100644 index 0000000000000000000000000000000000000000..280607f988e18adb4bc2e785cbe1c8938375f378 --- /dev/null +++ b/roles/database/templates/backup_patterns.j2 @@ -0,0 +1 @@ +/srv/backup/mariadb/{{ db_name }}.sql \ No newline at end of file