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