This commit is contained in:
2025-11-13 01:02:07 +01:00
parent 67e5ed3807
commit 8ce890cae5
18 changed files with 767 additions and 442 deletions

239
README.md
View File

@@ -1,30 +1,31 @@
🚀 TUI-Ansible-Installer
Ein Terminal User Interface (TUI) zum Verwalten, Ausführen und Installieren von Ansible-Playbooks auf einem lokalen oder entfernten System.
Kurzbeschreibung
📌 Übersicht
Dieses Projekt stellt eine Terminal User Interface (TUI) zur Verfügung, die auf dem bestehenden AnsibleWorkflow aufsetzt.
Ziel ist nicht, eine komplett eigenständige Alternative zu Ansible zu sein, sondern eine Bedienoberfläche, die
die vorhandenen AnsiblePlaybooks, Inventories und Konfigurationen nutzt und für Interaktion, Auswahl und Ausführung vereinfacht.
Der TUI-Ansible-Installer ist ein Werkzeug, das auf einem Raspberry Pi oder jedem anderen Linux-System läuft.
Er dient als zentrale Verwaltungsoberfläche für Ansible-Playbooks und Zielsysteme.
Die TUI liest Playbooks aus der lokalen Playbook-Struktur ein, erlaubt die Auswahl eines Zielsystems und unterstützt die automatische Einrichtung der SSH-Schlüsselverbindung.
Wichtige Designentscheidung
🎯 Ziele des Projekts
Die TUI erweitert und orchestriert Ansible; alle Aktionen werden über Ansible (ansible-playbook, Inventory, Callback Plugins) ausgeführt.
Änderungen an Playbooks oder Inventories sollten weiterhin über die bekannten AnsibleMechanismen erfolgen (git, CI, editing).
Die TUI übernimmt keine proprietäre Konfiguration, sondern bietet eine Bedien und Automatisierungsschicht für den etablierten Workflow.
Eine einfache, intuitive TUI zur Auswahl und Ausführung von Playbooks
Ein Sonderfall: Lokaler Modus (Standalone)
Verwaltung lokaler oder externer Zielsysteme
Zusätzlich zur Integration in bestehende AnsibleInfrastrukturen bietet die TUI einen optionalen "Lokalen Modus".
Im Lokalen Modus kann die TUI auf einem Einzelrechner (z. B. Raspberry Pi) Playbooks installieren und ausführen, ohne dass dieser Rechner Teil eines zentralen Verbunds sein muss
oder zusätzliche ManagementFeatures (z. B. von "anvbe") genutzt werden. Das ist praktisch für Einzelinstallationen oder wenn kein zentrales Inventar vorhanden ist.
Automatische Vorbereitung des Zielsystems (SSH-Key-Setup, Abhängigkeiten, etc.)
Kurz über die Funktionsweise
Automatische Selbstprüfung des Installers → Installiert fehlende Abhängigkeiten
- Die TUI liest Playbooks aus einer konfigurierbaren PlaybookRoot (z. B. /playbook/playbooks) und zeigt die Struktur als Baum an.
- Auswahl und Ausführung von Playbooks erfolgen durch Aufruf von ansibleplaybook (mit passendem Inventory oder im connection=local Modus).
- Zielsysteme werden über das vorhandene AnsibleInventar oder über einfache, in der TUI gepflegte HostEinträge ausgewählt.
- SSHSchlüsseltransfer, Tests und optionale Synchronisation von /playbook/data werden über AnsibleMechanismen oder StandardTools (scp/rsync) umgesetzt.
Playbooks in einer übersichtlichen Tree-Struktur darstellen
Optionales Synchronisieren von Dateien aus /playbook/data zum Zielsystem per SCP
Minimal invasiv: Dateien in /playbook/data werden nicht in der TUI angezeigt
📁 Verzeichnisstruktur
Verzeichnisstruktur (Beispiel)
/playbook/
├── roles/
├── playbooks/
@@ -39,177 +40,67 @@ Minimal invasiv: Dateien in /playbook/data werden nicht in der TUI angezeigt
├── binaries/
└── ...
Bedeutung der Ordner
Bedeutung der Ordner
/playbook/playbooks/
Enthält die Playbooks und deren Ordnerstruktur → wird 1:1 als Tree im TUI angezeigt
Beinhaltet die Playbooks und deren Ordnerstruktur → wird 1:1 als Tree im TUI angezeigt.
/playbook/data/
Enthält Dateien, die ein Playbook benötigt (z. B. Konfigs, Installers, Template-Dateien).
→ Nicht im TUI sichtbar, aber vom Installer für SCP-Transfers nutzbar.
/playbook/data/
Dateien, die Playbooks benötigen (z. B. Konfigurationen, InstallationsBinaries, Templates).
Diese Dateien werden nicht direkt im PlaybookTree angezeigt, können aber optional vor dem Ausrollen synchronisiert werden.
🖥️ Funktionen der TUI
🔍 1. Autocheck beim Start
Funktionen der TUI
Beim Start prüft die TUI automatisch, ob alle benötigten Komponenten installiert sind:
1. Autocheck beim Start
- Prüft, ob Ansible, Python3, erforderliche pipModule, SSHClient und optional scp/rsync verfügbar sind.
- Bietet an, fehlende Abhängigkeiten automatisch zu installieren (mit Zustimmung des Nutzers).
Ansible
2. PlaybookBrowser
- Durchsucht die konfigurierte PlaybookRoot und zeigt Playbooks als baumartige Liste.
- Auswahl einzelner oder mehrerer Playbooks, Markierung für wiederkehrende Aufgaben.
Python3
3. Server/Zielsystemverwaltung
- Nutzen Sie bevorzugt das vorhandene AnsibleInventory.
- Zusätzlich kann die TUI einfache HostEinträge verwalten (Name, Host, User, optionales Passwort, SSHKeySetup).
- SSHKeySetup wird über StandardMechanismen umgesetzt (sshcopyid oder Ansible modules).
pip-Pakete
4. Ausführung von Playbooks
- Ausführung über ansibleplaybook. Wenn ein Host als lokal markiert ist, wird Verbindung als local/connection=local ausgeführt.
- LiveOutput, Fehlermeldungen und ExitStatus werden in der TUI dargestellt.
- Optional: Synchronisation von /playbook/data vor dem Ausrollen.
SSH-Client
5. Lokaler Modus
- Einrichtung des lokalen Inventars und Möglichkeit, Playbooks direkt auf dem aktuellen Rechner auszuführen.
- Nützlich, wenn der Rechner nicht in einen zentralen Verbund eingebunden werden soll oder wenn Features von "anvbe" nicht genutzt werden.
SCP / rsync (optional)
Bedienkonzept (Tasten)
Netzwerkverbindung
↑/↓ Navigation
→ Ordner öffnen / Auswahl bestätigen
← Zurück
S Server-/Zielsystemverwaltung
Enter Playbook starten / Menüpunkt auswählen
Space Playbook markieren
Q Beenden
Wenn etwas fehlt → automatische Abfrage:
Hinweise für Entwickler
„Das System ist noch nicht vorbereitet. Soll ich die fehlenden Komponenten installieren?
[Ja] / Nein“
- Die TUI sollte die vorhandenen AnsibleKommandos, Inventories und Playbooks verwenden. Keine eigenen proprietären Formate.
- Anpassungen an Integrationen (z. B. “anvbe”) sollten optional sein, nicht Voraussetzung.
- Tests sollten sowohl gegen echten AnsibleAufrufen als auch gegen MockStubs laufen (für CI).
Ja (Default): System wird vorbereitet
Geplante Erweiterungen
Nein: Nutzer kann das TUI-Menü trotzdem verwenden, aber keine Playbooks ausrollen
- Logging/Reporting in /var/log/tui-ansible/
- PluginSystem für zusätzliche Menüfunktionen
- Profile pro Zielsystem
- Zeitgesteuertes Ausrollen
- GitPull von Playbooks aus der TUI
🗂️ 2. Playbook-Browser
Voraussetzungen
Durchsucht /playbook/playbooks
Stellt die Struktur als baumartige Liste dar
Playbooks können einzeln ausgewählt und ausgeführt werden
Mehrfachauswahl möglich
Optional: Markieren von Playbooks für „automatische Aktualisierung“ eines Zielsystems
🖧 3. Server-/Zielsystemverwaltung
Über die Taste S (oder per Dateinavigation):
✏️ Server-Menü
Neues Zielsystem hinzufügen
Hostname / IP
Anzeigename
Benutzername
Passwort (optional)
Option: „SSH-Key automatisch einrichten“
Zielsystem auswählen
Zielsystem löschen
Zielsystem als „Standard“ setzen
🔐 SSH-Key-Setup
Bei aktivierter Option konfiguriert die TUI automatisch:
Verbindung zum Zielsystem aufbauen
System prüfen (SSH, Python, Sudo, etc.)
SSH-Key transferieren
Passwort-Login optional deaktivieren
Host in ~/.ssh/known_hosts eintragen
Testverbindung herstellen
🧰 4. Ausführen von Playbooks
Nach Auswahl eines Zielsystems kann der Nutzer:
Playbook(s) auswählen
Option: Dateien aus /playbook/data synchronisieren
Playbook sofort ausrollen
oder Zielsystem markieren: „Immer aktuell halten“
Bei Ausführung zeigt die TUI:
Live-Output (stdout)
Fehlermeldungen
Fortschrittsbalken
Erfolgsstatus
🖥️ 5. Lokaler Modus (Raspberry Pi selbst)
Der Installer kann den Raspberry Pi selbst als Ansible-Host konfigurieren:
Installation aller Abhängigkeiten
Einrichtung des lokalen Inventars
Automatische Systemprüfung
Optional: Playbooks direkt auf dem lokalen System ausführen
„Lokaler Modus“ kann jederzeit im Servermenü ausgewählt werden.
🧭 Bedienkonzept
Tastenbelegung (Vorschlag)
Taste Funktion
↑/↓ Navigation im Menü
→ Ordner öffnen / Auswahl bestätigen
← Zurück
S Server-/Zielsystemverwaltung
Enter Playbook starten / Menüpunkt auswählen
Space Playbook markieren
Q Beenden
⚡ Workflow-Beispiel
TUI starten → Autocheck
System vorbereiten (optional)
Server mit S hinzufügen
SSH-Key automatisch einrichten
Playbooks durchsuchen
Playbook auswählen
Ausrollen starten
Status direkt im TUI sehen
📝 Geplante Erweiterungen (optional)
Logging/Reporting im /var/log/tui-ansible/
Plugin-System: eigene Module für Menüfunktionen
Profile pro Zielsystem
Zeitgesteuertes Ausrollen
Git-Pull von Playbooks direkt in der TUI
📦 Voraussetzungen
Linux-System (Raspberry Pi empfohlen)
Python 3.9+
Ansible
SSH/SCP
Bibliothek für TUI (z. B. textual, urwid, rich)
- Linux (Raspberry Pi empfohlen)
- Python 3.9+
- Ansible installiert
- SSH/SCP (optional rsync)
- Bibliothek für TUI (z. B. textual, urwid, rich)