aboutsummaryrefslogtreecommitdiffstats
path: root/molecule/delete/converge.yml
blob: 00de93df93bb74d4b8fc7ed2766303386ae75acf (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
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')
          }}