From d781e110d9153b29692e41ec63a177a1994064f0 Mon Sep 17 00:00:00 2001 From: korenstin Date: Sun, 19 Jan 2025 23:33:29 +0100 Subject: [PATCH] borgmatic : remplacement cron par timer systemdl --- roles/borgbackup-client/handlers/main.yml | 9 +++++++++ roles/borgbackup-client/tasks/main.yml | 20 ++++++++++++++++--- .../templates/cron.d/borg.j2 | 9 --------- .../systemd/system/borgmatic.service.j2 | 15 ++++++++++++++ .../systemd/system/borgmatic.timer.j2 | 10 ++++++++++ 5 files changed, 51 insertions(+), 12 deletions(-) create mode 100644 roles/borgbackup-client/handlers/main.yml delete mode 100644 roles/borgbackup-client/templates/cron.d/borg.j2 create mode 100644 roles/borgbackup-client/templates/systemd/system/borgmatic.service.j2 create mode 100644 roles/borgbackup-client/templates/systemd/system/borgmatic.timer.j2 diff --git a/roles/borgbackup-client/handlers/main.yml b/roles/borgbackup-client/handlers/main.yml new file mode 100644 index 00000000..d9ea49fd --- /dev/null +++ b/roles/borgbackup-client/handlers/main.yml @@ -0,0 +1,9 @@ +--- +- name: Restart timer + service: + name: borgmatic.timer + state: restarted + +- name: systemctl daemon-reload + systemd: + daemon_reload: true diff --git a/roles/borgbackup-client/tasks/main.yml b/roles/borgbackup-client/tasks/main.yml index 2833d6b5..957a6c35 100644 --- a/roles/borgbackup-client/tasks/main.yml +++ b/roles/borgbackup-client/tasks/main.yml @@ -61,13 +61,27 @@ register: borg_init changed_when: '"does not exist" in borg_init.stderr' -- name: Deploy borg cron +- name: Deploy borgmatic systemd template: - src: cron.d/borg.j2 - dest: /etc/cron.d/borg{{ borg.path_suffix | default('') }} + src: "systemd/system/{{ item }}.j2" + dest: /etc/systemd/system/{{ item }} + mode: 0600 + owner: root + group: root + loop: + - borgmatic.service + - borgmatic.timer + notify: + - Restart timer + - systemctl daemon-reload - name: Indicate role in motd template: src: update-motd.d/04-service.j2 dest: /etc/update-motd.d/04-borgbackup mode: 0755 + +- name: Enable timer + service: + name: borgmatic.timer + enabled: true diff --git a/roles/borgbackup-client/templates/cron.d/borg.j2 b/roles/borgbackup-client/templates/cron.d/borg.j2 deleted file mode 100644 index 26309d44..00000000 --- a/roles/borgbackup-client/templates/cron.d/borg.j2 +++ /dev/null @@ -1,9 +0,0 @@ -{{ ansible_header | comment }} - -PATH=$PATH:/usr/sbin:/usr/bin:/usr/local/bin:/sbin:/bin - -{% if borg.path_suffix is defined %} -{{ 60 | random(seed=inventory_hostname) }} {{ 24 | random(seed=inventory_hostname) }} * * * root borgmatic -c /etc/borgmatic/config{{ borg.path_suffix }}.yaml --syslog-verbosity 1 -{% else %} -{{ 60 | random(seed=inventory_hostname) }} {{ 24 | random(seed=inventory_hostname) }} * * * root borgmatic --syslog-verbosity 1 -{% endif %} diff --git a/roles/borgbackup-client/templates/systemd/system/borgmatic.service.j2 b/roles/borgbackup-client/templates/systemd/system/borgmatic.service.j2 new file mode 100644 index 00000000..46ab63d7 --- /dev/null +++ b/roles/borgbackup-client/templates/systemd/system/borgmatic.service.j2 @@ -0,0 +1,15 @@ +{{ ansible_header | comment }} + +[Unit] +After=network-online.target +Wants=network-online.target + +[Service] +Type=oneshot +User=root + +{% if borg.path_suffix is defined %} +ExecStart=borgmatic -c /etc/borgmatic/config{{ borg.path_suffix }}.yaml --syslog-verbosity 1 +{% else %} +ExecStart=borgmatic --syslog-verbosity 1 +{% endif %} diff --git a/roles/borgbackup-client/templates/systemd/system/borgmatic.timer.j2 b/roles/borgbackup-client/templates/systemd/system/borgmatic.timer.j2 new file mode 100644 index 00000000..4aad3f85 --- /dev/null +++ b/roles/borgbackup-client/templates/systemd/system/borgmatic.timer.j2 @@ -0,0 +1,10 @@ +{{ ansible_header | comment }} + +[Unit] + +[Timer] +OnCalendar={{ 24 | random(seed=inventory_hostname) }}:{{ 60 | random(seed=inventory_hostname) }} +Persistent=true + +[Install] +WantedBy=timers.target