diff options
Diffstat (limited to 'playbooks/roles/pihole')
-rw-r--r-- | playbooks/roles/pihole/tasks/main.yml | 22 | ||||
-rw-r--r-- | playbooks/roles/pihole/templates/stacks/docker-compose.yml | 27 |
2 files changed, 22 insertions, 27 deletions
diff --git a/playbooks/roles/pihole/tasks/main.yml b/playbooks/roles/pihole/tasks/main.yml index 6990623..fc526dc 100644 --- a/playbooks/roles/pihole/tasks/main.yml +++ b/playbooks/roles/pihole/tasks/main.yml @@ -1,19 +1,9 @@ --- -- name: Build pihole compose dirs - ansible.builtin.file: - state: directory - dest: '{{ pihole_base }}/{{ item.path }}' - with_filetree: '../templates' - when: item.state == 'directory' +- name: Deploy pihole + ansible.builtin.import_tasks: manage-docker-swarm-service.yml + vars: + service_name: pihole + template_render_dir: "../templates" + service_destination_dir: "{{ pihole_base }}" -- name: Build pihole compose files - ansible.builtin.template: - src: '{{ item.src }}' - dest: '{{ pihole_base }}/{{ item.path }}' - with_filetree: '../templates' - when: item.state == 'file' - -- name: Deploy Pihole stack - ansible.builtin.command: - cmd: "docker stack deploy -c {{ pihole_base }}/stacks/docker-compose.yml pihole" diff --git a/playbooks/roles/pihole/templates/stacks/docker-compose.yml b/playbooks/roles/pihole/templates/stacks/docker-compose.yml index a99d7db..47422f1 100644 --- a/playbooks/roles/pihole/templates/stacks/docker-compose.yml +++ b/playbooks/roles/pihole/templates/stacks/docker-compose.yml @@ -1,19 +1,33 @@ -version: '3.2' - services: pihole: image: pihole/pihole:latest + ports: + - "53:53/udp" + - "53:53/tcp" volumes: - {{ pihole_base }}/volumes/pihole:/etc/pihole - {{ pihole_base }}/volumes/dnsmasq:/etc/dnsmasq.d environment: + - DEPLOYMENT_TIME={{ now() }} - TZ={{ timezone }} - FTLCONF_webserver_api_password={{ pihole_webpwd }} - FTLCONF_dns_upstreams={{ upstream_dns_servers | join(';') }} networks: - proxy +{% if not homelab_build %} + healthcheck: + test: ["CMD-SHELL", "dig loadbalancer.{{ domain }} @127.0.0.1 | grep -q {{ loadbalancer_ip }}"] + retries: 3 + timeout: 5s + start_period: 8s +{% endif %} deploy: mode: replicated + update_config: + parallelism: 1 + order: start-first + failure_action: rollback + monitor: 10s replicas: 1 labels: - traefik.enable=true @@ -23,15 +37,6 @@ services: - traefik.http.routers.piholeweb.rule=Host(`{{ pihole_domain }}`) - traefik.http.routers.piholeweb.entrypoints=websecure - traefik.http.services.piholeweb.loadbalancer.server.port=80 - # 53/udp - - traefik.udp.routers.pihole-dns-udp.entrypoints=dns_udp - - traefik.udp.routers.pihole-dns-udp.service=pihole-dns-udp - - traefik.udp.services.pihole-dns-udp.loadbalancer.server.port=53 - # 53/tcp - - traefik.tcp.routers.pihole-dns-tcp.rule=HostSNI(`*`) - - traefik.tcp.routers.pihole-dns-tcp.entrypoints=dns_tcp - - traefik.tcp.routers.pihole-dns-tcp.service=pihole-dns-tcp - - traefik.tcp.services.pihole-dns-tcp.loadbalancer.server.port=53 networks: proxy: |