162 lines
5.7 KiB
YAML
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
|
|
#
|
|
# =============================================================================
|