diff options
| author | Colin Wilk <colin@wilk.cx> | 2026-07-02 18:10:04 +0200 |
|---|---|---|
| committer | Colin Wilk <colin@wilk.cx> | 2026-07-02 18:10:04 +0200 |
| commit | 50b914e77695fd1cdb294653f20143747e7e3b01 (patch) | |
| tree | b667145cd04e39abb52d1680fc61a17513ae0af6 /molecule/delete/converge.yml | |
| parent | 66e46df3d2a840bf62ef8084ad171041772db65e (diff) | |
| download | ansible-role-borgbackup-50b914e77695fd1cdb294653f20143747e7e3b01.tar.gz ansible-role-borgbackup-50b914e77695fd1cdb294653f20143747e7e3b01.zip | |
Add state: absent variable
Allow removing configuration for repositories.
Diffstat (limited to 'molecule/delete/converge.yml')
| -rw-r--r-- | molecule/delete/converge.yml | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/molecule/delete/converge.yml b/molecule/delete/converge.yml new file mode 100644 index 0000000..00de93d --- /dev/null +++ b/molecule/delete/converge.yml @@ -0,0 +1,143 @@ +--- +- name: Setup - Fetch SSH key for server + hosts: + - borg-client-single-delete + - borg-client-multi-delete + - borg-client-per-repo-delete + - borg-client-nonroot-delete + - borg-client-never-delete + + pre_tasks: + - name: Fetch ssh_key for borg-server-delete + ansible.builtin.command: >- + ssh-keyscan -t rsa borg-server-delete | sed "s/^[^ ]* //" + register: borg_server_ssh_keyscan + changed_when: false + + - name: Set ssh_key for borg-server-delete + ansible.builtin.set_fact: + borg_server_host_ssh_key: >- + {{ borg_server_ssh_keyscan.stdout + | split(" ") + | reject("search", "borg-server-delete") + | join(" ") }} + +- name: Delete single repo backup (with data deletion) + hosts: borg-client-single-delete + + roles: + - role: kliwniloc.borgbackup + vars: + state: absent + borg_server_host: borg-server-delete + borg_server_host_ssh_key: "{{ borg_server_host_ssh_key }}" + borg_repo_name: single-backup + borg_backup_argument: single-backup + borg_dangerously_delete_backups: true + borg_decryption_keys_yaml_path: "{{ playbook_dir }}/decryption_keys_delete.yml" + +- name: Delete one repo from multi-instance (keep data) + hosts: borg-client-multi-delete + + roles: + - role: kliwniloc.borgbackup + vars: + state: absent + borg_server_host: borg-server-delete + borg_server_host_ssh_key: "{{ borg_server_host_ssh_key }}" + borg_repo_name: multi-repo-a + borg_backup_argument: multi-repo-a + borg_dangerously_delete_backups: false + borg_decryption_keys_yaml_path: "{{ playbook_dir }}/decryption_keys_delete.yml" + +- name: Delete one repo from per-repo (with data deletion) + hosts: borg-client-per-repo-delete + + roles: + - role: kliwniloc.borgbackup + vars: + state: absent + borg_server_host: borg-server-delete + borg_server_host_ssh_key: "{{ borg_server_host_ssh_key }}" + borg_repo_name: per-repo-a + borg_backup_argument: per-repo-a + borg_ssh_key_per_repo: true + borg_ssh_key_type: ed25519 + borg_dangerously_delete_backups: true + borg_decryption_keys_yaml_path: "{{ playbook_dir }}/decryption_keys_delete.yml" + +- name: Delete one repo from non-root shared-key setup + hosts: borg-client-nonroot-delete + + roles: + - role: kliwniloc.borgbackup + vars: + state: absent + borg_server_host: borg-server-delete + borg_server_host_ssh_key: "{{ borg_server_host_ssh_key }}" + borg_client_user: backupuser + borg_repo_name: nonroot-a + borg_backup_argument: nonroot-a + borg_dangerously_delete_backups: false + borg_decryption_keys_yaml_path: "{{ playbook_dir }}/decryption_keys_delete.yml" + +- name: Delete never-configured backup with empty key file + hosts: borg-client-never-delete + + roles: + - role: kliwniloc.borgbackup + vars: + state: absent + borg_server_host: borg-server-delete + borg_server_host_ssh_key: "{{ borg_server_host_ssh_key }}" + borg_repo_name: never-configured + borg_backup_argument: never-configured + borg_dangerously_delete_backups: false + borg_decryption_keys_yaml_path: "{{ playbook_dir }}/decryption_keys_empty_delete.yml" + +- name: Re-run absent for idempotency + hosts: + - borg-client-single-delete + - borg-client-multi-delete + - borg-client-per-repo-delete + - borg-client-nonroot-delete + - borg-client-never-delete + + roles: + - role: kliwniloc.borgbackup + vars: + state: absent + borg_server_host: borg-server-delete + borg_server_host_ssh_key: "{{ borg_server_host_ssh_key }}" + borg_repo_name: >- + {{ + { + 'borg-client-single-delete': 'single-backup', + 'borg-client-multi-delete': 'multi-repo-a', + 'borg-client-per-repo-delete': 'per-repo-a', + 'borg-client-nonroot-delete': 'nonroot-a', + 'borg-client-never-delete': 'never-configured' + }[inventory_hostname] + }} + borg_backup_argument: >- + {{ + { + 'borg-client-single-delete': 'single-backup', + 'borg-client-multi-delete': 'multi-repo-a', + 'borg-client-per-repo-delete': 'per-repo-a', + 'borg-client-nonroot-delete': 'nonroot-a', + 'borg-client-never-delete': 'never-configured' + }[inventory_hostname] + }} + borg_client_user: >- + {{ 'backupuser' if inventory_hostname == 'borg-client-nonroot-delete' else 'root' }} + borg_ssh_key_per_repo: "{{ inventory_hostname == 'borg-client-per-repo-delete' }}" + borg_ssh_key_type: "{{ 'ed25519' if inventory_hostname == 'borg-client-per-repo-delete' else 'rsa' }}" + borg_dangerously_delete_backups: >- + {{ inventory_hostname in ['borg-client-single-delete', 'borg-client-per-repo-delete'] }} + borg_decryption_keys_yaml_path: >- + {{ + (playbook_dir ~ '/decryption_keys_empty_delete.yml') + if inventory_hostname == 'borg-client-never-delete' + else (playbook_dir ~ '/decryption_keys_delete.yml') + }} |