CT-100 DNS: Migration nach Ansible abgeschlossen.

This commit is contained in:
2026-10-19 12:34:36 +02:00
parent 00ed091890
commit 82af4e9235
40 changed files with 1750 additions and 5 deletions
@@ -2,7 +2,7 @@
**Dokumenten-ID:** GNAI-012-PLAN
**Titel:** Pi-hole-LXC, FRITZ!Box-DNS und Split-DNS für interne Dienste
**Status:** Implementiert und im LAN produktiv; Ansible-Import und klar ausgewiesene Folgepunkte offen
**Status:** Implementiert und im LAN produktiv; Ansible-Sollzustand als CT-Projekt angelegt, privilegierte Live-Adoption und klar ausgewiesene Folgepunkte offen
**Stand:** 14.10.2026
**Referenzen:** [Projekt-Roadmap](../../../../GNAI-001-PLAN_Project-Roadmap.md), [Zugriffskonzept](../../../GNAI-005-SEC_Access-Control.md), [LXC-SSH-Architektur](../../GNAI-011-SEC_LXC-SSH-Architecture.md), [Reverse Proxy](../ct-103-reverse-proxy/GNAI-006-SEC_Reverse-Proxy.md), [WireGuard](../ct-105-wireguard/GNAI-007-SEC_VPN.md)
@@ -449,6 +449,51 @@ Zwei Konfigurationslücken bleiben vor weiteren Änderungen zu schließen:
Dieser begrenzte Hardening-Drift wird beim Ansible-Import geschlossen und
anschließend positiv und negativ geprüft.
### 10.3 Ansible-Sollzustandsprojekt vom 16.10.2026
Der erste Teil des Ansible-Imports ist umgesetzt: Das CT-Projekt
[`proxmox/lxc/ct-100-dns/ansible/`](../../../../../proxmox/lxc/ct-100-dns/ansible/README.md)
bildet den abgenommenen Ist-Zustand deklarativ ab, nach dem Schema des
CT-102-Keycloak-Projekts.
- Inventare: `production` (`ansible-deploy`, noch nicht existent), `bootstrap`
(`ghost`, passwortgeschütztes sudo) und `agent` (`ghost-agent`, nur lesend).
- Rollen: `dns_lxc_baseline` (Identität, Pakete, `/opt/pihole`),
`dns_access` (Konten, Schlüssel, sudo, SSH-Baseline),
`dns_firewall` (nftables), `dns_pihole` (Quadlet, Secret-Existenzprüfung)
sowie die gemeinsame Rolle `podman_runtime`.
- Playbooks: `preflight.yml` (rein lesend, ohne Become), `audit-production.yml`
(lesender Tiefaudit mit Root, meldet die beiden SSH-Drifts statt an ihnen zu
scheitern), `bootstrap.yml` (Adoption von `ansible-deploy`),
`site.yml` (Konvergenz), `verify-deploy-access.yml` und
`verify-production.yml` (beide rein lesend).
Nachweis am 16.10.2026: `preflight.yml` lief über den `ghost-agent` gegen das
produktive CT 100 mit `ok=18 changed=0 failed=0`; bestätigt wurden Identität,
keine fehlgeschlagenen Units, aktive Dienste, Listener auf 53/80/443/22,
Split-DNS, Upstream-Auflösung und Gravity-Blocking. Die Quadlet-Vorlage ist
byte-identisch mit der Live-Datei; die nftables-Vorlage weicht nur um die
Managed-Kennung ab; die SSH-Vorlage weicht nur um die beabsichtigten
Änderungen ab (zwei fehlende GNAI-011-Direktiven, `ansible-deploy` in
`AllowUsers`, Managed-Kennung).
Ein dedizierter `ansible-deploy`-Schlüssel wurde auf der Workstation erzeugt
(Public-Fingerprint `SHA256:b4k+ArcjHzo3jr/SSylOK52X7LzSRHrUcbFZ84GmEjY`);
der zugehörige Schlüssel liegt nicht im Repository. Noch offen und nur mit
expliziter Betreiberfreigabe durchzuführen: interaktiver
`bootstrap.yml`-Lauf, lesender Tiefaudit, `site.yml --check --diff`,
Konvergenz mit offener Konsole, `verify-production.yml` und ein zweiter Lauf
mit `changed=0`. Danach folgt der getrennte Rebuild-Test auf einem
temporären LXC.
Zusätzliche lesende Befunde vom 16.10.2026: In
`/etc/containers/systemd/` liegt eine inerte Bearbeitungsbackup-Datei
(`pihole.container.before-password-fix-20261001`); ihre Entfernung ist im
Projekt als bewusster Aufräumschritt deklariert. Die LXC-eigene
`resolv.conf` zeigt auf `10.0.0.1`, das an `10.0.0.14` weiterleitet;
Host-Namensauflösung funktioniert aktuell, der Aufbau bleibt aber
schleifenempfindlich und ist als Folgepunkt erfasst.
## 11. Primärquellen
- [Pi-hole – Voraussetzungen](https://docs.pi-hole.net/main/prerequisites/)