From a7bafc988b4b26e0f460ed21f0e49e962bc635f1 Mon Sep 17 00:00:00 2001 From: chatton Date: Wed, 12 Jul 2023 22:53:31 +0100 Subject: [PATCH] moved pihole to use definition --- group_vars/servers.yml | 18 -------- host_vars/dell.yml | 3 +- host_vars/qnap.yml | 25 ++++++++++- host_vars/snunmu.yml | 13 ++++-- roles/portainer_pihole/defaults/main.yml | 8 ++++ roles/portainer_pihole/tasks/main.yml | 41 +++++++++++++++++++ .../setup_hosted_services/templates/gotify.j2 | 16 -------- .../setup_hosted_services/templates/minio.j2 | 26 ------------ .../setup_hosted_services/templates/pihole.j2 | 24 ----------- roles/setup_portainer/tasks/main.yml | 2 +- 10 files changed, 84 insertions(+), 92 deletions(-) create mode 100644 roles/portainer_pihole/defaults/main.yml create mode 100644 roles/portainer_pihole/tasks/main.yml delete mode 100644 roles/setup_hosted_services/templates/gotify.j2 delete mode 100644 roles/setup_hosted_services/templates/minio.j2 delete mode 100644 roles/setup_hosted_services/templates/pihole.j2 diff --git a/group_vars/servers.yml b/group_vars/servers.yml index fcf8eea..03e3ced 100644 --- a/group_vars/servers.yml +++ b/group_vars/servers.yml @@ -12,24 +12,6 @@ users: group: *main_user passwordless_sudo: true -directories: - # path on qnap where downloads go - downloads_dir: /mnt/ssd0/downloads - # path on qnap where plex transcoding happens - transcoding_dir: /mnt/ssd0/transcoding - # path on qnap where movies are stored - movies_dir: /mnt/mergerfs/media/movies - # path on qnap where tv shows are stored - tv_dir: /mnt/mergerfs/media/tv - # path on qnap where docker compose files are stored - docker_compose_directory: /etc/docker-compose - # path where photoprism photos are stored - photoprism_dir: /mnt/mergerfs/photoprism - # path to youtube videos - youtube_dir: /mnt/mergerfs/media/youtube - # path to where paperless docs will be stored - documents_dir: /mnt/mergerfs/documents - desired_docker_images: - ubuntu:latest diff --git a/host_vars/dell.yml b/host_vars/dell.yml index 2a55913..82f1ea2 100644 --- a/host_vars/dell.yml +++ b/host_vars/dell.yml @@ -52,7 +52,7 @@ docker_compose_services: command: server --console-address ":9001" /data volumes: - minio_storage: { } + minio_storage: {} ansible_pull_path: /usr/local/bin/ansible-pull @@ -66,5 +66,4 @@ cron_hour: "4" # - "tcp://0.0.0.0:2375" # - "unix:///var/run/docker.sock" -docker_backup_host_backup_directory: "/tmp" portainer_roles: [] diff --git a/host_vars/qnap.yml b/host_vars/qnap.yml index 6b3f0ca..7a95fca 100644 --- a/host_vars/qnap.yml +++ b/host_vars/qnap.yml @@ -10,6 +10,24 @@ mounts: - /mnt/data/device2 options: allow_other,use_ino +directories: + # path on qnap where downloads go + downloads_dir: /mnt/ssd0/downloads + # path on qnap where plex transcoding happens + transcoding_dir: /mnt/ssd0/transcoding + # path on qnap where movies are stored + movies_dir: /mnt/mergerfs/media/movies + # path on qnap where tv shows are stored + tv_dir: /mnt/mergerfs/media/tv + # path on qnap where docker compose files are stored + docker_compose_directory: /etc/docker-compose + # path where photoprism photos are stored + photoprism_dir: /mnt/mergerfs/photoprism + # path to youtube videos + youtube_dir: /mnt/mergerfs/media/youtube + # path to where paperless docs will be stored + documents_dir: /mnt/mergerfs/documents + # these directories will be backed up to s3. backup_directories: - path: /mnt/mergerfs/photoprism/originals @@ -86,13 +104,18 @@ services: image: photoprism/photoprism tag: 230615 - name: olivetin - - name: pihole - name: paperless - name: diun +pihole_volumes: + qnap_app: {} + qnap_dns: {} + + portainer_roles: - role: portainer_dashy - role: portainer_dashdot - role: portainer_glances - role: portainer_arr - role: portainer_gotify + - role: portainer_pihole diff --git a/host_vars/snunmu.yml b/host_vars/snunmu.yml index 88081c9..0b353f4 100644 --- a/host_vars/snunmu.yml +++ b/host_vars/snunmu.yml @@ -1,9 +1,6 @@ --- vault_file: vault_vars/qnap-vault.yml -docker_backup_aws_s3_encrypt: false -docker_backup_host_backup_directory: "/tmp" - portainer_required_templates: - source_file: diun-config.j2 dest_file_name: diun-config.yml @@ -12,7 +9,7 @@ portainer_required_templates: portainer_endpoint: 23 services: - - name: pihole +# - name: pihole - name: hasteypaste - name: diun @@ -28,9 +25,17 @@ docker_daemon_options: - "unix:///var/run/docker.sock" +# Note: this must be inline with the host name, +# this is a work around as it is not possible to template +# the name of the volume in the portainer task. +pihole_volumes: + snunmu_app: {} + snunmu_dns: {} + portainer_roles: - role: portainer_bookstack - role: portainer_vaultwarden - role: portainer_dashy - role: portainer_dashdot - role: portainer_glances + - role: portainer_pihole diff --git a/roles/portainer_pihole/defaults/main.yml b/roles/portainer_pihole/defaults/main.yml new file mode 100644 index 0000000..8813f0b --- /dev/null +++ b/roles/portainer_pihole/defaults/main.yml @@ -0,0 +1,8 @@ +--- +pihole_state: present +pihole_image: pihole/pihole +pihole_tag: 2022.09.2 +pihole_portainer_stack_name: pihole +pihole_container_name: pihole +# this variable MUST be set. See the tasks for the expected value. +pihole_volumes: {} diff --git a/roles/portainer_pihole/tasks/main.yml b/roles/portainer_pihole/tasks/main.yml new file mode 100644 index 0000000..cc497e4 --- /dev/null +++ b/roles/portainer_pihole/tasks/main.yml @@ -0,0 +1,41 @@ +--- +- name: "Pihole | 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: "{{ pihole_portainer_stack_name }}_{{ inventory_hostname_short }}_app" + - name: "{{ pihole_portainer_stack_name }}_{{ inventory_hostname_short }}_dns" + +- name: Setting host facts using complex arguments + ansible.builtin.set_fact: + vol_one: "{{ inventory_hostname_short }}_app" + +- name: "Pihole | Update Portainer." + chatton.portainer.portainer_stack: + username: '{{ portainer_user }}' + password: '{{ portainer.password }}' + base_url: '{{ portainer_base_url }}' + stack_name: '{{ pihole_portainer_stack_name }}' + endpoint_id: '{{ portainer_endpoint }}' + state: "{{ pihole_state }}" + definition: + version: "3" + services: + pihole: + labels: "{{ backup_labels }}" + container_name: "{{ pihole_container_name }}" + image: "{{ pihole_image }}:{{ pihole_tag }}" + ports: + - "53:53/tcp" + - "53:53/udp" + - "85:80/tcp" + environment: + WEBPASSWORD: '{{ pihole_web_password }}' + DNSMASQ_LISTENING: "all" + volumes: + - '{{ inventory_hostname_short }}_app:/etc/pihole' + - '{{ inventory_hostname_short }}_dns:/etc/dnsmasq.d' + restart: unless-stopped + volumes: "{{ pihole_volumes }}" diff --git a/roles/setup_hosted_services/templates/gotify.j2 b/roles/setup_hosted_services/templates/gotify.j2 deleted file mode 100644 index 32455bd..0000000 --- a/roles/setup_hosted_services/templates/gotify.j2 +++ /dev/null @@ -1,16 +0,0 @@ ---- -version: "3.1" -services: - gotify: - labels: - ie.cianhatton.backup.enabled: "true" - ie.cianhatton.backup.schedule: "{{ backups.schedule_keys.nightly }}" - image: gotify/server - container_name: gotify - volumes: - - data:/app/data - ports: - - 7875:80 - restart: unless-stopped -volumes: - data: diff --git a/roles/setup_hosted_services/templates/minio.j2 b/roles/setup_hosted_services/templates/minio.j2 deleted file mode 100644 index 22758bc..0000000 --- a/roles/setup_hosted_services/templates/minio.j2 +++ /dev/null @@ -1,26 +0,0 @@ ---- -version: '3' -services: - minio: - image: "{{ template_vars.image }}:{{ template_vars.tag }}" - ports: - # The web console - - "11000:9000" - # The API - - "11001:9001" - volumes: - - minio_storage:/data - environment: - # specified in the vault file - MINIO_ROOT_USER: "{{ minio_username }}" - MINIO_ROOT_PASSWORD: "{{ minio_password }}" - MINIO_API_ROOT_ACCESS: "on" - MINIO_BROWSER_REDIRECT_URL: http://192.168.178.42:11000 - # enable encryption - MINIO_KMS_AUTO_ENCRYPTION: "on" - MINIO_KMS_SECRET_KEY: "minio-key:{{ minio_encryption_key }}" - - command: server --console-address ":9001" /data - -volumes: - minio_storage: {} diff --git a/roles/setup_hosted_services/templates/pihole.j2 b/roles/setup_hosted_services/templates/pihole.j2 deleted file mode 100644 index 663bdce..0000000 --- a/roles/setup_hosted_services/templates/pihole.j2 +++ /dev/null @@ -1,24 +0,0 @@ ---- -version: "3" -services: - pihole: - labels: - ie.cianhatton.backup.enabled: "true" - ie.cianhatton.backup.schedule: "{{ backups.schedule_keys.nightly }}" - container_name: pihole - image: "pihole/pihole:2022.09.2" - ports: - - "53:53/tcp" - - "53:53/udp" - - "85:80/tcp" - environment: - WEBPASSWORD: '{{ pihole_web_password }}' - DNSMASQ_LISTENING: "all" - volumes: - - '{{ inventory_hostname_short }}_app:/etc/pihole' - - '{{ inventory_hostname_short }}_dns:/etc/dnsmasq.d' - restart: unless-stopped - -volumes: - {{ inventory_hostname_short }}_app: - {{ inventory_hostname_short }}_dns: diff --git a/roles/setup_portainer/tasks/main.yml b/roles/setup_portainer/tasks/main.yml index 9d8e66c..91b51c0 100644 --- a/roles/setup_portainer/tasks/main.yml +++ b/roles/setup_portainer/tasks/main.yml @@ -18,7 +18,7 @@ version: '3.2' services: portainer: - labels: "{{ backup_labels}}" + labels: "{{ backup_labels }}" image: "portainer/portainer-ce:{{ portainer_version }}" container_name: portainer restart: "{{ restart_policy }}"