summaryrefslogtreecommitdiff
path: root/playbooks/roles/pihole
diff options
context:
space:
mode:
Diffstat (limited to 'playbooks/roles/pihole')
-rw-r--r--playbooks/roles/pihole/tasks/main.yml22
-rw-r--r--playbooks/roles/pihole/templates/stacks/docker-compose.yml27
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: