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