75 lines
2.4 KiB
YAML
75 lines
2.4 KiB
YAML
---
|
|
- name: generate borg ssh key on client
|
|
openssh_keypair:
|
|
owner: root
|
|
mode: 0400
|
|
path: /root/.ssh/borg
|
|
type: ed25519
|
|
register: borg_ssh_key
|
|
|
|
- name: reload ansible_local
|
|
setup: filter=ansible_local
|
|
when: borg_ssh_key.changed
|
|
|
|
- name: Enforce borg authorized key on server
|
|
authorized_key:
|
|
user: borg
|
|
key: "{{ ansible_local.borg.pubkey }}"
|
|
key_options: 'command="cd /srv/borg/repos/{{ ansible_hostname }}; borg serve --restrict-to-path /srv/borg/repos/{{ ansible_hostname }}",restrict'
|
|
delegate_to: "{{ borg_server }}"
|
|
|
|
- name: create borg client repo directory on server
|
|
file:
|
|
path: "/srv/borg/repos/{{ ansible_hostname }}"
|
|
state: directory
|
|
owner: borg
|
|
mode: 0700
|
|
delegate_to: "{{ borg_server }}"
|
|
|
|
- name: create borg client repo on server
|
|
shell: "echo \"borg init --encryption=none /srv/borg/repos/{{ ansible_hostname }}\" | su -l borg"
|
|
delegate_to: "{{ borg_server }}"
|
|
args:
|
|
creates: "/srv/borg/repos/{{ ansible_hostname }}/config"
|
|
|
|
- name: reload ansible_local
|
|
setup: filter=ansible_local
|
|
delegate_to: "{{ borg_server }}"
|
|
delegate_facts: True
|
|
when: hostvars[borg_server]['ansible_local']['borg']['repos'][ansible_hostname] is not defined
|
|
|
|
- name: make the server known to the client
|
|
lineinfile:
|
|
line: "{{ borg_server }} ecdsa-sha2-nistp256 {{ hostvars[borg_server]['ansible_ssh_host_key_ecdsa_public'] }}"
|
|
path: /root/.ssh/known_hosts
|
|
create: yes
|
|
|
|
- name: make the repo directory on the client
|
|
file:
|
|
state: directory
|
|
path: "/root/.config/borg/security/{{ hostvars[borg_server]['ansible_local']['borg']['repos'][ansible_hostname] }}"
|
|
owner: root
|
|
mode: 0700
|
|
|
|
- name: make the repo known to the client
|
|
copy:
|
|
dest: "/root/.config/borg/security/{{ hostvars[borg_server]['ansible_local']['borg']['repos'][ansible_hostname] }}/{{ item.dest }}"
|
|
content: "{{ item.content }}"
|
|
owner: root
|
|
mode: 0600
|
|
loop:
|
|
- { dest: key-type, content: "2" }
|
|
- { dest: location, content: "ssh://borg@{{ borg_server }}/srv/borg/repos/{{ ansible_hostname }}" }
|
|
- { dest: manifest-timestamp, content: "{{ ansible_date_time['iso8601_micro'] }}" }
|
|
changed_when: false
|
|
|
|
- name: deploy borg backup script
|
|
template:
|
|
dest: /usr/local/bin/adyxax_backup.sh
|
|
src: backup.sh.j2
|
|
owner: root
|
|
mode: 0500
|
|
|
|
- name: Run OS specific tasks
|
|
include_tasks: "roles/borg/tasks/client_{{ ansible_distribution }}.yml"
|
|
...
|