aboutsummaryrefslogtreecommitdiffstats
path: root/tasks/absent.yml
diff options
context:
space:
mode:
authorColin Wilk <colin@wilk.cx>2026-09-01 21:01:05 +0200
committerColin Wilk <colin@wilk.cx>2026-09-01 21:43:57 +0200
commit9c7586c7c3a235672ec6490d1a8bc44a222ce5d1 (patch)
tree8b36c5ee3105da2ae769c0d9cd96683d213c949d /tasks/absent.yml
parentfa137a92e1084a07608a4008ec0cb891baa76774 (diff)
downloadansible-role-borgbackup-9c7586c7c3a235672ec6490d1a8bc44a222ce5d1.tar.gz
ansible-role-borgbackup-9c7586c7c3a235672ec6490d1a8bc44a222ce5d1.zip
Add borg prune and compact jobs
Run repository retention either after a successful backup or from a dedicated systemd timer. Clean up script generation with templates and expand molecule test coverage. BREAKING CHANGE: Aggregate backup scripts are no longer managed, and state=preset now requires at least one readable included directory.
Diffstat (limited to 'tasks/absent.yml')
-rw-r--r--tasks/absent.yml74
1 files changed, 45 insertions, 29 deletions
diff --git a/tasks/absent.yml b/tasks/absent.yml
index b1a5592..6afb7f3 100644
--- a/tasks/absent.yml
+++ b/tasks/absent.yml
@@ -38,6 +38,12 @@
register: timer_stat
become: true
+- name: Check if prune systemd timer exists
+ ansible.builtin.stat:
+ path: /etc/systemd/system/{{ borg_prune_timer_name }}{{ '@' if borg_backup_argument != '' }}{{ borg_backup_argument }}.timer
+ register: prune_timer_stat
+ become: true
+
- name: Stop systemd timer
ansible.builtin.systemd:
name: "{{ borg_backup_timer_name }}{{ '@' if borg_backup_argument != '' }}{{ borg_backup_argument }}.timer"
@@ -46,12 +52,26 @@
become: true
when: timer_stat.stat.exists
+- name: Stop prune systemd timer
+ ansible.builtin.systemd:
+ name: "{{ borg_prune_timer_name }}{{ '@' if borg_backup_argument != '' }}{{ borg_backup_argument }}.timer"
+ state: stopped
+ enabled: false
+ become: true
+ when: prune_timer_stat.stat.exists
+
- name: Check if systemd service exists
ansible.builtin.stat:
path: /etc/systemd/system/{{ borg_backup_service_name }}{{ '@' if borg_backup_argument != '' }}{{ borg_backup_argument }}.service
register: service_stat
become: true
+- name: Check if prune systemd service exists
+ ansible.builtin.stat:
+ path: /etc/systemd/system/{{ borg_prune_service_name }}{{ '@' if borg_backup_argument != '' }}{{ borg_backup_argument }}.service
+ register: prune_service_stat
+ become: true
+
- name: Stop systemd service
ansible.builtin.systemd:
name: "{{ borg_backup_service_name }}{{ '@' if borg_backup_argument != '' }}{{ borg_backup_argument }}.service"
@@ -60,59 +80,55 @@
become: true
when: service_stat.stat.exists
+- name: Stop prune systemd service
+ ansible.builtin.systemd:
+ name: "{{ borg_prune_service_name }}{{ '@' if borg_backup_argument != '' }}{{ borg_backup_argument }}.service"
+ state: stopped
+ enabled: false
+ become: true
+ when: prune_service_stat.stat.exists
+
- name: Remove systemd timer file
ansible.builtin.file:
path: /etc/systemd/system/{{ borg_backup_timer_name }}{{ '@' if borg_backup_argument != '' }}{{ borg_backup_argument }}.timer
state: absent
become: true
+- name: Remove prune systemd timer file
+ ansible.builtin.file:
+ path: /etc/systemd/system/{{ borg_prune_timer_name }}{{ '@' if borg_backup_argument != '' }}{{ borg_backup_argument }}.timer
+ state: absent
+ become: true
+
- name: Remove systemd service file
ansible.builtin.file:
path: /etc/systemd/system/{{ borg_backup_service_name }}{{ '@' if borg_backup_argument != '' }}{{ borg_backup_argument }}.service
state: absent
become: true
+- name: Remove prune systemd service file
+ ansible.builtin.file:
+ path: /etc/systemd/system/{{ borg_prune_service_name }}{{ '@' if borg_backup_argument != '' }}{{ borg_backup_argument }}.service
+ state: absent
+ become: true
+
- name: Reload systemd daemon
ansible.builtin.systemd:
daemon_reload: true
become: true
-- name: Check if base backup script exists
- ansible.builtin.stat:
- path: "{{ borg_backup_script_location }}"
- register: base_script_stat
- become: true
-
-- name: Remove repo-specific backup script
+- name: Remove repository-specific backup script
ansible.builtin.file:
- path: "{{ borg_backup_script_location }}{{ '@' if borg_backup_argument != '' }}{{ borg_backup_argument }}"
- state: absent
- become: true
- when: borg_backup_argument | length > 0
-
-- name: Remove block from base backup script
- ansible.builtin.blockinfile:
- path: "{{ borg_backup_script_location }}"
- marker: "## {mark} ANSIBLE MANAGED BLOCK for {{ borg_server_host_url }}/{{ borg_repo_name }}"
+ path: "{{ borg_backup_script_location }}{{ '@' if borg_backup_argument != '' else '' }}{{ borg_backup_argument }}"
state: absent
become: true
- when: base_script_stat.stat.exists
-- name: Read base script content
- ansible.builtin.slurp:
- src: "{{ borg_backup_script_location }}"
- register: base_script_content
- become: true
- when: base_script_stat.stat.exists
-
-- name: Remove empty base script
+- name: Remove repository-specific prune script
ansible.builtin.file:
- path: "{{ borg_backup_script_location }}"
+ path: "{{ borg_prune_script_location }}{{ '@' if borg_backup_argument != '' else '' }}{{ borg_backup_argument }}"
state: absent
become: true
- when:
- - base_script_stat.stat.exists
- - ('ANSIBLE MANAGED BLOCK' not in (base_script_content.content | b64decode))
+ when: borg_prune_script_location | length > 0
- name: Remove per-repo SSH private key
ansible.builtin.file: