107 lines
4.9 KiB
Markdown
107 lines
4.9 KiB
Markdown
đ TUI-Ansible-Installer
|
||
|
||
Kurzbeschreibung
|
||
|
||
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.
|
||
|
||
Wichtige Designentscheidung
|
||
|
||
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.
|
||
|
||
Ein Sonderfall: Lokaler Modus (Standalone)
|
||
|
||
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.
|
||
|
||
Kurz ĂŒber die Funktionsweise
|
||
|
||
- 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.
|
||
|
||
Verzeichnisstruktur (Beispiel)
|
||
/playbook/
|
||
âââ roles/
|
||
âââ playbooks/
|
||
â âââ system/
|
||
â â âââ update.yml
|
||
â â âââ upgrade.yml
|
||
â âââ docker/
|
||
â â âââ install.yml
|
||
â âââ ...
|
||
âââ data/
|
||
âââ templates/
|
||
âââ binaries/
|
||
âââ ...
|
||
|
||
Bedeutung der Ordner
|
||
|
||
/playbook/playbooks/
|
||
Beinhaltet die Playbooks und deren Ordnerstruktur â wird 1:1 als Tree im TUI angezeigt.
|
||
|
||
/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
|
||
- 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).
|
||
|
||
2. PlaybookâBrowser
|
||
- Durchsucht die konfigurierte PlaybookâRoot und zeigt Playbooks als baumartige Liste.
|
||
- Auswahl einzelner oder mehrerer Playbooks, Markierung fĂŒr wiederkehrende Aufgaben.
|
||
|
||
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).
|
||
|
||
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.
|
||
|
||
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.
|
||
|
||
Bedienkonzept (Tasten)
|
||
|
||
â/â Navigation
|
||
â Ordner öffnen / Auswahl bestĂ€tigen
|
||
â ZurĂŒck
|
||
S Server-/Zielsystemverwaltung
|
||
Enter Playbook starten / MenĂŒpunkt auswĂ€hlen
|
||
Space Playbook markieren
|
||
Q Beenden
|
||
|
||
Hinweise fĂŒr Entwickler
|
||
|
||
- 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).
|
||
|
||
Geplante Erweiterungen
|
||
|
||
- 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
|
||
|
||
Voraussetzungen
|
||
|
||
- Linux (Raspberry Pi empfohlen)
|
||
- Python 3.9+
|
||
- Ansible installiert
|
||
- SSH/SCP (optional rsync)
|
||
- Bibliothek fĂŒr TUI (z. B. textual, urwid, rich)
|