Restic-backed backups using a many-to-many repository/job model. - repository = destination: restic repository URL verbatim (s3, local, removable device), backend credentials via env passthrough, retention policy, and an optional per-repository ntfy notify channel - job = source set: paths, sqlite and postgres dumps (consistent .backup / pg_dump instead of torn live-file copies), pushed to one or more repos - systemd timer per job, per-repo + per-job flock serialisation, restic check with read_data_subset for rotating integrity verification Service roles declare what to back up (ntfy_backup_*, uptime_kuma_backup_*); the inventory declares where.
7 lines
291 B
Django/Jinja
7 lines
291 B
Django/Jinja
# Managed by Ansible (roles/backup). Per-job schedule override for {{ job.name }}.
|
|
[Timer]
|
|
# Reset the inherited value first: OnCalendar is additive, so without an empty
|
|
# assignment the job would fire on both the default and the override schedule.
|
|
OnCalendar=
|
|
OnCalendar={{ job.schedule }}
|