PiHole ist ein feines Mittel um lästiges Tracking und unerwünschte Werbung beim Surfen zu vermeiden. Leider ist piHole von Haus aus nicht dafür ausgelegt, dass man seine Installation mit mehreren piHole Systemen hochverfügbar gestaltet. Sollte ein piHole ausfallen, muss erst Ersatz aufgebaut und das letzte Backup eingespielt werden. In meinem Fall ist mein piHole auch noch mein DNS und DHCP Server, was die Sache noch erschwert. Da mir das zuviel Aufwand war und ich noch einen zweiten Raspberry Pi verfügbar hatte, habe ich mir ein Ansible Playbook geschrieben, dass mir die Konfiguration regelmäßig von meinem primären piHole auf ein Standby System überträgt. Im Falle einen Ausfalls, bin ich so mit wenigen Mausklicks wieder Einsatzbereit.
Um die Replikation bei euch ebenfalls aufzubauen, müsst ihr lediglich Ansible auf einem Linux System installiert haben. Dort clonen wir uns das Git Repository.
git clone https://github.com/thedatabaseme/pihole_replication.git
Gegebenenfalls müsst ihr einige Variablen im Playbook vor der ersten Ausführung anpassen. Eventuell ist piHole bei euch unter einem anderen Pfad verfügbar (vermutlich aber nicht).
---
- hosts: "{{ pihole_source_host | default ('all') }}"
vars:
pihole_home: '/etc/pihole/'
pihole_gravity_db: '{{ pihole_home }}gravity.db'
pihole_customlist: '{{ pihole_home }}custom.list'
pihole_adlist: '{{ pihole_home }}adlist.csv'
pihole_domainlist: '{{ pihole_home }}domainlist.csv'
pihole_dhcpleases: '{{ pihole_home }}dhcp.leases'
dnsmasq_home: '/etc/dnsmasq.d/'
dnsmasq_cnamelist: '{{ dnsmasq_home }}05-pihole-custom-cname.conf'
pihole_user: pihole
pihole_group: pihole
tasks:
- name: Generate AdList
shell: 'sqlite3 {{ pihole_gravity_db }} -header -csv "select * from adlist" > {{ pihole_adlist }}'
become: true
...
Beim Aufruf des Playbooks müssen wir die beiden Variablen pihole_source_host
und pihole_target_host
als Extra-Variablen übergeben. Der Playbook Aufruf könnte bei euch so aussehen.
ansible-playbook pihole_replication.yml -i hosts -e "pihole_source_host=piholesource pihole_target_host=piholetarget" -u username -k -K
Die Angabe -u username
ist natürlich nur notwendig, wenn ihr unter einem anderen Benutzer auf eurem piHole System agieren wollt. Ebenso ist die Angabe von -k
und -K
nur notwendig, wenn ihr euch per Passwort auf dem System mit SSH anmeldet (nicht per Key) und wenn die Ausführung von Befehlen mittels sudo ebenfalls eine Passworteingabe benötigt.
Git Repository: https://github.com/thedatabaseme/pihole_replication
Philip
Pingback: Es lebt! – PiHole hochverfügbar mit keepalived – The Database Me