diff --git a/roles/wal-g-pg/defaults/main.yml b/roles/wal-g-pg/defaults/main.yml new file mode 100644 index 0000000..35aa45d --- /dev/null +++ b/roles/wal-g-pg/defaults/main.yml @@ -0,0 +1,2 @@ +wal_g_pg_backup_timer_schedule: >- + *-*-* 03:56 diff --git a/roles/wal-g-pg/files/wal-g-backup.service b/roles/wal-g-pg/files/wal-g-backup.service new file mode 100644 index 0000000..d563dab --- /dev/null +++ b/roles/wal-g-pg/files/wal-g-backup.service @@ -0,0 +1,9 @@ +[Unit] +Description=PostgreSQL Backup 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 backup-push --config /etc/postgresql/wal-g.yml $PGDATA diff --git a/roles/wal-g-pg/handlers/main.yml b/roles/wal-g-pg/handlers/main.yml index ec02016..5d1800e 100644 --- a/roles/wal-g-pg/handlers/main.yml +++ b/roles/wal-g-pg/handlers/main.yml @@ -1,3 +1,8 @@ - name: load wal-g-postgresql selinux module command: semodule -i /usr/local/share/selinux/wal-g-postgresql.cil + +- name: restart wal-g backup timer + systemd: + name: wal-g-backup.timer + state: restarted diff --git a/roles/wal-g-pg/tasks/main.yml b/roles/wal-g-pg/tasks/main.yml index ac51f9f..767c096 100644 --- a/roles/wal-g-pg/tasks/main.yml +++ b/roles/wal-g-pg/tasks/main.yml @@ -34,5 +34,40 @@ tags: - selinux +- name: ensure wal-g backup timer is installed + template: + src: wal-g-backup.timer.j2 + dest: /etc/systemd/system/wal-g-backup.timer + owner: root + group: root + mode: u=rw,go=r + notify: + - restart wal-g backup timer + tags: + - systemd +- name: ensure wal-g backup service is installed + copy: + src: wal-g-backup.service + dest: /etc/systemd/system/wal-g-backup.service + owner: root + group: root + mode: u=rw,go=r + tags: + - systemd + +- name: ensure wal-g backup timer is enabled + systemd: + name: wal-g-backup.timer + enabled: true + tags: + - service + - name: flush handlers meta: flush_handlers + +- name: ensure wal-g backup timer is running + systemd: + name: wal-g-backup.timer + state: started + tags: + - service diff --git a/roles/wal-g-pg/templates/wal-g-backup.timer.j2 b/roles/wal-g-pg/templates/wal-g-backup.timer.j2 new file mode 100644 index 0000000..c6e863d --- /dev/null +++ b/roles/wal-g-pg/templates/wal-g-backup.timer.j2 @@ -0,0 +1,9 @@ +[Unit] +Description=Daily PostgreSQL backup with WAL-G + +[Timer] +OnCalendar={{ wal_g_pg_backup_timer_schedule }} +Persistent=yes + +[Install] +WantedBy=timers.target