--- - 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') }}