beug.k@beugsiud.deandClaude Opus 5.5 3065175673 feat(agent): enrollment, server connection and apply pipeline
- CLI: enroll, run, status, version, help (core.Main with a role
  factory); the agent binaries use a placeholder factory until the
  BIND and Kea roles are wired in.
- Enrollment: local ECDSA P-256 key and CSR, TLS 1.3 to the agent API
  with the server chain pinned to the CA fingerprint.
- ServerSource: mTLS gRPC with keepalive, Connect stream (Hello,
  Welcome, heartbeats, apply and renew commands), reconnect with
  exponential backoff and jitter, GetDesiredState polling as fallback,
  certificate renewal after half of the lifetime.
- Apply pipeline: fetch, bundle verification with replay protection,
  store, Validate, Activate, Health with retries, rollback to the last
  good revision; outcomes succeeded/rejected/rolled_back/failed are
  queued in state.json and reported; failed revisions are retried only
  by a newer revision or an explicit push.
- Lease reporting with change detection, persistent sequence and full
  snapshots at start, per connection and periodically.
- Tests with fake roles, a fake source and an in-process fake
  AgentService over real mTLS.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 19:06:05 +02:00

DDI-Suite

Selbst gehostete DDI-Lösung (DNS, DHCP, IP-Adressverwaltung) im Stil von VitalQIP: ein zentraler Management-Server verwaltet Netze und Adressen und rollt Konfigurationen auf Agents aus, die BIND 9 und Kea DHCP steuern.

„DDI-Suite“ ist ein Arbeitstitel. Alle Namen sind zentral konfigurierbar (ADR 0018).

Stand

Meilenstein Status
M0 Fundament (Repo, Build, Lint, CI, Entwicklungsumgebung, Architektur, ADRs) abgeschlossen (v0.1.0)
M1 Server-Kern (Schema, Anmeldung lokal/OIDC/TOTP, Rollen, Audit, Lizenz, REST-API, Netze/Adressen, Oberfläche) abgeschlossen (v0.2.0)
M2 Config-Generator (BIND/Kea aus dem Datenmodell, geprüft mit echtem BIND 9.18/9.20 und Kea 2.6/3.2) abgeschlossen (v0.3.0)
M3–M6 geplant, siehe ARCHITECTURE.md

Der Management-Server verwaltet Netze und Adressen (QIP-artige Tabelle), Benutzer, Lizenz und Audit-Log. Aus den Daten erzeugt er die BIND- und Kea-Konfiguration (Vorschau unter Konfiguration); das Ausrollen über die Agents folgt ab M3.

Dokumentation

Entwicklung

Voraussetzungen

Werkzeug Version Wofür
Go 1.27 (siehe go.mod) Server, Agents
Node.js 24 LTS Weboberfläche
GNU make, bash – Build-Einstieg, Skripte
buf 1.73 Protobuf-Lint und -Generierung (Netzzugriff auf buf.build)
golangci-lint 2.14 Go-Linter
shellcheck 0.11 Shell-Linter
Docker mit Compose aktuell Entwicklungsumgebung, Integrationstests

Unter Linux installiert scripts/ci/install-tools.sh buf, golangci-lint und shellcheck in den gepinnten Versionen mit Prüfsummenkontrolle.

Häufige Befehle

make help          # alle Ziele
make build         # Weboberfläche und Binaries für das eigene System nach bin/
make test          # Go- und Frontend-Tests
make lint          # alle Linter inkl. Lizenz-Header-Prüfung
make fmt           # formatieren
make generate      # Protobuf-Code neu erzeugen
make release       # Tarballs für linux/amd64 und linux/arm64 plus SHA256SUMS nach dist/

Entwicklungsumgebung

make dev-up        # PostgreSQL 17, BIND 9.20, Kea DHCPv4 3.2 starten
make dev-smoke     # prüfen, dass alles antwortet
make dev-admin     # ersten Administrator anlegen (gibt Einmal-Passwort aus)
make run-server    # Server auf http://127.0.0.1:8080
cd web && npm run dev   # Frontend mit Hot Reload, leitet API-Aufrufe an den Server weiter
make dev-down      # stoppen (Daten bleiben erhalten)
Dienst Erreichbar unter
PostgreSQL 127.0.0.1:5432 (DDI_DEV_PG_PORT), Benutzer/DB ddi, Passwort nur für Entwicklung (siehe Compose-Datei)
BIND 127.0.0.1:5353 UDP/TCP (DDI_DEV_DNS_PORT), Zonen dev.test und 2.0.192.in-addr.arpa
Kea DHCPv4 im Compose-Netz, bedient 192.0.2.0/24 über Relay (Testnetz nach RFC 5737)

CI

Gitea Actions unter .gitea/workflows/: Go (Lint, Tests mit Race-Detector, govulncheck), Protobuf, Web (ESLint, Typecheck, Tests, npm audit, Build), Shell/SPDX, Release-Probebau und ein Compose-Smoke-Test. Tags v* erzeugen ein Release mit Artefakten. Anforderungen an den Runner stehen in ADR 0003.

Lizenz

Der Management-Server (server/, web/, tools/) ist proprietär. Agents, Protokoll und gemeinsamer Code (agent/, proto/, internal/, deploy/, scripts/, test/) stehen unter der Apache-2.0-Lizenz. Details in LICENSE.

S
Description
No description provided
Readme
2.3 MiB
v0.9.1
Latest
2026-10-17 14:57:20 +00:00
Languages
Go 71.3%
TypeScript 17.9%
Shell 7.2%
PLpgSQL 1.4%
CSS 1.1%
Other 1%