TP31: cf-sync.py Parser+Logik-Fix, CF-Leichen geloescht, grafana-Ingress-Backup
- cf-sync.py: Multi-Hostname-Caddy-Bloecke geparst (27 statt 5 Sites), Vergleich CF->Caddy statt CF->Origin (TP31-Zielbild), *.bf.*-intern gefiltert - CF: 6 CNAME- und 1 Ingress-Leiche geloescht (grafana, gateway-dw, nautobot, phpmyadmin.bf, speedtest.bf, z2m25.bf) - Backup vor grafana-Removal
This commit is contained in:
@@ -52,14 +52,16 @@ def caddy_sites():
|
||||
sites, site = {}, None
|
||||
with open(os.path.join(HERE, "Caddyfile"), encoding="utf-8") as fh:
|
||||
for line in fh:
|
||||
m = re.match(r"^([a-z0-9.-]+\.%s)\s*\{" % re.escape(ZONE), line)
|
||||
# Block-Header: ein oder mehrere Hostnamen (kommagetrennt) vor "{"
|
||||
m = re.match(r"^([a-z0-9.-]+(?:\s*,\s*[a-z0-9.-]+)*\.%s)\s*\{" % re.escape(ZONE), line)
|
||||
if m:
|
||||
site = m.group(1)
|
||||
continue
|
||||
if site:
|
||||
m2 = re.search(r"reverse_proxy\s+(\S+)", line)
|
||||
if m2:
|
||||
sites[site] = m2.group(1)
|
||||
for host in site.split(","):
|
||||
sites[host.strip()] = m2.group(1)
|
||||
site = None
|
||||
return sites
|
||||
|
||||
@@ -94,16 +96,20 @@ def main():
|
||||
|
||||
drift = []
|
||||
|
||||
# 1) Ingress gegen Caddyfile
|
||||
# 1) Ingress gegen Caddyfile.
|
||||
# Zielbild (TP31): CF-Ingress zeigt auf Caddy (10.40.20.40), Caddy aufs Origin.
|
||||
# Zeigt CF direkt auf ein Origin (nicht Caddy), ist das die alte Architektur = Drift.
|
||||
for host, (tun, svc) in sorted(ingress.items()):
|
||||
if svc.startswith("ssh://"):
|
||||
continue
|
||||
if host not in caddy:
|
||||
drift.append(f"NUR-CF {host:<32} {tun}: {svc} (in Caddy nicht vorhanden)")
|
||||
elif caddy[host] != svc:
|
||||
drift.append(f"ABWEICHEND {host:<32} CF={svc} Caddy={caddy[host]}")
|
||||
elif not svc.startswith(f"http://{CADDY_IP}"):
|
||||
drift.append(f"ABWEICHEND {host:<32} CF={svc} (zeigt nicht auf Caddy {CADDY_IP})")
|
||||
# Caddy-Sites ohne CF-Ingress: nur die suffixlosen Namen sind potenziell Drift.
|
||||
# *.bf.*-Namen sind bewusst intern (Split-Horizon) und brauchen keinen Ingress.
|
||||
for host, svc in sorted(caddy.items()):
|
||||
if host not in ingress:
|
||||
if host not in ingress and not host.endswith(".bf." + ZONE):
|
||||
drift.append(f"NUR-CADDY {host:<32} {svc} (kein CF-Ingress — intern oder bewusst)")
|
||||
|
||||
# 2) CNAMEs, die auf einen Tunnel zeigen, aber keine Ingress-Regel mehr haben
|
||||
|
||||
Reference in New Issue
Block a user