46 lines
1.4 KiB
YAML
46 lines
1.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="borg serve --restrict-to-path /srv/borg/repos/{{ ansible_hostname }}",restrict'
|
|
delegate_to: "{{ borg_server }}"
|
|
|
|
- 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: create borg client repo on server
|
|
shell: "borg init --rsh \"ssh -i /root/.ssh/borg\" --encryption=none borg@{{ borg_server }}:/srv/borg/repos/{{ ansible_hostname }}"
|
|
when: hostvars[borg_server]['ansible_local']['borg']['repos'][ansible_hostname] is not defined
|
|
|
|
- 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: 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"
|
|
...
|