diff --git a/host_vars/ogg b/host_vars/ogg index 1945e2b3e242874273ae4a92d65bdacf0d9d6ad5..887b05b928d1f3415bfca656a2453f14cb01ca40 100644 --- a/host_vars/ogg +++ b/host_vars/ogg @@ -31,8 +31,16 @@ webserver_ssl: false # Liste der gehosteten Domänen webserver_domains: - - "esphome.warpzone" - - "unifi.warpzone" + - "warpsrvint.warpzone" + - "esphome.warpzone.lan" + - "fridgeserver.warpzone.lan" + - "grafana.warpzone.lan" + - "services.warpzone.lan" + - "ha-.warpzone.lan" + - "omada.warpzone.lan" + - "pihole.warpzone.lan" + - "tasmoadmin.warpzone.lan" + - "zigbee2mqtt.warpzone.lan" administratorenteam: - "void" @@ -66,6 +74,7 @@ alert: - { name: "mqtt-tgfloat-1" } - { name: "nodered-app-1" } - { name: "omada-app-1" } + - { name: "pihole-app-1" } - { name: "tasmoadmin-app-1" } - { name: "traefik-app-1" } - { name: "watchtower-app-1" } diff --git a/intern/docker_pihole/tasks/main.yml b/intern/docker_pihole/tasks/main.yml new file mode 100644 index 0000000000000000000000000000000000000000..a13ffa4d1ea7c44a9703254a21ee3a3512cabdfe --- /dev/null +++ b/intern/docker_pihole/tasks/main.yml @@ -0,0 +1,34 @@ + +- include_tasks: ../functions/get_secret.yml + with_items: + - { path: "{{ basedir }}/secrets/admin_password", type: create, length: 24 } + +- name: "create folder struct for {{ servicename }}" + file: + path: "{{ item }}" + state: "directory" + with_items: + - "{{ basedir }}" + - "{{ basedir }}/secrets" + - "{{ basedir }}/etc" + - "{{ basedir }}/dnsmasq" + +- name: "create config files for {{ servicename }}" + template: + src: "{{ item }}" + dest: "{{ basedir }}/{{ item }}" + with_items: + - docker-compose.yml + - dnsmasq/09-localnet.conf + register: config + +- name: "stop {{ servicename}} docker" + community.docker.docker_compose_v2: + project_src: "{{ basedir }}" + state: absent + when: config.changed + +- name: "start {{ servicename}} docker" + community.docker.docker_compose_v2: + project_src: "{{ basedir }}" + state: present \ No newline at end of file diff --git a/intern/docker_pihole/templates/dnsmasq/09-localnet.conf b/intern/docker_pihole/templates/dnsmasq/09-localnet.conf new file mode 100644 index 0000000000000000000000000000000000000000..e6e272903e70968d79c0ce2c3d66037d392e835d --- /dev/null +++ b/intern/docker_pihole/templates/dnsmasq/09-localnet.conf @@ -0,0 +1,6 @@ + +# DNS Entries in the Format: +# address=/double-click.net/127.0.0.1 +{% for domain in webserver_domains %} +address=/{{domain}}/192.168.0.201 +{% endfor %} \ No newline at end of file diff --git a/intern/docker_pihole/templates/docker-compose.yml b/intern/docker_pihole/templates/docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..b7c74a8d7813c3cc4cbf397d1925b606d3ffa7f5 --- /dev/null +++ b/intern/docker_pihole/templates/docker-compose.yml @@ -0,0 +1,27 @@ +services: + app: + image: pihole/pihole:latest + restart: always + ports: + - "53:53/tcp" + - "53:53/udp" + volumes: + - '{{ basedir }}/etc:/etc/pihole' + - '{{ basedir }}/dnsmasq:/etc/dnsmasq.d' + hostname: pihole + environment: + TZ: 'Europe/Berlin' + FTLCONF_LOCAL_IPV4: '{{ int_ip4 }}' + WEBPASSWORD: '{{ admin_password }}' + labels: + - traefik.enable=true + - traefik.http.routers.{{ servicename }}.entrypoints=websecure + - traefik.http.routers.{{ servicename }}.rule=Host(`{{ domain }}`) + - traefik.http.services.{{ servicename }}.loadBalancer.server.port=80 + networks: + - default + - web + +networks: + web: + external: true \ No newline at end of file diff --git a/site.yml b/site.yml index b108a0dc61cdd3d89d699af7b75433e1b1d0e443..6df8afae08a113402ee7294e681393f082adba49 100644 --- a/site.yml +++ b/site.yml @@ -231,6 +231,12 @@ omada_port_https: 8043, omada_portal_https: 8843 } + - { + role: intern/docker_pihole, tags: pihole, + servicename: pihole, + basedir: /srv/pihole, + domain: "pihole.warpzone.lan" + } - { role: intern/docker_tasmoadmin, tags: [ tasmoadmin, docker_services ], servicename: tasmoadmin,