diff --git a/roles/wal-g-pg/defaults/main.yml b/roles/wal-g-pg/defaults/main.yml index 35aa45d..3b51502 100644 --- a/roles/wal-g-pg/defaults/main.yml +++ b/roles/wal-g-pg/defaults/main.yml @@ -1,2 +1,7 @@ wal_g_pg_backup_timer_schedule: >- *-*-* 03:56 + +wal_g_pg_delete_timer_schedule: >- + weekly +wal_g_pg_delete_args: >- + retain FIND_FULL 7 diff --git a/roles/wal-g-pg/handlers/main.yml b/roles/wal-g-pg/handlers/main.yml index 5d1800e..7e48233 100644 --- a/roles/wal-g-pg/handlers/main.yml +++ b/roles/wal-g-pg/handlers/main.yml @@ -6,3 +6,8 @@ systemd: name: wal-g-backup.timer state: restarted + +- name: restart wal-g delete timer + systemd: + name: wal-g-delete.timer + state: restarted diff --git a/roles/wal-g-pg/meta/main.yml b/roles/wal-g-pg/meta/main.yml index 6b7c3b9..948dd1c 100644 --- a/roles/wal-g-pg/meta/main.yml +++ b/roles/wal-g-pg/meta/main.yml @@ -1,2 +1,3 @@ dependencies: - dch-yum +- systemd-base diff --git a/roles/wal-g-pg/tasks/main.yml b/roles/wal-g-pg/tasks/main.yml index 767c096..91381c7 100644 --- a/roles/wal-g-pg/tasks/main.yml +++ b/roles/wal-g-pg/tasks/main.yml @@ -55,6 +55,30 @@ tags: - systemd +- name: ensure wal-g delete timer is installed + template: + src: wal-g-delete.timer.j2 + dest: /etc/systemd/system/wal-g-delete.timer + owner: root + group: root + mode: u=rw,go=r + notify: + - reload systemd + - restart wal-g delete timer + tags: + - systemd +- name: ensure wal-g delete service is installed + template: + src: wal-g-delete.service.j2 + dest: /etc/systemd/system/wal-g-delete.service + owner: root + group: root + mode: u=rw,go=r + notify: + - reload systemd + tags: + - systemd + - name: ensure wal-g backup timer is enabled systemd: name: wal-g-backup.timer @@ -62,6 +86,13 @@ tags: - service +- name: ensure wal-g delete timer is enabled + systemd: + name: wal-g-delete.timer + enabled: true + tags: + - service + - name: flush handlers meta: flush_handlers @@ -71,3 +102,10 @@ state: started tags: - service + +- name: ensure wal-g delete timer is running + systemd: + name: wal-g-delete.timer + state: started + tags: + - service diff --git a/roles/wal-g-pg/templates/wal-g-delete.service.j2 b/roles/wal-g-pg/templates/wal-g-delete.service.j2 new file mode 100644 index 0000000..9ab0b81 --- /dev/null +++ b/roles/wal-g-pg/templates/wal-g-delete.service.j2 @@ -0,0 +1,10 @@ +[Unit] +Description=PostgreSQL Backup delete with WAL-G +Wants=network-online.target +After=network-online.target + +[Service] +Type=oneshot +Environment=PGDATA=/var/lib/pgsql/data +ExecStart=/usr/bin/wal-g-pg delete --config /etc/postgresql/wal-g.yml {{ wal_g_pg_delete_args }} --confirm +User=postgres diff --git a/roles/wal-g-pg/templates/wal-g-delete.timer.j2 b/roles/wal-g-pg/templates/wal-g-delete.timer.j2 new file mode 100644 index 0000000..4f77a72 --- /dev/null +++ b/roles/wal-g-pg/templates/wal-g-delete.timer.j2 @@ -0,0 +1,9 @@ +[Unit] +Description=Periodic PostgreSQL backup delete with WAL-G + +[Timer] +OnCalendar={{ wal_g_pg_delete_timer_schedule }} +Persistent=yes + +[Install] +WantedBy=timers.target