cloud-backup/tasks/server.yml
2024-11-27 22:37:12 +01:00

118 lines
3.3 KiB
YAML

---
- name: setup backup installation folder
file:
state: directory
path: "{{ backup_inst }}"
owner: "{{ backup_owner }}"
group: "{{ backup_group }}"
mode: "0750"
- name: install dateutil library service
apt:
update_cache: yes
state: "{% if cloud_update | bool %}latest{% else %}present{% endif %}"
install_recommends: yes
pkg:
- python3-dateutil
- rsync
- name: setup filter program for backup pruning
copy:
src: opt/backup/filter_backups.py
dest: "{{ backup_inst }}/filter_backups.py"
owner: "{{ backup_owner }}"
group: "{{ backup_group }}"
mode: "0750"
- name: setup ssh public keys of clients
copy:
content: "{{ backup_clients[item].sshpubkey }}"
dest: "{{ backup_home }}/.ssh/{{ item }}.pub"
owner: "{{ backup_owner }}"
group: "{{ backup_group }}"
mode: "0600"
loop: "{{ backup_clients.keys() }}"
- name: setup ssh private keys of clients
copy:
content: "{{ backup_clients[item].sshprivkey }}"
dest: "{{ backup_home }}/.ssh/{{ item }}"
owner: "{{ backup_owner }}"
group: "{{ backup_group }}"
mode: "0600"
loop: "{{ backup_clients.keys() }}"
- name: setup ssh config of clients
template:
src: "home/backup/.ssh/config.j2"
dest: "{{ backup_home }}/.ssh/config"
owner: "{{ backup_owner }}"
group: "{{ backup_group }}"
mode: "0600"
- name: setup backup key folder
file:
state: directory
path: "{{ backup_key_folder }}"
owner: "{{ backup_owner }}"
group: "{{ backup_group }}"
mode: "0700"
- name: setup borg repository keys
copy:
content: "{{ backup_clients[item].borgkey }}"
dest: "{{ backup_key_folder }}/{{ backup_clients[item].app }}"
owner: "{{ backup_owner }}"
group: "{{ backup_group }}"
mode: "0600"
loop: "{{ backup_clients.keys() }}"
- name: setup local backup storage folder
file:
state: directory
path: "{{ item }}"
owner: "{{ backup_owner }}"
group: "{{ backup_group }}"
mode: "0750"
loop:
- "{{ backup_remotes_folder }}"
- "{{ backup_location }}/{{ backup_app }}"
- name: setup borg local repository
shell:
cmd: "BORG_PASSPHRASE=$(cat {{ backup_home }}/.borg.key) borg init --encryption repokey {{ backup_location }}/{{ backup_app }}"
creates: "{{ backup_location }}/{{ backup_app }}/config"
become_user: "{{ backup_owner }}"
become: yes
- name: setup borg server script
template:
src: "opt/backup/inst/cloud-server-backup.j2"
dest: "{{ backup_inst }}/cloud-server-backup"
owner: "{{ backup_owner }}"
group: "{{ backup_group }}"
mode: "0750"
- name: setup remote prune cron backup server job
cron:
name: "cloud server remote prune"
user: "{{ backup_cron_owner }}"
job: "{{ backup_inst }}/cloud-server-backup remote-prune"
hour: "{{ backup_server_remote_prune_time }}"
minute: 0
- name: setup remote backup cron backup server job
cron:
name: "cloud server remote backup"
user: "{{ backup_cron_owner }}"
job: "{{ backup_inst }}/cloud-server-backup backup"
hour: "{{ backup_server_remote_backup_time }}"
minute: 0
- name: setup local prune cron backup server job
cron:
name: "cloud server local prune"
user: "{{ backup_cron_owner }}"
job: "{{ backup_inst }}/cloud-server-backup prune"
hour: "{{ backup_server_local_prune_time }}"
minute: 0