--- - name: Ensure group backups exists ansible.builtin.group: name: "{{ galera_mariadb_backups_group_name }}" state: present gid: "{{ galera_mariadb_backups_group_gid | default(omit) }}" - name: Create mariadb back up directory ansible.builtin.file: path: "{{ galera_mariadb_backups_path }}" state: "directory" owner: "mysql" group: "{{ galera_mariadb_backups_group_name }}" mode: "0750" - name: Template out mariadb backup script ansible.builtin.template: src: "mariabackup_script.py.j2" dest: "{{ galera_mariadb_backups_path }}/mariabackup_script.py" mode: "0755" - name: Template out mariabackup cnf file ansible.builtin.template: src: "mariabackup.cnf.j2" dest: "{{ galera_mariadb_backups_cnf_file }}" mode: "0644" - name: Create service and timer for full backups ansible.builtin.import_role: name: systemd_service vars: systemd_service_enabled: true systemd_service_restart_changed: false systemd_overrides: "{{ galera_mariadb_backups_full_init_overrides }}" systemd_user_name: "mysql" systemd_group_name: "{{ galera_mariadb_backups_group_name }}" systemd_services: - service_name: "mariabackup-full" execstarts: - /usr/bin/python3 {{ galera_mariadb_backups_path }}/mariabackup_script.py {{ galera_mariadb_backups_path }} --full-backup --copies={{ galera_mariadb_backups_full_copies }} --suffix={{ galera_mariadb_backups_suffix }} --defaults-file={{ galera_mariadb_backups_cnf_file }} --compress={{ galera_mariadb_backups_compress }} --compressor={{ galera_mariadb_backups_compressor }} environment: UMASK: "0640" UMASK_DIR: "0750" program_sandboxing: RuntimeDirectory: "mariabackup-galera" timer: state: "started" options: OnCalendar: "{{ galera_mariadb_backups_full_on_calendar }}" RandomizedDelaySec: "{{ galera_mariadb_backups_full_randomized_delay_sec }}" Persistent: true Unit: "mariabackup-full.service" - name: Create service and timer for incremental backups ansible.builtin.import_role: name: systemd_service vars: systemd_service_enabled: true systemd_service_restart_changed: false systemd_overrides: "{{ galera_mariadb_backups_increment_init_overrides }}" systemd_user_name: "mysql" systemd_group_name: "{{ galera_mariadb_backups_group_name }}" systemd_services: - service_name: "mariabackup-increment" execstarts: - /usr/bin/python3 {{ galera_mariadb_backups_path }}/mariabackup_script.py {{ galera_mariadb_backups_path }} --increment --copies={{ galera_mariadb_backups_full_copies }} --suffix={{ galera_mariadb_backups_suffix }} --defaults-file={{ galera_mariadb_backups_cnf_file }} --compress={{ galera_mariadb_backups_compress }} --compressor={{ galera_mariadb_backups_compressor }} environment: UMASK: "0640" UMASK_DIR: "0750" program_sandboxing: RuntimeDirectory: "mariabackup-galera" timer: state: "started" options: OnCalendar: "{{ galera_mariadb_backups_increment_on_calendar }}" RandomizedDelaySec: "{{ galera_mariadb_backups_increment_randomized_delay_sec }}" Persistent: true Unit: "mariabackup-increment.service" when: galera_mariadb_backups_increment_on_calendar is defined - name: Grant access to the database for the backup service delegate_to: "{{ galera_db_setup_host }}" vars: ansible_python_interpreter: "{{ galera_db_setup_python_interpreter }}" community.mysql.mysql_user: name: "{{ galera_mariadb_backups_user }}" password: "{{ galera_mariadb_backups_password }}" host: "%" priv: "*.*:RELOAD,PROCESS,LOCK TABLES,REPLICATION CLIENT" append_privs: true login_unix_socket: "{{ galera_unix_socket }}" check_hostname: false no_log: true run_once: true