Initial template repository
🎬 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>
This commit is contained in:
209
tasks/backup_setup.yml
Normal file
209
tasks/backup_setup.yml
Normal file
@@ -0,0 +1,209 @@
|
||||
---
|
||||
# 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']
|
||||
Reference in New Issue
Block a user