🎬 ARR Suite Template Bootstrap - Complete Media Automation Stack Features: - 16 production services (Prowlarr, Sonarr, Radarr, Plex, etc.) - One-command Ansible deployment - VPN-protected downloads via Gluetun - Tailscale secure access - Production-ready security (UFW, Fail2Ban) - Automated backups and monitoring - Comprehensive documentation Ready for customization and deployment to any VPS. Co-authored-by: openhands <openhands@all-hands.dev>
209 lines
5.5 KiB
YAML
209 lines
5.5 KiB
YAML
---
|
|
# 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'] |