Files
homelab-optimized/ansible/deploy_arr_suite_full.yml
Gitea Mirror Bot 4cde3f84d6
Some checks failed
Documentation / Deploy to GitHub Pages (push) Has been cancelled
Documentation / Build Docusaurus (push) Has been cancelled
Sanitized mirror from private repository - 2026-04-05 12:40:35 UTC
2026-04-05 12:40:35 +00:00

162 lines
5.7 KiB
YAML

# =============================================================================
# TASKS - DOCKER SERVICE
# =============================================================================
#
# SERVICE OVERVIEW:
# - Container: tasks
# - Image: "linuxserver/tautulli:latest",
# - Configuration: ansible/deploy_arr_suite_full.yml
#
# DISASTER RECOVERY PRIORITY: MEDIUM
# - Recovery Time Objective (RTO): 1 hour
# - Recovery Point Objective (RPO): 24 hours
#
# BACKUP REQUIREMENTS:
# - Configuration: Docker volumes and bind mounts
# - Data: Persistent volumes (if any)
# - Frequency: Daily for critical services, weekly for others
#
# DEPENDENCIES:
# - Docker daemon running
# - Network connectivity
# - Storage volumes accessible
# - Required environment variables set
#
# RECOVERY PROCEDURE:
# 1. Ensure dependencies are met
# 2. Restore configuration and data from backups
# 3. Deploy using: docker-compose -f deploy_arr_suite_full.yml up -d
# 4. Verify service functionality
# 5. Update monitoring and documentation
#
# =============================================================================
- name: Deploy ARR Suite with Ansible
hosts: all
become: yes
tasks:
- name: Ensure required directories exist
ansible.builtin.file:
path: "{{ item }}"
state: directory
mode: '0755'
owner: vish
group: vish
loop:
- /home/vish/docker/tautulli
- /home/vish/docker/prowlarr
- /home/vish/docker/flaresolverr
- /home/vish/docker/sabnzbd
- /home/vish/docker/sonarr
- /home/vish/docker/lidarr
- /home/vish/docker/radarr
- /home/vish/docker/readarr
- /home/vish/docker/bazarr
- /home/vish/docker/whisparr
- /home/vish/docker/plex
- /home/vish/docker/jellyseerr
- /home/vish/data/usenet
- /home/vish/data/media
- /home/vish/data
- name: Check if Docker is installed
ansible.builtin.command: docker --version
register: docker_installed
ignore_errors: yes
changed_when: false
- name: Install Docker (if not installed)
ansible.builtin.dnf:
name: docker-ce
state: present
when: docker_installed.rc != 0
- name: Install Python3 and Pip (if missing)
ansible.builtin.dnf:
name: python3-pip
state: present
- name: Install Docker Python module
ansible.builtin.pip:
name: docker
state: present
- name: Start Docker service
ansible.builtin.service:
name: docker
state: started
enabled: yes
- name: Deploy Docker network (synobridge)
community.docker.docker_network:
name: synobridge
- name: Deploy all containers
loop:
- { name: "tautulli", image: "linuxserver/tautulli:latest", port: "8181:8181", volume: "/home/vish/docker/tautulli:/config" }
- { name: "prowlarr", image: "linuxserver/prowlarr:latest", port: "9696:9696", volume: "/home/vish/docker/prowlarr:/config" }
- { name: "flaresolverr", image: "flaresolverr/flaresolverr:latest", port: "8191:8191", volume: "/home/vish/docker/flaresolverr:/config" }
- { name: "sabnzbd", image: "linuxserver/sabnzbd:latest", port: "8080:8080", volume: "/home/vish/docker/sabnzbd:/config" }
- { name: "sonarr", image: "linuxserver/sonarr:latest", port: "8989:8989", volume: "/home/vish/docker/sonarr:/config" }
- { name: "lidarr", image: "linuxserver/lidarr:latest", port: "8686:8686", volume: "/home/vish/docker/lidarr:/config" }
- { name: "radarr", image: "linuxserver/radarr:latest", port: "7878:7878", volume: "/home/vish/docker/radarr:/config" }
- { name: "readarr", image: "linuxserver/readarr:develop", port: "8787:8787", volume: "/home/vish/docker/readarr:/config" }
- { name: "bazarr", image: "linuxserver/bazarr:latest", port: "6767:6767", volume: "/home/vish/docker/bazarr:/config" }
- { name: "whisparr", image: "hotio/whisparr:nightly", port: "6969:6969", volume: "/home/vish/docker/whisparr:/config" }
- { name: "jellyseerr", image: "fallenbagel/jellyseerr:latest", port: "5055:5055", volume: "/home/vish/docker/jellyseerr:/app/config" }
community.docker.docker_container:
name: "{{ item.name }}"
image: "{{ item.image }}"
env:
PUID: "1000"
PGID: "1000"
TZ: "America/Los_Angeles"
UMASK: "022"
volumes:
- "{{ item.volume }}"
ports:
- "{{ item.port }}"
network_mode: synobridge
security_opts:
- no-new-privileges:true
restart_policy: always
- name: Deploy Plex
community.docker.docker_container:
name: plex
image: linuxserver/plex:latest
env:
PUID: "1000"
PGID: "1000"
TZ: "America/Los_Angeles"
UMASK: "022"
VERSION: "docker"
PLEX_CLAIM: ""
volumes:
- /home/vish/docker/plex:/config
- /home/vish/data/media:/data/media
devices:
- /dev/dri:/dev/dri
network_mode: host
security_opts:
- no-new-privileges:true
restart_policy: always
# =============================================================================
# BASIC DISASTER RECOVERY COMMANDS
# =============================================================================
#
# BACKUP:
# docker-compose -f deploy_arr_suite_full.yml down
# tar -czf backup-tasks-$(date +%Y%m%d).tar.gz [volume-paths]
#
# RESTORE:
# tar -xzf backup-tasks-[date].tar.gz
# docker-compose -f deploy_arr_suite_full.yml up -d
#
# VERIFY:
# docker-compose -f deploy_arr_suite_full.yml ps
# docker logs tasks
#
# =============================================================================