Skip to content

Schieb mal rüber – Replikation der PiHole Konfiguration mit Ansible

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

1 thought on “Schieb mal rüber – Replikation der PiHole Konfiguration mit Ansible”

  1. Pingback: Es lebt! – PiHole hochverfügbar mit keepalived – The Database Me

Leave a Reply

Your email address will not be published. Required fields are marked *