aboutsummaryrefslogtreecommitdiffstats
path: root/molecule/delete/prepare.yml
blob: 98a94a187c28fd6d5319a0d82876ae2ad717d275 (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
144
145
146
147
148
149
150
151
152
153
---
- 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"