52 Semaphore – Übersicht und Architektur

52.1 Einordnung

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.

52.1.1 Primäre Ziele

52.1.2 Abgrenzung

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.

52.2 Vergleich zu AWX/Ansible Tower

52.2.1 Gemeinsame Konzepte

Semaphore und AWX/Ansible Tower teilen fundamentale Architekturprinzipien:

52.2.2 Unterschiede

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

52.2.3 Vorteile von Semaphore

52.2.4 Grenzen von Semaphore

52.3 Typische Einsatzszenarien

52.3.1 Teams ohne direkten CLI-Zugriff

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.

52.3.2 Self-Service-Plattform

Bereitstellung einer kontrollierten Umgebung, in der autorisierte Benutzer vordefinierte Automatisierungsaufgaben selbstständig ausführen können:

52.3.3 Zentrale Verwaltung von Jobs und Credentials

Konsolidierung aller Ansible-bezogenen Assets in einer zentralen Instanz:

52.3.4 Transparenz und Nachvollziehbarkeit

Bereitstellung einer auditfähigen Umgebung für Compliance-Anforderungen:

52.4 Architekturkomponenten

52.4.1 Webserver & UI

Der Webserver hostet die React-basierte Benutzeroberfläche und verarbeitet HTTP-Requests. Die UI bietet alle notwendigen Funktionen für:

52.4.2 API

Die REST-API ermöglicht programmgesteuerte Interaktion mit Semaphore:

52.4.3 Datenbank

Die relationale Datenbank (MySQL, PostgreSQL, SQLite) speichert alle relevanten Daten:

52.4.4 Worker

Worker sind Hintergrundprozesse für die asynchrone Ausführung von Ansible-Playbooks:

52.4.5 CLI

Das Kommandozeilen-Interface ergänzt die Web-UI und bietet nahezu die volle API-Funktionalität:

52.4.6 Komponenteninteraktion

┌─────────────┐    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.