-
This commit is contained in:
239
README.md
239
README.md
@@ -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 Ansible‑Workflow aufsetzt.
|
||||
Ziel ist nicht, eine komplett eigenständige Alternative zu Ansible zu sein, sondern eine Bedienoberfläche, die
|
||||
die vorhandenen Ansible‑Playbooks, 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 Ansible‑Mechanismen 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 Ansible‑Infrastrukturen 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 Management‑Features (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 Playbook‑Root (z. B. /playbook/playbooks) und zeigt die Struktur als Baum an.
|
||||
- Auswahl und Ausführung von Playbooks erfolgen durch Aufruf von ansible‑playbook (mit passendem Inventory oder im connection=local Modus).
|
||||
- Zielsysteme werden über das vorhandene Ansible‑Inventar oder über einfache, in der TUI gepflegte Host‑Einträge ausgewählt.
|
||||
- SSH‑Schlüsseltransfer, Tests und optionale Synchronisation von /playbook/data werden über Ansible‑Mechanismen oder Standard‑Tools (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, Installations‑Binaries, Templates).
|
||||
Diese Dateien werden nicht direkt im Playbook‑Tree 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 pip‑Module, SSH‑Client und optional scp/rsync verfügbar sind.
|
||||
- Bietet an, fehlende Abhängigkeiten automatisch zu installieren (mit Zustimmung des Nutzers).
|
||||
|
||||
Ansible
|
||||
2. Playbook‑Browser
|
||||
- Durchsucht die konfigurierte Playbook‑Root 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 Ansible‑Inventory.
|
||||
- Zusätzlich kann die TUI einfache Host‑Einträge verwalten (Name, Host, User, optionales Passwort, SSH‑Key‑Setup).
|
||||
- SSH‑Key‑Setup wird über Standard‑Mechanismen umgesetzt (ssh‑copy‑id oder Ansible modules).
|
||||
|
||||
pip-Pakete
|
||||
4. Ausführung von Playbooks
|
||||
- Ausführung über ansible‑playbook. Wenn ein Host als lokal markiert ist, wird Verbindung als local/connection=local ausgeführt.
|
||||
- Live‑Output, Fehlermeldungen und Exit‑Status 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 Ansible‑Kommandos, 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 Ansible‑Aufrufen als auch gegen Mock‑Stubs 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/
|
||||
- Plugin‑System für zusätzliche Menüfunktionen
|
||||
- Profile pro Zielsystem
|
||||
- Zeitgesteuertes Ausrollen
|
||||
- Git‑Pull 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)
|
||||
|
||||
Reference in New Issue
Block a user