#!/usr/bin/env bash # TP31 — Caddyfile + DNS-Token in LXC 130 ausrollen. # # Das Token wird aus ~/.secrets/credentials.env gelesen und direkt in die # Container-Env-Datei geschrieben. Es erscheint dabei NIE auf stdout und nie in # einer Kommandozeile — dieselbe Regel wie bei `sshpass -e` (s. CLAUDE.md). set -euo pipefail PVE=${PVE:-root@10.40.20.100} CTID=${CTID:-130} HERE=$(cd "$(dirname "$0")" && pwd) TOKEN=$(grep -m1 '^CF_DNS_API_TOKEN=' ~/.secrets/credentials.env 2>/dev/null | cut -d= -f2- || true) if [ -z "${TOKEN}" ]; then echo "FEHLER: CF_DNS_API_TOKEN fehlt in ~/.secrets/credentials.env" >&2 echo " Anlegen in Cloudflare: My Profile -> API Tokens -> Create Token," >&2 echo " Permission 'Zone : DNS : Edit', Zone Resources auf emsenhuber.net begrenzen." >&2 echo " NICHT das account-weite CF_API_TOKEN wiederverwenden." >&2 exit 1 fi # 🔴 `pct push` meldet Exit 0 AUCH wenn es die Quelle nicht lesen kann # ("failed to open for reading", rc=0 — live gemessen 2026-09-21). # Ein `&&`/`||` hinter dem Push beweist deshalb NICHTS, und die anschliessende # `caddy validate` validiert dann die ALTE Datei -> gruene Abnahme bei # unveraendertem Zustand. Genau so ist der Nautobot-Umzug am 2026-09-21 # scheinbar gelandet, obwohl live noch die alte Backend-IP stand. # Deshalb: Push + md5-Vergleich in EINEM Remote-Aufruf, der bei Abweichung # hart abbricht. Gepusht wird nur der lokal bekannte Pfad — die frueheren # `\$\$`/`$$`-Verrenkungen waren der Ausloeser. push_verified() { # push_verified