Files
ansible-tui/README.md
2025-11-13 01:02:07 +01:00

4.9 KiB
Raw Blame History

🚀 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).
  1. Playbook‑Browser
  • Durchsucht die konfigurierte Playbook‑Root und zeigt Playbooks als baumartige Liste.
  • Auswahl einzelner oder mehrerer Playbooks, Markierung fĂŒr wiederkehrende Aufgaben.
  1. 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).
  1. 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.
  1. 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)