Skip to content
Snippets Groups Projects
Verified Commit 6c214a23 authored by nd's avatar nd
Browse files

add systemd timer for backups

parent baa9bd7b
Branches
Tags release/calendar/5.3.3 release/mail/5.1.4
No related merge requests found
backups: backups:
jobs:
retention:
enabled: true
OnCalendar: "1:{{ 60|random(seed=(inventory_hostname + 'backups_jobs')) }}"
run:
enabled: true
OnCalendar: "3,11,19:{{ 60|random(seed=(inventory_hostname + 'backups_jobs')) }}"
check:
enabled: true
OnCalendar: "monday 5:{{ 60|random(seed=(inventory_hostname + 'backups_jobs')) }}"
backends: backends:
restic: restic:
url: /var/backup-client/restic url: /var/backup-client/restic
... ...
......
- name: reload systemd - name: reload systemd
systemd: systemd:
daemon_reload: True daemon_reload: True
- name: enable timers
loop:
- check
- retention
- run
systemd:
name: "backup-{{ item }}.timer"
enabled: "{{ backups.jobs[item].enabled }}"
state: "{% if backups.jobs[item].enabled %}started{% else %}stopped{% endif %}"
...@@ -48,6 +48,7 @@ ...@@ -48,6 +48,7 @@
- backup-full - backup-full
- backup-cronjob - backup-cronjob
- backup-check - backup-check
- status-email-root
template: template:
src: "{{ item }}.j2" src: "{{ item }}.j2"
dest: "/usr/local/bin/{{ item }}" dest: "/usr/local/bin/{{ item }}"
...@@ -62,12 +63,28 @@ ...@@ -62,12 +63,28 @@
- backup-check - backup-check
- backup-retention - backup-retention
- backup-run - backup-run
- status-email-root@
template: template:
src: "{{ item }}.service.j2" src: "{{ item }}.service.j2"
dest: "/etc/systemd/system/{{ item }}.service" dest: "/etc/systemd/system/{{ item }}.service"
owner: root owner: root
group: root group: root
mode: 0644 mode: 0644
# validate: /usr/bin/systemd-analyze verify %s
- name: copy timers
notify:
- reload systemd
- enable timers
loop:
- check
- retention
- run
template:
src: "timer.j2"
dest: "/etc/systemd/system/backup-{{ item }}.timer"
owner: root
group: root
mode: 0644
# validate: /usr/bin/systemd-analyze verify %s # validate: /usr/bin/systemd-analyze verify %s
- name: create data folder - name: create data folder
file: file:
... ...
......
#!/bin/bash
set -euo pipefail
systemctl status "$1" | mail -s "service $1 failed on $( hostname )" root || true
[Unit]
Description=Send a mail to root in case of a service failure
[Service]
Type=oneshot
ExecStart=/usr/local/bin/status-email-root %i
[Unit]
Description=Execute backup job
[Timer]
Persistent=true
{% if "OnCalendar" in backups.jobs[item] %}
OnCalendar={{ backups.jobs[item].OnCalendar }}
{% endif %}
[Install]
WantedBy=timers.target
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment