Add Hedgedoc backup tasks.
This commit is contained in:
parent
8d197c8e55
commit
21936246b0
5 changed files with 54 additions and 0 deletions
2
env.yml
2
env.yml
|
@ -51,12 +51,14 @@ projects:
|
|||
|
||||
projects_to_backup:
|
||||
- etebase
|
||||
- hedgedoc
|
||||
- synapse
|
||||
- vaultwarden
|
||||
|
||||
|
||||
borg_repodir: "{{ cifs_mounts['backups']['path'] }}/borg"
|
||||
borg_passphrase_file: /etc/borg-passphrase.txt
|
||||
hedgedoc_mysql_root_password_file: "/etc/hedgedoc-mysql-root-password.txt"
|
||||
borg_prune_options: |
|
||||
--keep-within=1d
|
||||
--keep-daily=7
|
||||
|
|
|
@ -21,6 +21,20 @@
|
|||
group: root
|
||||
mode: '600'
|
||||
when: not borg_stat_passphrase_file_result.stat.exists or borg_update_passphrase | default(false) | bool
|
||||
|
||||
- name: Get Hedgedoc MySQL root password file stat
|
||||
stat:
|
||||
path: "{{ hedgedoc_mysql_root_password_file }}"
|
||||
register: hedgedoc_mysql_root_password_file_result
|
||||
|
||||
- name: "Template hedgedoc-mysql-root-password.txt to {{ hedgedoc_mysql_root_password_file }}"
|
||||
template:
|
||||
src: hedgedoc-mysql-root-password.txt
|
||||
dest: "{{ hedgedoc_mysql_root_password_file }}"
|
||||
owner: root
|
||||
group: root
|
||||
mode: '600'
|
||||
when: not hedgedoc_mysql_root_password_file_result.stat.exists or hedgedoc_update_mysql_root_password | default(false) | bool
|
||||
|
||||
- name: Get borg repository stat
|
||||
stat:
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
{{ hedgedoc_secrets['mysql_root_password'] }}
|
32
roles/hedgedoc/tasks/backup.yml
Normal file
32
roles/hedgedoc/tasks/backup.yml
Normal file
|
@ -0,0 +1,32 @@
|
|||
- name: Backup MySQL database
|
||||
community.docker.docker_container_exec:
|
||||
container: hedgedoc-mysql
|
||||
docker_host: "unix:///run/user/{{ host_uid }}/docker.sock"
|
||||
argv:
|
||||
- /bin/bash
|
||||
- "-c"
|
||||
- "mysqldump hedgedoc > /var/lib/mysql/hedgedoc-dump.sql"
|
||||
env:
|
||||
MYSQL_PWD: "{{ hedgedoc_secrets['mysql_root_password'] if hedgedoc_secrets['mysql_root_password'] is defined else lookup('ansible.builtin.file', hedgedoc_mysql_root_password_file) }}"
|
||||
|
||||
- name: Create borg backup
|
||||
command:
|
||||
cmd: |
|
||||
borg create
|
||||
--compression=lzma
|
||||
"{{ borg_repodir }}::{{ role_name }}-{now:%Y-%m-%d_%H-%M-%S}"
|
||||
{{ volumes['hedgedoc_mysql_datadir'] }}/hedgedoc-dump.sql
|
||||
environment:
|
||||
BORG_PASSCOMMAND: "cat {{ borg_passphrase_file }}"
|
||||
become: true
|
||||
|
||||
- name: Prune borg repository
|
||||
command:
|
||||
cmd: |
|
||||
borg prune
|
||||
--glob-archives='{{ role_name }}-*'
|
||||
{{ borg_prune_options }}
|
||||
{{ borg_repodir }}
|
||||
environment:
|
||||
BORG_PASSCOMMAND: "cat {{ borg_passphrase_file }}"
|
||||
become: true
|
|
@ -1,3 +1,8 @@
|
|||
- name: Include backup tasks
|
||||
include_tasks:
|
||||
file: backup.yml
|
||||
when: run_backup | default(false) | bool
|
||||
|
||||
- name: Include update tasks
|
||||
include_tasks:
|
||||
file: update.yml
|
||||
|
|
Loading…
Reference in a new issue