Beschreibung
Ich versuche, Pi-hole 6.3 nicht-interaktiv mit dem Installer und dem Parameter --unattended zu installieren – sowohl manuell auf der Shell als auch aus einem Ansible-Playbook heraus.
Trotzdem öffnet der Installer den ncurses-Dialog („This installer will transform your device into a network-wide ad blocker!“) und wartet auf eine Bestätigung, sodass die Installation nicht unattended durchläuft.
Umgebung
- Pi-hole-Version: 6.3 (frische Installation, kein Upgrade)
- Betriebssystem: Debian 13 (Bookworm/Testing)
- Host: KVM/QEMU-VM
- Vorher kein Pi-hole installiert,
/etc/piholeexistiert vor dem Installer nicht - Keine
pihole.tomlodersetupVars.confvor der Installation vorhanden
Verwendeter Befehl
Manueller Test direkt auf der VM:
export DEBIAN_FRONTEND=noninteractive
export PIHOLE_SKIP_OS_CHECK=true
curl -sSL https://install.pi-hole.net | bash /dev/stdin --unattended
(Der gleiche Befehl wird auch in einem Ansible-shell-Task verwendet.)
Erwartetes Verhalten
Mit gesetztem --unattended erwarte ich, dass der Installer:
- keine interaktiven ncurses-/Dialog-Screens anzeigt
- entweder Standardwerte oder Werte aus einer vorhandenen Konfigurationsdatei verwendet
- mit einem nicht-null Exit-Code und einer klaren Fehlermeldung abbricht, falls eine unattended-Installation nicht möglich ist (z. B. weil keine
pihole.tomlexistiert), statt auf Benutzereingaben zu warten.
Tatsächliches Verhalten
- Der Installer öffnet die erste ncurses-Oberfläche
This installer will transform your device into a network-wide ad blocker! - Er wartet darauf, dass man „OK“ bestätigt.
- Wenn der Installer aus Ansible heraus gestartet wird, bleibt das Playbook an diesem Task hängen, weil keine TTY-Eingabe möglich ist.
In diesem Zustand wird auch kein /var/log/pihole-install.log angelegt, das Script scheint also sehr früh im Installationsablauf zu stoppen.
Was ich bereits geprüft habe
- DNS und Netzwerk funktionieren,
curl https://install.pi-hole.netläuft ohne Fehler. - Das Verhalten ist identisch, egal ob der Installer direkt auf der Shell oder über Ansible gestartet wird.
- Es wirkt so, als ob
--unattendedbei einer frischen v6.3-Installation ohne vorhandene Konfigurationsdatei ignoriert wird bzw. intern eine Config erwartet, ohne das klar mitzuteilen.
Wunsch / Vorschlag
Falls --unattended zwingend eine vorbereitete /etc/pihole/pihole.toml benötigt, wäre es sehr hilfreich, wenn der Installer:
- Ganz am Anfang prüft, ob diese Datei vorhanden ist, und
- Wenn sie fehlt, eine klare Fehlermeldung ausgibt wie z. B.:
Unattended installation requires /etc/pihole/pihole.toml – aborting.
und mit einem nicht-null Exit-Code abbricht, anstatt Dialoge zu öffnen.
Das würde automatisierte Deployments (z. B. mit Ansible) deutlich einfacher machen und verhindern, dass der Installer scheinbar „hängt“, ohne Logs zu erzeugen.
Wenn es bereits einen empfohlenen Weg für eine vollständig unattended Installation von v6.x gibt (z. B. minimaler Inhalt einer pihole.toml), wäre ein kurzes Beispiel in der Dokumentation sehr hilfreich.