51 lines
1.3 KiB
YAML
51 lines
1.3 KiB
YAML
---
|
|
- name: Install backup tools
|
|
ansible.builtin.apt:
|
|
name:
|
|
- rsync
|
|
- borgbackup
|
|
- rclone
|
|
- restic
|
|
state: present
|
|
|
|
- name: Create backup directories
|
|
ansible.builtin.file:
|
|
path: "{{ item }}"
|
|
state: directory
|
|
mode: '0755'
|
|
loop:
|
|
- /opt/backups
|
|
- /opt/backups/scripts
|
|
- /var/log/backups
|
|
|
|
- name: Deploy backup script for home directories
|
|
ansible.builtin.template:
|
|
src: backup-home.sh.j2
|
|
dest: /opt/backups/scripts/backup-home.sh
|
|
mode: '0755'
|
|
|
|
- name: Deploy backup script for system configs
|
|
ansible.builtin.template:
|
|
src: backup-system.sh.j2
|
|
dest: /opt/backups/scripts/backup-system.sh
|
|
mode: '0755'
|
|
|
|
- name: Create backup cron jobs
|
|
ansible.builtin.cron:
|
|
name: "{{ item.name }}"
|
|
job: "{{ item.job }}"
|
|
minute: "{{ item.minute }}"
|
|
hour: "{{ item.hour }}"
|
|
day: "{{ item.day | default('*') }}"
|
|
user: root
|
|
loop:
|
|
- name: "Daily home backup"
|
|
job: "/opt/backups/scripts/backup-home.sh >> /var/log/backups/home.log 2>&1"
|
|
minute: "0"
|
|
hour: "2"
|
|
- name: "Daily system config backup"
|
|
job: "/opt/backups/scripts/backup-system.sh >> /var/log/backups/system.log 2>&1"
|
|
minute: "30"
|
|
hour: "2"
|
|
when: backup_enable_cron | default(true) | bool
|