--- - name: Prepare - Configure SSH keys for delete setup 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: Start ssh on borg-server-delete ansible.builtin.systemd: name: sshd state: started become: true delegate_to: borg-server-delete - 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: Create single repo backup hosts: borg-client-single-delete roles: - role: kliwniloc.borgbackup vars: state: present borg_server_host: borg-server-delete borg_server_host_ssh_key: "{{ hostvars[inventory_hostname].borg_server_host_ssh_key }}" borg_repo_name: single-backup borg_backup_argument: single-backup borg_decryption_keys_yaml_path: "{{ playbook_dir }}/decryption_keys_delete.yml" borg_included_dirs: - /etc borg_excluded_dirs: [] - name: Create multi-instance backup (shared key) hosts: borg-client-multi-delete vars: borg_server_host: borg-server-delete borg_server_host_ssh_key: "{{ hostvars[inventory_hostname].borg_server_host_ssh_key }}" borg_decryption_keys_yaml_path: "{{ playbook_dir }}/decryption_keys_delete.yml" borg_ssh_key_per_repo: false roles: - role: kliwniloc.borgbackup vars: state: present borg_repo_name: multi-repo-a borg_backup_argument: multi-repo-a borg_included_dirs: - /etc borg_systemd_oncalendar: "*-*-* 02:00:00" - role: kliwniloc.borgbackup vars: state: present borg_repo_name: multi-repo-b borg_backup_argument: multi-repo-b borg_included_dirs: - /home borg_systemd_oncalendar: "*-*-* 04:00:00" - name: Create per-repo SSH key backup hosts: borg-client-per-repo-delete vars: borg_server_host: borg-server-delete borg_server_host_ssh_key: "{{ hostvars[inventory_hostname].borg_server_host_ssh_key }}" borg_decryption_keys_yaml_path: "{{ playbook_dir }}/decryption_keys_delete.yml" borg_ssh_key_per_repo: true roles: - role: kliwniloc.borgbackup vars: state: present borg_repo_name: per-repo-a borg_backup_argument: per-repo-a borg_ssh_key_type: ed25519 borg_included_dirs: - /etc borg_systemd_oncalendar: "*-*-* 02:00:00" - role: kliwniloc.borgbackup vars: state: present borg_repo_name: per-repo-b borg_backup_argument: per-repo-b borg_ssh_key_type: ed25519 borg_included_dirs: - /home borg_systemd_oncalendar: "*-*-* 04:00:00" - name: Create non-root shared-key backup hosts: borg-client-nonroot-delete pre_tasks: - name: Create backup user for non-root delete test ansible.builtin.user: name: backupuser home: /home/backupuser shell: /bin/bash state: present become: true roles: - role: kliwniloc.borgbackup vars: state: present borg_server_host: borg-server-delete borg_server_host_ssh_key: "{{ hostvars[inventory_hostname].borg_server_host_ssh_key }}" borg_client_user: backupuser borg_repo_name: nonroot-a borg_backup_argument: nonroot-a borg_decryption_keys_yaml_path: "{{ playbook_dir }}/decryption_keys_delete.yml" borg_included_dirs: - /etc borg_excluded_dirs: [] - role: kliwniloc.borgbackup vars: state: present borg_server_host: borg-server-delete borg_server_host_ssh_key: "{{ hostvars[inventory_hostname].borg_server_host_ssh_key }}" borg_client_user: backupuser borg_repo_name: nonroot-b borg_backup_argument: nonroot-b borg_decryption_keys_yaml_path: "{{ playbook_dir }}/decryption_keys_delete.yml" borg_included_dirs: - /home borg_excluded_dirs: [] - name: Prepare empty decryption keys file for never-configured host hosts: localhost gather_facts: false tasks: - name: Create empty decryption keys file ansible.builtin.copy: content: "" dest: "{{ playbook_dir }}/decryption_keys_empty_delete.yml" mode: "0600"