Semaphore ist eine webbasierte Benutzeroberfläche und API für Ansible, die als Management-Ebene über dem Ansible-Ökosystem agiert. Die Software ermöglicht die zentrale Steuerung, Überwachung und Verwaltung von Ansible-Playbooks durch ein grafisches Interface.
Semaphore ersetzt Ansible nicht, sondern erweitert es um eine Management-Schicht. Ansible bleibt das zugrundeliegende Automatisierungswerkzeug, während Semaphore die Orchestrierung, Benutzersteuerung und Überwachung übernimmt.
Semaphore eignet sich besonders für kleine bis mittlere Teams, die eine leichtgewichtige Lösung benötigen. AWX/Ansible Tower ist für große Enterprise-Umgebungen mit vielen Integrationen und komplexen Sicherheitsanforderungen gedacht.
Semaphore und AWX/Ansible Tower teilen fundamentale Architekturprinzipien:
| Aspekt | Semaphore | AWX/Ansible Tower |
|---|---|---|
| Lizenzierung | Open Source (MIT) | AWX: Open Source, Tower: kommerziell |
| Komplexität | Lightweight, minimalistisch | Feature-reich, enterprise-orientiert |
| Funktionsumfang | Kernfunktionen für Playbook-Management | Erweiterte Features (RBAC, Workflows, Clustering) |
| Ressourcenverbrauch | Gering | Hoch |
| Deployment | Einfach, minimal dependencies | Komplex, umfangreiche Infrastruktur |
Entwicklungs- und Operations-Teams, die Ansible-Playbooks ausführen müssen, aber keinen direkten Serverzugriff oder CLI-Erfahrung besitzen. Semaphore abstrahiert die Kommandozeilen-Komplexität. Beispiel: Ein Entwicklerteam startet über die UI ein Playbook, das einen Testserver provisioniert.
Bereitstellung einer kontrollierten Umgebung, in der autorisierte Benutzer vordefinierte Automatisierungsaufgaben selbstständig ausführen können:
Konsolidierung aller Ansible-bezogenen Assets in einer zentralen Instanz:
Bereitstellung einer auditfähigen Umgebung für Compliance-Anforderungen:
Der Webserver hostet die React-basierte Benutzeroberfläche und verarbeitet HTTP-Requests. Die UI bietet alle notwendigen Funktionen für:
Die REST-API ermöglicht programmgesteuerte Interaktion mit Semaphore:
Die relationale Datenbank (MySQL, PostgreSQL, SQLite) speichert alle relevanten Daten:
Worker sind Hintergrundprozesse für die asynchrone Ausführung von Ansible-Playbooks:
Das Kommandozeilen-Interface ergänzt die Web-UI und bietet nahezu die volle API-Funktionalität:
┌─────────────┐ HTTP/HTTPS ┌──────────────┐
│ Browser │ ──────────────── │ Webserver │
└─────────────┘ │ & │
│ UI │
┌─────────────┐ HTTP/REST │ │
│ External │ ──────────────── │ │
│ Systems │ └──────────────┘
└─────────────┘ │
│ Database
┌─────────────┐ CLI Commands │ Queries
│ CLI │ ─────────────────────────┤
└─────────────┘ │
▼
┌──────────────┐
│ Database │
│ (MySQL/ │
│ PostgreSQL) │
└──────────────┘
▲
│ Job Data
│ & Status
│
┌──────────────┐ Ansible
│ Worker │ ──────────▶ Target
│ Processes │ Systems
└──────────────┘
Die Architektur folgt dem Prinzip der Separation of Concerns (Trennung der Verantwortlichkeiten): UI und API handhaben Benutzerinteraktionen, die Datenbank persistiert den Zustand, und Worker führen die eigentlichen Ansible-Operationen aus.