Ansible Playbook to set up PiHole with DNS-Over-HTTPS via cloudflared
|
!!!!!!!!!!!!!!! |
|
NOTE THIS IS A BASIC EXAMPLE OF A CONFIGURATION. |
|
YOU SHOULD COPY YOUR EXISTING CONFIGURATION FROM /etc/pihole/setupVars.conf |
|
THIS CAN BE USED AS A "STARTER" CONFIGURATION FOR FRESH INSTALLS BUT WILL OVERWRITE ANY EXISTING CONFIG |
|
!!!!!!!!!!!!!!! |
|
PIHOLE_INTERFACE=ens192 |
|
IPV4_ADDRESS=10.1.1.250/24 |
|
IPV6_ADDRESS= |
|
QUERY_LOGGING=true |
|
INSTALL_WEB=true |
|
LIGHTTPD_ENABLED=1 |
|
- hosts: pihole |
|
become: yes |
|
tasks: |
|
|
|
- include_role: |
|
name: bendews.cloudflared |
|
vars: |
|
cloudflared_port: 5053 |
|
|
|
- name: create pihole directory |
|
file: |
|
path: /etc/pihole |
|
state: directory |
|
|
|
- name: copy pihole conf |
|
copy: |
|
src: pihole-setupVars.conf |
|
dest: /etc/pihole/setupVars.conf |
|
register: pihole_config |
|
|
|
- stat: |
|
path: /usr/local/bin/pihole |
|
register: pihole_binary |
|
|
|
- set_fact: |
|
pihole_installed: "{{ pihole_binary.stat.exists | default(false) }}" |
|
|
|
- name: download install script |
|
get_url: |
|
url: https://raw.githubusercontent.com/pi-hole/pi-hole/master/automated%20install/basic-install.sh |
|
dest: ~/pihole-install.sh |
|
mode: u+rwx |
|
when: not pihole_installed |
|
|
|
- name: run install script |
|
shell: ~/pihole-install.sh --unattended |
|
when: not pihole_installed |
|
|
|
- name: copy dnsmasq conf |
|
copy: |
|
src: pihole-dnsmasq-cloudflared.conf |
|
dest: /etc/dnsmasq.d/50-cloudflared.conf |
|
register: dnsmasq_config |
|
|
|
- name: this should be done via a handler but is simplified for this gist |
|
set_fact: |
|
restart_dnsmasq: "{{ true if (pihole_config is changed or dnsmasq_config is changed) else false }}" |
|
|
|
- name: restart dnsmasq service (this should be done via a handler but is simplified for this gist) |
|
service: |
|
name: dnsmasq |
|
enabled: true |
|
state: restarted |
|
when: restart_dnsmasq |