From 35f7d0beb747d96bb7f9ce81c731ed37098ee1af Mon Sep 17 00:00:00 2001 From: josiah Date: Sat, 23 Dec 2023 16:39:36 -0600 Subject: [PATCH] Move plex declares to their own compose file. I wanted to have plex handled as part of swarm, but: a) it doesn't fucking matter becuase I don't intend to have fault tolerance for plex; i'm not even sure it can run well in a clustered way b) its just much much easier to get compose working rather than swarm. One day maybe i'd like to do that so that its a single stack to deliver, but meh. --- ansible/roles/abjure/defaults/main.yml | 36 ++++++++++++++++++ ansible/roles/abjure/tasks/main.yml | 17 ++++++++- .../roles/abjure/templates/abjure-compose.yml | 37 ------------------- .../abjure/templates/plex-compose.yml.j2 | 24 ++++++++++++ 4 files changed, 76 insertions(+), 38 deletions(-) create mode 100644 ansible/roles/abjure/defaults/main.yml create mode 100644 ansible/roles/abjure/templates/plex-compose.yml.j2 diff --git a/ansible/roles/abjure/defaults/main.yml b/ansible/roles/abjure/defaults/main.yml new file mode 100644 index 0000000..b5fb6a1 --- /dev/null +++ b/ansible/roles/abjure/defaults/main.yml @@ -0,0 +1,36 @@ +--- + +plex_ports: + - description: for access to the Plex Media Server [required] + port: 32400 + protocol: tcp + - description: "https://forums.plex.tv/t/port-32401-is-listening-whats-it-used-for/83080" + port: 32401 + protocol: tcp + - description: for access to the Plex DLNA Server + port: 1900 + protocol: udp + - description: for controlling Plex Home Theater via Plex Companion + port: 3005 + protocol: tcp + - description: for older Bonjour/Avahi network discovery + port: 5353 + protocol: udp + - description: for controlling Plex for Roku via Plex Companion + port: 8324 + protocol: tcp + - description: for current GDM network discovery + port: 32410 + protocol: udp + - description: for current GDM network discovery + port: 32412 + protocol: udp + - description: for current GDM network discovery + port: 32413 + protocol: udp + - description: for current GDM network discovery + port: 32414 + protocol: udp + - description: for access to the Plex DLNA Server + port: 32469 + protocol: tcp \ No newline at end of file diff --git a/ansible/roles/abjure/tasks/main.yml b/ansible/roles/abjure/tasks/main.yml index fbd05ed..ab288b0 100644 --- a/ansible/roles/abjure/tasks/main.yml +++ b/ansible/roles/abjure/tasks/main.yml @@ -62,4 +62,19 @@ name: abjure prune: yes compose: - - /home/josiah/apps/abjure/abjure-compose.yml \ No newline at end of file + - /home/josiah/apps/abjure/abjure-compose.yml + +- name: Install Plex compose file + template: + src: plex-compose.yml.j2 + dest: "/home/josiah/apps/plex/plex-compose.yml" + owner: "josiah" + group: "josiah" + mode: "0640" + +- name: Deploy Plex with docker-compose + docker_compose: + project_src: "/home/josiah/apps/plex/" + project_name: plex + files: + - plex-compose.yml diff --git a/ansible/roles/abjure/templates/abjure-compose.yml b/ansible/roles/abjure/templates/abjure-compose.yml index a29669e..4e16b75 100644 --- a/ansible/roles/abjure/templates/abjure-compose.yml +++ b/ansible/roles/abjure/templates/abjure-compose.yml @@ -11,14 +11,6 @@ services: - 80:80/tcp - 443:443/tcp - 8080:8080/tcp - - 32400:32400/tcp - - 8324:8324/tcp - - 32469:32469/tcp - - 1900:1900/udp - - 32410:32410/udp - - 32412:32412/udp - - 32413:32413/udp - - 32414:32414/udp volumes: - /home/josiah/apps/traefik/acme.json:/acme.json - traefik_logs:/var/log/access.log @@ -96,35 +88,6 @@ services: networks: - pubnet - plex: - image: plexinc/pms-docker - environment: - - TZ=America/Chicago - - PLEX_CLAIM="{{ vault_pms_claim_token }}" - - ADVERTISE_IP=http://192.168.1.120:443/ - hostname: lair - volumes: - - /home/josiah/apps/pms/config:/config - - /home/josiah/apps/pms/transcode:/transcode - - /media/usenet:/data - labels: - - "traefik.enable=true" - - "traefik.http.services.mediaserver-pms.loadbalancer.server.port=32400" - - "traefik.http.services.mediaserver-pms.loadbalancer.server.port=8324" - - "traefik.http.services.mediaserver-pms.loadbalancer.server.port=32469" - - "traefik.http.services.mediaserver-pms.loadbalancer.server.port=1900" - - "traefik.http.services.mediaserver-pms.loadbalancer.server.port=32410" - - "traefik.http.services.mediaserver-pms.loadbalancer.server.port=32412" - - "traefik.http.services.mediaserver-pms.loadbalancer.server.port=32413" - - "traefik.http.services.mediaserver-pms.loadbalancer.server.port=32414" - - "traefik.http.routers.mediaserver-pms.service=mediaserver-pms" - - "traefik.http.routers.mediaserver-pms.rule=Host(`pms.services.jowj.net`)" - - "traefik.http.routers.mediaserver-pms.tls.certResolver=mediaserver-resolver" - - "traefik.http.routers.mediaserver-pms.tls=true" - networks: - - pubnet - network_mode: bridge - volumes: traefik_acme: traefik_logs: diff --git a/ansible/roles/abjure/templates/plex-compose.yml.j2 b/ansible/roles/abjure/templates/plex-compose.yml.j2 new file mode 100644 index 0000000..9e8f2ad --- /dev/null +++ b/ansible/roles/abjure/templates/plex-compose.yml.j2 @@ -0,0 +1,24 @@ +version: '3.7' +services: + plex: + image: plexinc/pms-docker:latest + environment: + - "TZ=America/Chicago" + - "PLEX_CLAIM={{ vault_pms_claim_token }}" + - "ADVERTISE_IP=http://pms.services.jowj.net:32400/" + - "VERSION=docker" + - "UMASK_SET=022" + hostname: pms + volumes: + - /home/josiah/apps/plex/config:/config + - /home/josiah/apps/plex/transcode:/transcode + - /media/usenet:/data + devices: + - /dev/dri:/dev/dri + network_mode: bridge + ports: + # Note that traefik isn't used for these ports - we're just exposing them directly +{% for port in plex_ports %} + - "{{ port.port }}:{{ port.port }}/{{ port.protocol }}" +{% endfor %} +