--- # Backup automation setup tasks - name: Create backup directories file: path: "{{ item }}" state: directory owner: "{{ docker_user }}" group: "{{ docker_group }}" mode: '0755' loop: - "{{ backup_dir }}" - "{{ backup_dir }}/configs" - "{{ backup_dir }}/compose" - "{{ backup_dir }}/scripts" - "{{ backup_dir }}/logs" tags: ['backup_dirs'] - name: Install backup utilities apt: name: - rsync - tar - gzip - pigz - pv state: present tags: ['backup_tools'] - name: Create main backup script template: src: backup-arrs.sh.j2 dest: "{{ docker_root }}/scripts/backup-arrs.sh" owner: "{{ docker_user }}" group: "{{ docker_group }}" mode: '0755' tags: ['backup_scripts'] - name: Create incremental backup script template: src: backup-incremental.sh.j2 dest: "{{ docker_root }}/scripts/backup-incremental.sh" owner: "{{ docker_user }}" group: "{{ docker_group }}" mode: '0755' tags: ['backup_scripts'] - name: Create restore script template: src: restore-arrs.sh.j2 dest: "{{ docker_root }}/scripts/restore-arrs.sh" owner: "{{ docker_user }}" group: "{{ docker_group }}" mode: '0755' tags: ['backup_scripts'] - name: Create backup verification script template: src: verify-backup.sh.j2 dest: "{{ docker_root }}/scripts/verify-backup.sh" owner: "{{ docker_user }}" group: "{{ docker_group }}" mode: '0755' tags: ['backup_scripts'] - name: Create backup cleanup script template: src: cleanup-backups.sh.j2 dest: "{{ docker_root }}/scripts/cleanup-backups.sh" owner: "{{ docker_user }}" group: "{{ docker_group }}" mode: '0755' tags: ['backup_scripts'] - name: Create backup configuration file template: src: backup.conf.j2 dest: "{{ docker_root }}/backup.conf" owner: "{{ docker_user }}" group: "{{ docker_group }}" mode: '0644' tags: ['backup_config'] - name: Set up scheduled backup cron job cron: name: "Arrs configuration backup" minute: "0" hour: "2" weekday: "0" job: "{{ docker_root }}/scripts/backup-arrs.sh >> {{ docker_root }}/logs/backup.log 2>&1" user: "{{ docker_user }}" when: backup_enabled tags: ['backup_cron'] - name: Set up daily incremental backup cron job cron: name: "Arrs incremental backup" minute: "30" hour: "3" job: "{{ docker_root }}/scripts/backup-incremental.sh >> {{ docker_root }}/logs/backup-incremental.log 2>&1" user: "{{ docker_user }}" when: backup_enabled tags: ['backup_cron'] - name: Set up backup cleanup cron job cron: name: "Backup cleanup" minute: "0" hour: "1" job: "{{ docker_root }}/scripts/cleanup-backups.sh >> {{ docker_root }}/logs/backup-cleanup.log 2>&1" user: "{{ docker_user }}" when: backup_enabled tags: ['backup_cron'] - name: Set up backup verification cron job cron: name: "Backup verification" minute: "0" hour: "4" weekday: "1" job: "{{ docker_root }}/scripts/verify-backup.sh >> {{ docker_root }}/logs/backup-verify.log 2>&1" user: "{{ docker_user }}" when: backup_enabled tags: ['backup_cron'] - name: Create database backup script (for future use) template: src: backup-databases.sh.j2 dest: "{{ docker_root }}/scripts/backup-databases.sh" owner: "{{ docker_user }}" group: "{{ docker_group }}" mode: '0755' tags: ['backup_scripts'] - name: Create media backup script (for large files) template: src: backup-media.sh.j2 dest: "{{ docker_root }}/scripts/backup-media.sh" owner: "{{ docker_user }}" group: "{{ docker_group }}" mode: '0755' tags: ['backup_scripts'] - name: Create backup status script template: src: backup-status.sh.j2 dest: "{{ docker_root }}/scripts/backup-status.sh" owner: "{{ docker_user }}" group: "{{ docker_group }}" mode: '0755' tags: ['backup_scripts'] - name: Create backup notification script template: src: backup-notify.sh.j2 dest: "{{ docker_root }}/scripts/backup-notify.sh" owner: "{{ docker_user }}" group: "{{ docker_group }}" mode: '0755' tags: ['backup_scripts'] - name: Create emergency backup script template: src: emergency-backup.sh.j2 dest: "{{ docker_root }}/scripts/emergency-backup.sh" owner: "{{ docker_user }}" group: "{{ docker_group }}" mode: '0755' tags: ['backup_scripts'] - name: Create backup README template: src: backup-README.md.j2 dest: "{{ backup_dir }}/README.md" owner: "{{ docker_user }}" group: "{{ docker_group }}" mode: '0644' tags: ['backup_docs'] - name: Set up log rotation for backup logs template: src: backup-logrotate.j2 dest: /etc/logrotate.d/arrs-backup mode: '0644' tags: ['backup_logging'] - name: Create initial backup command: "{{ docker_root }}/scripts/backup-arrs.sh" become_user: "{{ docker_user }}" when: backup_enabled tags: ['initial_backup'] - name: Display backup information debug: msg: | Backup system configured successfully! Backup location: {{ backup_dir }} Backup schedule: {{ backup_schedule }} Retention: {{ backup_retention_days }} days Manual backup commands: - Full backup: {{ docker_root }}/scripts/backup-arrs.sh - Incremental: {{ docker_root }}/scripts/backup-incremental.sh - Restore: {{ docker_root }}/scripts/restore-arrs.sh - Status: {{ docker_root }}/scripts/backup-status.sh Backup logs: {{ docker_root }}/logs/backup.log tags: ['backup_info']