GNAI-007: Ansible Rolle zum Installieren von Podman hinzugefügt.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Ghostnet.AI – Dokumentationsindex und Projektstand
|
||||
|
||||
**Stand:** 2026-09-19
|
||||
**Stand:** 2026-09-20
|
||||
**Status:** Revisionen zusammengeführt; Sicherheitsumsetzung und technische Endabnahme offen
|
||||
|
||||
## 1. Dokumente und Zielgruppen
|
||||
@@ -18,7 +18,7 @@
|
||||
| [GNAI-006-SEC_VPN_Clients_Linux.md](GNAI-006-SEC_VPN_Clients_Linux.md) | Debian, Arch/CachyOS, Fedora/Kinoite; Junior IT |
|
||||
| [GNAI-006-SEC_VPN_Implementation-Log.md](GNAI-006-SEC_VPN_Implementation-Log.md) | historische v14/v15-Umsetzung und Evidenzkorrekturen; Intermediate IT |
|
||||
| [GNAI-007-PLAN_Ansible-Deployment.md](GNAI-007-PLAN_Ansible-Deployment.md) | nicht finaler Arbeitsentwurf zum Ansible-/Gitea-Deployment und zur geplanten Folgedokumentation; Infrastrukturadministratoren und Mitwirkende |
|
||||
| [Ansible-Control-Projekt](../ansible/README.md) | Control-Node, Preflight, Deployment-Account und gemeinsame Host-Baseline; Intermediate IT |
|
||||
| [Ansible-Control-Projekt](../ansible/README.md) | Control-Node, Preflight, Deployment-Account, Host-Baseline und Podman-Runtime; Intermediate IT |
|
||||
|
||||
## 2. Verbindliche, bestätigte Entscheidungen
|
||||
|
||||
@@ -32,9 +32,9 @@ Der KI-Server heißt laut lesendem SSH-Abgleich vom 18.09.2026 `ghostnet-ki`; di
|
||||
|
||||
Die getrennten Schlüsselzugänge für `ghost` und `ghost-agent` wurden am 19.09.2026 erfolgreich getestet. Der persönliche Login wurde vom Betreiber interaktiv bestätigt; der Agentenlogin wurde technisch gegen Benutzername und Hostname geprüft.
|
||||
|
||||
Der KI-Server ist laut Betreiber frisch eingerichtet. Die LLM-Anwendungen sollen erst in einem späteren Sprint mit Ansible installiert werden. Bis dahin beschreiben GNAI-003 und GNAI-004 für diesen Host ein Zielbild; der lesende SSH-Abgleich betraf nur Basisbetrieb und Zugänge.
|
||||
Der KI-Server wurde als frisches Debian-Basissystem begonnen. Inzwischen sind die dokumentierten Ansible-Zugänge, die minimale Host-Baseline und Podman eingerichtet. Die LLM-Anwendungen sind weiterhin nicht installiert; GNAI-003 und GNAI-004 beschreiben für sie ein Zielbild.
|
||||
|
||||
Der [Ansible-Deployment-Entwurf](GNAI-007-PLAN_Ansible-Deployment.md) persistiert den Planungsstand vom 19.09.2026. Er ist ausdrücklich keine verbindliche Spezifikation und kein Nachweis einer eingerichteten Deploymentkette. Die dort genannten Runner-, Account-, Freigabe- und Secret-Verfahren sind bis zu ihrer Prüfung und formalen Übernahme vorläufig.
|
||||
Der [Ansible-Deployment-Entwurf](GNAI-007-PLAN_Ansible-Deployment.md) persistiert den seit dem 19.09.2026 fortgeschriebenen Planungs- und Implementierungsstand. Er ist ausdrücklich keine verbindliche Spezifikation und kein Nachweis einer vollständig eingerichteten Deploymentkette. Die dort genannten Runner-, Freigabe- und Secret-Verfahren sind bis zu ihrer Prüfung und formalen Übernahme vorläufig.
|
||||
|
||||
Das erste Ansible-Control-Projekt mit Testing-Inventar und lesendem Preflight wurde am 19.09.2026 angelegt. Der Live-Lauf über `ghost-agent` bestätigte Hostidentität, Debian 13.6, IPv4-Adresse, Python, CPU, RAM und zwei Navi-21-Geräte mit `changed=0`, `unreachable=0` und `failed=0`. Dieser Nachweis umfasst weder privilegierten Zugriff noch eine eingerichtete Production-/Testing-Laufzeitumgebung.
|
||||
|
||||
@@ -42,6 +42,8 @@ Der separate Ed25519-Schlüssel mit Fingerprint `SHA256:IKEInbIo8VVI1USg5+a3ypGK
|
||||
|
||||
Die erste schreibende Rolle `host_baseline` wurde am 19.09.2026 nach erfolgreichem Syntax- und Check-Modus-Lauf angewendet. Sie prüft Hostname, Debian-Hauptversion, Standard-IPv4 sowie mindestens 100 GiB freien Speicher und verwaltet ausschließlich `/etc/ghostnet-ai/{production,testing}` und `/var/lib/ghostnet-ai/{production,testing,shared}` mit Root-Eigentum. Der erste reale Lauf meldete `ok=6 changed=1 unreachable=0 failed=0`; der unmittelbar folgende identische Lauf belegte Idempotenz mit `ok=6 changed=0 unreachable=0 failed=0`. Pakete, Dienste und Anwendungen wurden dabei nicht verändert.
|
||||
|
||||
Die Rolle `podman_runtime` wurde am 20.09.2026 angewendet. Sie installierte Podman 5.4.2 aus Debian 13 einschließlich expliziter DNS- und rootless Netzwerkvoraussetzungen, prüfte systemd, cgroup v2, Overlay-Storage und den Quadlet-Generator und legte `/etc/containers/systemd` an. `podman.socket` und `podman-auto-update.timer` werden deaktiviert und gestoppt gehalten. Der abschließende Gesamtlauf meldete `ok=20 changed=0 unreachable=0 failed=0`; eine getrennte Prüfung bestätigte leere Image- und Containerlisten sowie beide Units als `disabled` und `inactive`.
|
||||
|
||||
## 3. Sicherheitsbefunde mit Priorität
|
||||
|
||||
| Befund | dokumentiertes Verfahren / Status |
|
||||
@@ -75,4 +77,6 @@ Beim anschließenden Bootstrap wurden Benutzer, Home-/SSH-Verzeichnisse, `author
|
||||
|
||||
Für die gemeinsame Host-Baseline bestätigte ein vorgelagerter Check-Modus genau sieben neu anzulegende Verzeichnisse und rund 1.677,7 GiB freien Platz auf `/`. Der anschließende reale Lauf legte die Verzeichniswurzeln an. Eine sofortige Wiederholung ergab `changed=0`; die Rolle konvergiert damit für ihren derzeitigen Umfang. Dieser Nachweis umfasst keine Paket-, Runtime-, GPU- oder Anwendungsinstallation.
|
||||
|
||||
Am 20.09.2026 sagte der Podman-Check-Modus 38 neue Debian-Pakete und das Quadlet-Verzeichnis voraus. Der reale Lauf installierte diese Pakete; seine erste Nachprüfung bewertete den Debian-Symlink des Quadlet-Generators irrtümlich nicht als reguläre Datei. Nach Korrektur der Ansible-`stat`-Prüfung auf das aufgelöste Ziel bestanden Podman 5.4.2, cgroup v2, Overlay-Storage und der Generator-Dry-Run. Der finale Gesamtlauf war mit `changed=0` idempotent. Es wurden weder Images geladen noch Container oder Anwendungsdienste angelegt.
|
||||
|
||||
Die WireGuard-Evidenz bleibt der Teiltest vom 12.09.2026: CachyOS-Laptop von WAN, Handshake, Ping auf Gateway/Proxmox und direkter IPv4-Internetpfad bestanden; KI-Server war ausgeschaltet. Neue Rollen, weitere Clientvarianten, Gateway-GUI-Zugriff, WAN-/IPv6-Isolation, Neustart und Restore sind noch nicht abgenommen. GNAI-006 ist erst nach Klärung der offenen Werte, Umsetzung und dokumentierter Abnahme technisch abgeschlossen.
|
||||
|
||||
@@ -2,12 +2,13 @@
|
||||
|
||||
**Dokumenten-ID:** GNAI-007-PLAN
|
||||
**Titel:** Ansible-Deployment für den KI-Server – Planungsstand
|
||||
**Stand:** 2026-09-19
|
||||
**Stand:** 2026-09-20
|
||||
**Status:** Nicht finaler Arbeitsentwurf zur Persistierung des aktuellen Planungsstands
|
||||
**Referenzen:** [Projektstand](GNAI-000-DOC_Index.md), [Zielarchitektur](GNAI-003-INFRA_Architecture.md), [Zugriffskonzept](GNAI-004-SEC_Access-Control.md)
|
||||
|
||||
> **Abgrenzung:** Dieses Dokument hält die Ergebnisse der Planungssession vom
|
||||
> 19.09.2026 fest. Es ist weder eine freigegebene technische Spezifikation noch
|
||||
> **Abgrenzung:** Dieses Dokument hält die Ergebnisse der am 19.09.2026
|
||||
> begonnenen und am 20.09.2026 fortgeschriebenen Planungssession fest. Es ist
|
||||
> weder eine freigegebene technische Spezifikation noch
|
||||
> eine Installationsanleitung oder ein Nachweis über bereits umgesetzte
|
||||
> Komponenten. Entscheidungen, die noch geprüft oder bestätigt werden müssen,
|
||||
> sind ausdrücklich als vorläufig oder offen gekennzeichnet.
|
||||
@@ -25,6 +26,7 @@
|
||||
| 2026-09-19 | 0.5 | spektr / Codex | technischen Schlüssel sowie Bootstrap- und Prüfplaybook für `ansible-deploy` vorbereitet; Ausführung bleibt interaktiv offen |
|
||||
| 2026-09-19 | 0.6 | spektr / Codex | `ansible-deploy` auf dem KI-Server eingerichtet und SSH-/sudo-Zugriff unabhängig erfolgreich verifiziert |
|
||||
| 2026-09-19 | 0.7 | spektr / Codex | minimale gemeinsame Host-Baseline mit Schutzprüfungen und getrennten Verzeichniswurzeln implementiert, angewendet und auf Idempotenz geprüft |
|
||||
| 2026-09-20 | 0.8 | spektr / Codex | gemeinsame Podman-/Quadlet-Runtime implementiert, installiert und ohne Images oder Container verifiziert |
|
||||
|
||||
---
|
||||
|
||||
@@ -65,11 +67,11 @@ aktuellen Plan nicht zum privilegierten Deployment-Account erweitert werden.
|
||||
Das Repository enthält inzwischen ein minimales Ansible-Control-Projekt mit
|
||||
Testing-Inventar, einem ausschließlich lesenden Preflight sowie Bootstrap- und
|
||||
Prüfplaybooks für `ansible-deploy`. Der privilegierte Deployment-Account ist
|
||||
eingerichtet und verifiziert. Eine erste schreibende Rolle verwaltet die
|
||||
gemeinsamen Konfigurations- und Datenwurzeln des Hosts; Anwendungsrollen und ein
|
||||
Production-Inventar existieren noch nicht. Der Preflight selbst nahm keine
|
||||
Änderungen vor; Bootstrap und Host-Baseline blieben auf die nachfolgend
|
||||
dokumentierten Zugangs- und Verzeichniszustände begrenzt.
|
||||
eingerichtet und verifiziert. Schreibende Rollen verwalten die gemeinsamen
|
||||
Konfigurations- und Datenwurzeln sowie Podman und Quadlet. Anwendungsrollen und
|
||||
ein Production-Inventar existieren noch nicht. Der Preflight selbst nahm keine
|
||||
Änderungen vor; die bislang angewendeten Rollen bleiben auf die nachfolgend
|
||||
dokumentierten Zugangs-, Verzeichnis- und Runtime-Zustände begrenzt.
|
||||
|
||||
---
|
||||
|
||||
@@ -112,7 +114,7 @@ Planungsrichtung und noch nicht bestätigten Implementierungsdetails.
|
||||
|
||||
| Thema | Aktueller Planungsstand | Verbindlichkeit / Nachweis |
|
||||
| --- | --- | --- |
|
||||
| Konfigurationsmanagement | Ansible beschreibt Basissystem, Laufzeitumgebung, Dienste und Konfiguration | minimales Control-Projekt, lesender Preflight und angewendete erste `host_baseline` vorhanden; Runtime- und Anwendungsrollen fehlen noch |
|
||||
| Konfigurationsmanagement | Ansible beschreibt Basissystem, Laufzeitumgebung, Dienste und Konfiguration | Control-Projekt, Preflight, `host_baseline` und `podman_runtime` vorhanden und angewendet; GPU- und Anwendungsrollen fehlen noch |
|
||||
| Quell- und Freigabeverfahren | Änderungen über Gitea-Branches und Pull Requests; kein regulärer Direkt-Push auf `main` | vorgesehen; Branch-Schutz noch nicht geprüft oder eingerichtet |
|
||||
| CI | Pull Requests erhalten Lint-, YAML- und Ansible-Syntaxprüfungen ohne produktive Zugangsdaten | vorgesehen; Workflow noch nicht vorhanden |
|
||||
| Produktionsausführung | Gitea Actions startet Ansible über eine dedizierte Production-Berechtigungsstufe | bevorzugte Lösung; Gitea-Version, Runner-Trennung und Actions-Funktion noch zu prüfen |
|
||||
@@ -532,7 +534,8 @@ nicht als Nachweis einer erfolgreichen Einrichtung.
|
||||
|
||||
### Phase D – KI-Laufzeit
|
||||
|
||||
- Podman und systemd-Integration;
|
||||
- Podman- und Quadlet-Grundruntime eingerichtet und geprüft; konkretes
|
||||
rootful/rootless Ausführungsmodell noch festzulegen;
|
||||
- AMD-GPU-/ROCm- oder alternative Laufzeit nach technischer Prüfung;
|
||||
- `llama.cpp` und lokaler Funktionstest;
|
||||
- Wiederanlauf nach geplantem Reboot prüfen.
|
||||
@@ -611,6 +614,8 @@ Herstellerdokumentationen herangezogen:
|
||||
- [Ansible Playbooks](https://docs.ansible.com/projects/ansible/latest/playbook_guide/playbooks_intro.html)
|
||||
- [Ansible Check- und Diff-Modus](https://docs.ansible.com/projects/ansible/latest/playbook_guide/playbooks_checkmode.html)
|
||||
- [Ansible Vault](https://docs.ansible.com/projects/ansible/latest/vault_guide/vault.html)
|
||||
- [Debian 13 – Paket `podman`](https://packages.debian.org/trixie/podman)
|
||||
- [Podman – Quadlet und systemd](https://docs.podman.io/en/latest/markdown/podman-systemd.unit.5.html)
|
||||
|
||||
Vor der Implementierung sind versionsspezifische Aussagen gegen die dann
|
||||
tatsächlich eingesetzten Gitea-, Runner- und Ansible-Versionen zu prüfen.
|
||||
@@ -689,21 +694,42 @@ Lauf endete mit `ok=6 changed=0 unreachable=0 failed=0` und belegt die
|
||||
Idempotenz des aktuellen Rollenumfangs. Es wurden keine Pakete installiert und
|
||||
keine Dienste, Container oder GPU-Komponenten verändert.
|
||||
|
||||
Am 20.09.2026 wurde `podman_runtime` in das gemeinsame Host-Playbook
|
||||
aufgenommen. Die Rolle installiert `podman`, `aardvark-dns`, `passt`,
|
||||
`slirp4netns` und `uidmap` ohne empfohlene Build- und Checkpoint-Pakete. Sie
|
||||
verlangt Debian 13, systemd und cgroup v2, verwaltet
|
||||
`/etc/containers/systemd`, prüft mindestens Podman-Hauptversion 5 sowie den
|
||||
Overlay-Storage und führt den Quadlet-Generator ohne Workload im Dry-Run aus.
|
||||
Der API-Socket und der automatische Image-Update-Timer bleiben explizit
|
||||
deaktiviert und gestoppt.
|
||||
|
||||
Der Check-Modus sagte 38 neue Pakete und das Quadlet-Verzeichnis voraus. Im
|
||||
ersten realen Lauf wurden die Pakete installiert; die anschließende
|
||||
Generatorprüfung schlug fehl, weil der Generator in Debian als Symlink
|
||||
bereitgestellt wird und die `stat`-Prüfung das Ziel zunächst nicht auflöste.
|
||||
Nach der Korrektur auf `follow: true` bestanden sämtliche Laufzeitprüfungen.
|
||||
Der finale Gesamtlauf endete mit
|
||||
`ok=20 changed=0 unreachable=0 failed=0`. Verifiziert wurden Podman 5.4.2,
|
||||
cgroup v2, der Storage-Treiber `overlay` und der ausführbare Quadlet-Generator.
|
||||
Eine getrennte Prüfung bestätigte außerdem leere Image- und Containerlisten
|
||||
sowie `podman.socket` und `podman-auto-update.timer` jeweils als `disabled` und
|
||||
`inactive`.
|
||||
|
||||
---
|
||||
|
||||
## 15. Abschlussgrenze dieses Entwurfs
|
||||
|
||||
Mit Version 0.7 sind der aktuelle Planungsstand, der ausdrücklich begrenzte
|
||||
Mit Version 0.8 sind der aktuelle Planungsstand, der ausdrücklich begrenzte
|
||||
Ansible-Preflight, der verifizierte Deployment-Account und die angewendete
|
||||
minimale Host-Baseline persistiert.
|
||||
minimale Host-Baseline sowie die Podman-/Quadlet-Grundruntime persistiert.
|
||||
Insbesondere wurden noch nicht:
|
||||
|
||||
- ein Gitea Runner angelegt,
|
||||
- Gitea Actions oder Schutzregeln konfiguriert,
|
||||
- Runtime- oder Anwendungsrollen, ein Production-Inventar oder ein Vault erstellt,
|
||||
- GPU- oder Anwendungsrollen, ein Production-Inventar oder ein Vault erstellt,
|
||||
- eine Production- oder Testing-Umgebung eingerichtet oder voneinander
|
||||
abgenommen,
|
||||
- Pakete oder Anwendungen auf dem KI-Server installiert,
|
||||
- GPU-Komponenten oder Anwendungen auf dem KI-Server installiert,
|
||||
- Backups oder Rollbacks praktisch getestet oder
|
||||
- die geplante Deploymentkette technisch abgenommen.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user