From baa9bd7bed3e60854c34dbdd59c26b3a466bac81 Mon Sep 17 00:00:00 2001
From: nd <git@notandy.de>
Date: Sat, 13 Mar 2021 21:00:27 +0100
Subject: [PATCH] added systemd services

---
 handlers/main.yml                     |  3 +++
 tasks/main.yml                        | 17 ++++++++++++++++-
 templates/backup-check.j2             | 14 ++++++++++++++
 templates/backup-check.service.j2     | 10 ++++++++++
 templates/backup-full.j2              |  4 ----
 templates/backup-retention.j2         |  4 ++++
 templates/backup-retention.service.j2 | 10 ++++++++++
 templates/backup-run.service.j2       | 10 ++++++++++
 8 files changed, 67 insertions(+), 5 deletions(-)
 create mode 100644 handlers/main.yml
 create mode 100755 templates/backup-check.j2
 create mode 100644 templates/backup-check.service.j2
 create mode 100644 templates/backup-retention.service.j2
 create mode 100644 templates/backup-run.service.j2

diff --git a/handlers/main.yml b/handlers/main.yml
new file mode 100644
index 0000000..c8e1021
--- /dev/null
+++ b/handlers/main.yml
@@ -0,0 +1,3 @@
+- name: reload systemd
+  systemd:
+    daemon_reload: True
diff --git a/tasks/main.yml b/tasks/main.yml
index 45cd959..3674652 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -47,13 +47,28 @@
       - backup-all-vms
       - backup-full
       - backup-cronjob
+      - backup-check
     template:
       src: "{{ item }}.j2"
       dest: "/usr/local/bin/{{ item }}"
       owner: root
       group: root
-      mode: 0700
+      mode: 0755
       validate: /bin/bash -n %s
+  - name: copy systemd services
+    notify:
+      - reload systemd
+    loop:
+      - backup-check
+      - backup-retention
+      - backup-run
+    template:
+      src: "{{ item }}.service.j2"
+      dest: "/etc/systemd/system/{{ item }}.service"
+      owner: root
+      group: root
+      mode: 0644
+#      validate: /usr/bin/systemd-analyze verify %s
   - name: create data folder
     file:
       path: /var/backup-client/
diff --git a/templates/backup-check.j2 b/templates/backup-check.j2
new file mode 100755
index 0000000..dd31399
--- /dev/null
+++ b/templates/backup-check.j2
@@ -0,0 +1,14 @@
+#!/bin/bash
+set -euo pipefail
+
+{% if backup_backend == 'restic' %}
+# restic backend
+source /etc/backup-client/restic.env
+
+restic check --read-data
+
+{% endif %}
+
+{% if not backup_backend %}
+echo "Noop, backup is handled external"
+{% endif %}
diff --git a/templates/backup-check.service.j2 b/templates/backup-check.service.j2
new file mode 100644
index 0000000..9f1dfb3
--- /dev/null
+++ b/templates/backup-check.service.j2
@@ -0,0 +1,10 @@
+[Unit]
+Description=Check backup consistency
+OnFailure=status-email-root@%n.service
+
+[Service]
+Nice=19
+IOSchedulingClass=idle
+Type=simple
+ExecStart=/usr/local/bin/backup-check
+
diff --git a/templates/backup-full.j2 b/templates/backup-full.j2
index ac525d0..a5956b8 100755
--- a/templates/backup-full.j2
+++ b/templates/backup-full.j2
@@ -7,7 +7,3 @@ set -euo pipefail
 {% if backups.mode in ['hypervisor-restic'] %}
 	backup-all-vms
 {% endif %}
-{% if backup_executor %}
-	backup-retention
-{% endif %}
-
diff --git a/templates/backup-retention.j2 b/templates/backup-retention.j2
index 1a76bc4..478631d 100755
--- a/templates/backup-retention.j2
+++ b/templates/backup-retention.j2
@@ -7,6 +7,7 @@ source /etc/backup-client/retention.env
 # restic backend
 source /etc/backup-client/restic.env
 restic forget \
+	--cleanup-cache \
 	--verbose \
 	--prune \
 	--group-by "host,paths,tags" \
@@ -17,3 +18,6 @@ restic forget \
 	--keep-yearly ${BACKUP_RETENTION_YEARS}
 
 {% endif %}
+{% if not backup_backend %}
+echo "Noop, backup is handled external"
+{% endif %}
diff --git a/templates/backup-retention.service.j2 b/templates/backup-retention.service.j2
new file mode 100644
index 0000000..1900494
--- /dev/null
+++ b/templates/backup-retention.service.j2
@@ -0,0 +1,10 @@
+[Unit]
+Description=Delete no longer needed backups
+OnFailure=status-email-root@%n.service
+
+[Service]
+Nice=19
+IOSchedulingClass=idle
+Type=simple
+ExecStart=/usr/local/bin/backup-retention
+
diff --git a/templates/backup-run.service.j2 b/templates/backup-run.service.j2
new file mode 100644
index 0000000..9f277f4
--- /dev/null
+++ b/templates/backup-run.service.j2
@@ -0,0 +1,10 @@
+[Unit]
+Description=Backup system
+OnFailure=status-email-root@%n.service
+
+[Service]
+Nice=19
+IOSchedulingClass=idle
+Type=simple
+ExecStart=/usr/local/bin/backup-full
+
-- 
GitLab