--- - 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