diff --git a/host_vars/dell.yml b/host_vars/dell.yml index 62dd86f..5dc62fc 100644 --- a/host_vars/dell.yml +++ b/host_vars/dell.yml @@ -1,7 +1,6 @@ --- vault_file: vault_vars/qnap-vault.yml -portainer_required_templates: [] portainer_endpoint: 34 services: [] docker_compose_services: [] diff --git a/host_vars/qnap.yml b/host_vars/qnap.yml index f420346..5f84ef0 100644 --- a/host_vars/qnap.yml +++ b/host_vars/qnap.yml @@ -46,13 +46,6 @@ portainer_required_files: dest_directory: /etc/config/OliveTin handler: restart-olivetin -portainer_required_templates: - - source_file: diun-config.j2 - dest_file_name: diun-config.yml - dest_directory: /etc/config/diun - handler: restart-diun - - portainer_endpoint: 2 services: - name: gitea @@ -64,10 +57,6 @@ services: default_network: mariadb_net image: nextcloud tag: 27.0 - - name: plex - template_vars: - plex_image: lscr.io/linuxserver/plex - plex_tag: 1.32.4 - name: mariadb template_vars: image: mariadb @@ -85,8 +74,8 @@ pihole_volumes: qnap_app: {} qnap_dns: {} - portainer_roles: + - role: portainer_plex - role: portainer_dashy - role: portainer_diun - role: portainer_dashdot diff --git a/host_vars/snunmu.yml b/host_vars/snunmu.yml index 02dcf81..db33bb2 100644 --- a/host_vars/snunmu.yml +++ b/host_vars/snunmu.yml @@ -1,12 +1,6 @@ --- vault_file: vault_vars/qnap-vault.yml -portainer_required_templates: - - source_file: diun-config.j2 - dest_file_name: diun-config.yml - dest_directory: /etc/config/diun - handler: restart-diun - portainer_endpoint: 35 services: - name: hasteypaste diff --git a/roles/portainer_plex/defaults/main.yml b/roles/portainer_plex/defaults/main.yml new file mode 100644 index 0000000..80e78b6 --- /dev/null +++ b/roles/portainer_plex/defaults/main.yml @@ -0,0 +1,12 @@ +--- +plex_portainer_stack_name: plex +plex_state: present +plex_image: lscr.io/linuxserver/plex +plex_tag: 1.32.4 +plex_container_name: plex +plex_expose_port: 32400 + +tautulli_container_name: tautulli +tautulli_image: lscr.io/linuxserver/tautulli +tautulli_tag: latest +tautulli_expose_port: 8182 diff --git a/roles/portainer_plex/tasks/main.yml b/roles/portainer_plex/tasks/main.yml new file mode 100644 index 0000000..78a5a92 --- /dev/null +++ b/roles/portainer_plex/tasks/main.yml @@ -0,0 +1,58 @@ +--- +- name: "Plex | Restore any missing volumes from S3" + ansible.builtin.include_role: + name: chatton.docker_backup.docker_s3_volume_restore + vars: + docker_backup_s3_volume: "{{ item }}" + with_items: + - name: "{{ plex_portainer_stack_name }}_config" + - name: "{{ plex_portainer_stack_name }}_tautulli_config" + +- name: "Plex | Update Portainer." + chatton.portainer.portainer_stack: + username: '{{ portainer_user }}' + password: '{{ portainer.password }}' + base_url: '{{ portainer_base_url }}' + stack_name: '{{ plex_portainer_stack_name }}' + endpoint_id: '{{ portainer_endpoint }}' + state: "{{ plex_state }}" + definition: + version: "3" + services: + plex: + labels: "{{ backup_labels }}" + image: "{{ plex_image }}:{{ plex_tag }}" + container_name: "{{ plex_container_name }}" + ports: + - "{{ plex_expose_port }}:32400" + network_mode: host + environment: + - PUID=1000 + - PGID=1000 + - VERSION=docker + volumes: + - config:/config + - "{{ directories.tv_dir }}:/tv" + - "{{ directories.movies_dir }}:/movies" + - "{{ directories.transcoding_dir }}:/transcoding" + restart: "{{ restart_policy }}" + devices: + - /dev/dri:/dev/dri + + tautulli: + labels: "{{ backup_labels }}" + image: lscr.io/linuxserver/tautulli:latest + container_name: tautulli + environment: + - PUID=1000 + - PGID=1000 + - TZ=Europe/London + volumes: + - tautulli_config:/config + ports: + - "{{ tautulli_expose_port }}:8181" + restart: "{{ restart_policy }}" + + volumes: + config: + tautulli_config: diff --git a/roles/setup_hosted_services/tasks/main.yml b/roles/setup_hosted_services/tasks/main.yml index 4f9c65c..0549079 100644 --- a/roles/setup_hosted_services/tasks/main.yml +++ b/roles/setup_hosted_services/tasks/main.yml @@ -32,27 +32,6 @@ loop_var: file_item notify: "{{ file_item.handler }}" -- name: Create required directories (templates). - ansible.builtin.file: - path: '{{ file_template.dest_directory }}' - state: directory - mode: '0755' - with_items: "{{ portainer_required_templates }}" - loop_control: - loop_var: file_template - -- name: Create required templates. - ansible.builtin.template: - src: "{{ file_template.source_file }}" - dest: "{{ file_template.dest_directory }}/{{ file_template.dest_file_name }}" - owner: root - group: root - mode: 0440 - with_items: "{{ portainer_required_templates }}" - loop_control: - loop_var: file_template - notify: "{{ file_template.handler }}" - - name: Create external docker networks. docker_network: name: '{{ item }}' diff --git a/roles/setup_hosted_services/templates/diun-config.j2 b/roles/setup_hosted_services/templates/diun-config.j2 deleted file mode 100644 index fef91e4..0000000 --- a/roles/setup_hosted_services/templates/diun-config.j2 +++ /dev/null @@ -1,24 +0,0 @@ -db: - path: diun.db - -watch: - workers: 10 - schedule: "0 */6 * * *" - jitter: 30s - # always want notification if an update is available - firstCheckNotif: true - -notif: - gotify: - endpoint: https://gotify.cianhatton.ie - token: {{ diun_gotify_token }} - priority: 1 - timeout: 10s - templateTitle: "{% raw %}{{ .Entry.Image }}{% endraw %} released" - templateBody: | - Docker tag {% raw %}{{ .Entry.Image }}{% endraw %} which you subscribed to through {% raw %}{{ .Entry.Provider }}{% endraw %} provider has been released. - -providers: -# check these separate to the docker system - File: - filename: /data/config.yml diff --git a/roles/setup_hosted_services/templates/diun.j2 b/roles/setup_hosted_services/templates/diun.j2 deleted file mode 100644 index 6729dd6..0000000 --- a/roles/setup_hosted_services/templates/diun.j2 +++ /dev/null @@ -1,27 +0,0 @@ ---- -version: "3.5" - -services: - diun: - image: crazymax/diun:latest - container_name: diun - command: serve - volumes: - - data:/data - - /var/run/docker.sock:/var/run/docker.sock - - /etc/config/diun/diun-config.yml:/data/config.yml - environment: - - TZ=Europe/Dublin - - LOG_LEVEL=debug - - LOG_JSON=false - - DIUN_WATCH_WORKERS=20 - - DIUN_WATCH_SCHEDULE=0 */6 * * * - - DIUN_WATCH_JITTER=30s - - DIUN_PROVIDERS_DOCKER=true - - DIUN_PROVIDERS_DOCKER_WATCHBYDEFAULT=true - - CONFIG=/data/config.yml - labels: - - diun.enable=true - restart: unless-stopped -volumes: - data: diff --git a/roles/setup_hosted_services/templates/plex.j2 b/roles/setup_hosted_services/templates/plex.j2 deleted file mode 100644 index 99c845e..0000000 --- a/roles/setup_hosted_services/templates/plex.j2 +++ /dev/null @@ -1,44 +0,0 @@ ---- -version: "3" -services: - plex: - labels: - ie.cianhatton.backup.enabled: "true" - ie.cianhatton.backup.schedule: "{{ backups.schedule_keys.nightly }}" - image: "{{ template_vars.plex_image }}:{{ template_vars.plex_tag }}" - container_name: plex - ports: - - 32400:32400 - network_mode: host - environment: - - PUID=1000 - - PGID=1000 - - VERSION=docker - volumes: - - config:/config - - {{ directories.tv_dir }}:/tv - - {{ directories.movies_dir }}:/movies - - {{ directories.transcoding_dir }}:/transcoding - restart: unless-stopped - devices: - - /dev/dri:/dev/dri - - tautulli: - labels: - ie.cianhatton.backup.enabled: "true" - ie.cianhatton.backup.schedule: "{{ backups.schedule_keys.nightly }}" - image: lscr.io/linuxserver/tautulli:latest - container_name: tautulli - environment: - - PUID=1000 - - PGID=1000 - - TZ=Europe/London - volumes: - - tautulli_config:/config - ports: - - 8182:8181 - restart: unless-stopped - -volumes: - config: - tautulli_config: