62 Semaphore - Roundtrip

62.1 Erste Schritte: Playbook über UI starten

62.1.1 Anmeldung und Dashboard-Übersicht

Öffnen Sie Ihren Webbrowser und navigieren Sie zur Semaphore-Instanz unter http://localhost:3000. Melden Sie sich mit Ihren Administrator-Zugangsdaten an:

  1. Geben Sie im Login-Formular ein:

  2. Klicken Sie auf den Button “Sign In”

Nach erfolgreicher Anmeldung sehen Sie das Semaphore-Dashboard mit einer Übersicht der verfügbaren Projekte.

62.1.2 Neues Projekt erstellen

Da Sie vermutlich mit einer frischen Semaphore-Installation arbeiten, erstellen wir zunächst ein neues Projekt:

  1. Klicken Sie auf den grünen Button “+ New Project” in der oberen rechten Ecke

  2. Füllen Sie das Projekt-Formular aus:

  3. Klicken Sie auf “Create”

Sie befinden sich nun im neu erstellten Projekt. Die Seitenleiste zeigt verschiedene Bereiche: Dashboard, Task Templates, Repositories, Key Store, Inventory und Environment.

62.1.3 Repository hinzufügen

Bevor Sie ein Playbook ausführen können, benötigen Sie ein Git-Repository mit Ansible-Inhalten:

  1. Klicken Sie in der linken Seitenleiste auf “Repositories”

  2. Klicken Sie auf den Button “+ New Repository”

  3. Füllen Sie das Repository-Formular aus:

  4. Lassen Sie das Feld “Access Key” leer (öffentliches Repository)

  5. Klicken Sie auf “Create”

Semaphore lädt nun das Repository herunter. Sie sehen eine Bestätigungsmeldung und das Repository erscheint in der Liste.

62.1.4 SSH-Key für Zielsysteme hinzufügen

Da Ansible SSH-Zugriff auf die Zielsysteme benötigt, fügen wir einen SSH-Key hinzu:

  1. Klicken Sie in der linken Seitenleiste auf “Key Store”

  2. Klicken Sie auf “+ New Key”

  3. Füllen Sie das Key-Formular aus:

  4. Klicken Sie auf “Create”

62.1.5 Inventory definieren

Jetzt definieren wir die Zielsysteme für unsere Playbooks:

  1. Klicken Sie in der linken Seitenleiste auf “Inventory”

  2. Klicken Sie auf “+ New Inventory”

  3. Füllen Sie das Inventory-Formular aus:

  4. Klicken Sie auf “Create”

62.1.6 Template erstellen und ausführen

Nun erstellen wir ein ausführbares Template:

  1. Klicken Sie in der linken Seitenleiste auf “Task Templates”

  2. Klicken Sie auf “+ New Template”

  3. Füllen Sie das Template-Formular aus:

  4. Klicken Sie auf “Create”

62.1.7 Ersten Job starten

Jetzt führen Sie Ihr erstes Playbook aus:

  1. Sie befinden sich automatisch auf der Template-Übersichtsseite

  2. Klicken Sie neben Ihrem Template “Hello World Demo” auf das Play-Symbol (▶)

  3. Im erscheinenden Dialog “New Task”:

  4. Klicken Sie auf “Run”

62.1.8 Job-Ausführung beobachten

Der Job startet und Sie werden automatisch zur Job-Detail-Seite weitergeleitet:

  1. Beobachten Sie den Status oben auf der Seite - er ändert sich von Waiting zu Running zu Success (oder Error)

  2. Schauen Sie sich die Live-Logs an, die in Echtzeit aktualisiert werden

  3. Klicken Sie auf einzelne Tasks in der Ausgabe, um Details zu erweitern

  4. Beachten Sie die Execution Time und weitere Metadaten am Ende der Logs

Das Playbook wird erfolgreich ausgeführt und Sie sehen die typische Ansible-Ausgabe mit grünen ok-Meldungen und gelben changed-Meldungen.

62.2 Inventories und Credentials einrichten

62.2.1 Erweiterte Inventory-Konfiguration

Wir erweitern nun unser Inventory um realistischere Host-Definitionen:

  1. Navigieren Sie zurück zu “Inventory” in der linken Seitenleiste

  2. Klicken Sie auf “+ New Inventory” für eine zweite Inventory

  3. Erstellen Sie ein Production-Inventory:

  4. Klicken Sie auf “Create”

62.2.2 API-Credentials für Cloud-Provider hinzufügen

Für dynamische Inventories fügen wir Cloud-Credentials hinzu:

  1. Gehen Sie zurück zum “Key Store”

  2. Klicken Sie auf “+ New Key”

  3. Erstellen Sie AWS-Credentials:

  4. Klicken Sie auf “Create”

  5. Wiederholen Sie den Vorgang für Azure:

62.2.3 Dynamisches Inventory konfigurieren

Erstellen Sie ein dynamisches Inventory für Cloud-Ressourcen:

  1. Erstellen Sie ein neues Inventory mit folgenden Daten:

  2. Klicken Sie auf “Create”

62.2.4 Verbindungstest durchführen

Testen Sie die Inventory-Konfiguration:

  1. Erstellen Sie ein neues Template für den Verbindungstest:

  2. Im Environment-Feld tragen Sie ein:

    {
      "test_mode": true,
      "gather_facts": false
    }
  3. Speichern und führen Sie das Template aus

62.3 Pipeline mit mehreren Jobs aufbauen

62.3.1 Erstes Template: Pre-Deployment-Checks

Erstellen Sie das erste Template einer Deployment-Pipeline:

  1. Navigieren Sie zu “Task Templates”

  2. Klicken Sie auf “+ New Template”

  3. Füllen Sie aus:

  4. Klicken Sie auf “Create”

62.3.2 Zweites Template: Application Deployment

  1. Erstellen Sie ein weiteres Template:

62.3.3 Drittes Template: Post-Deployment Tests

  1. Erstellen Sie das dritte Template:

62.3.4 Pipeline manuell ausführen

Da Semaphore keine nativen Pipeline-Abhängigkeiten hat, führen Sie die Jobs sequenziell aus:

  1. Starten Sie “1. Pre-Deployment Checks”:

  2. Nach erfolgreichem Abschluss starten Sie “2. Application Deployment”:

  3. Schließlich führen Sie “3. Post-Deployment Tests” aus:

62.3.5 Pipeline-Ergebnisse analysieren

Überprüfen Sie die Pipeline-Ausführung:

  1. Navigieren Sie zu “Task History” (falls verfügbar) oder zum Dashboard

  2. Betrachten Sie die drei Jobs in zeitlicher Reihenfolge

  3. Klicken Sie auf jeden Job und prüfen Sie:

  4. Dokumentieren Sie eventuelle Fehlschläge und deren Ursachen

62.4 Automatischer Run über Git-Webhook

62.4.1 Repository mit Webhook-Fähigkeiten vorbereiten

Für diese Demonstration verwenden wir ein eigenes Repository oder einen Fork:

  1. Erstellen Sie einen Fork des ansible-examples Repository oder verwenden Sie ein eigenes Repository

  2. In Semaphore navigieren Sie zu “Repositories”

  3. Klicken Sie auf Ihr existierendes Repository (demo-playbooks)

  4. Klicken Sie auf “Edit” (Stift-Symbol)

  5. Aktualisieren Sie die Git URL auf Ihr eigenes Repository:

  6. Klicken Sie auf “Save”

62.4.2 Webhook in Git-Repository konfigurieren

Konfigurieren Sie den Webhook in GitHub/GitLab:

Für GitHub:

  1. Öffnen Sie Ihr Repository auf GitHub

  2. Klicken Sie auf “Settings” (Repository-Settings, nicht Profil-Settings)

  3. Klicken Sie auf “Webhooks” in der linken Seitenleiste

  4. Klicken Sie auf “Add webhook”

  5. Füllen Sie das Webhook-Formular aus:

  6. Klicken Sie auf “Add webhook”

62.4.3 Auto-Sync für Repository aktivieren

Aktivieren Sie die automatische Synchronisation in Semaphore:

  1. In Semaphore gehen Sie zurück zu “Repositories”

  2. Bearbeiten Sie Ihr Repository erneut

  3. Aktivieren Sie “Auto-Sync” falls verfügbar (je nach Semaphore-Version)

  4. Speichern Sie die Änderungen

62.4.4 Template für Webhook-Trigger konfigurieren

Erstellen Sie ein spezielles Template für automatische Ausführung:

  1. Erstellen Sie ein neues Template:

  2. Speichern Sie das Template

62.4.5 Automatischen Trigger testen

Führen Sie einen Git-Push durch, um den Webhook auszulösen:

  1. Klonen Sie Ihr Repository lokal:

    git clone https://github.com/[IHR-USERNAME]/ansible-examples.git
    cd ansible-examples
  2. Erstellen Sie eine kleine Änderung:

    echo "# Webhook-Test $(date)" >> README.md
    git add README.md
    git commit -m "Test webhook trigger"
    git push origin master
  3. Überprüfen Sie in Semaphore, ob automatisch ein neuer Job gestartet wurde:

  4. Falls der Webhook nicht funktioniert, prüfen Sie:

62.5 Rechtekonzept im Teamprojekt umsetzen

62.5.1 Neue Benutzer anlegen

Erstellen Sie verschiedene Benutzer für das Rechtekonzept:

  1. Navigieren Sie zur Benutzerverwaltung (meist über das Admin-Menü oben rechts)

  2. Klicken Sie auf “Users”

  3. Klicken Sie auf “+ New User”

  4. Erstellen Sie den ersten Benutzer:

  5. Klicken Sie auf “Create”

  6. Wiederholen Sie für weitere Benutzer:

62.5.2 Team-Projekt erstellen

Erstellen Sie ein neues Projekt für das Team:

  1. Klicken Sie auf “+ New Project”

  2. Projekt-Details:

  3. Klicken Sie auf “Create”

62.5.3 Benutzer-Berechtigungen zuweisen

Weisen Sie den Benutzern verschiedene Rollen zu:

  1. In Ihrem neuen Projekt klicken Sie auf “Team” oder “Access” (je nach UI-Version)

  2. Klicken Sie auf “+ Add User” oder ähnlich

  3. Fügen Sie den Team-Lead hinzu:

  4. Fügen Sie den Developer hinzu:

  5. Fügen Sie den Operator hinzu:

  6. Fügen Sie den Viewer hinzu:

62.5.4 Rollenbezogene Templates erstellen

Erstellen Sie Templates mit unterschiedlichen Berechtigungsanforderungen:

  1. Management-Template (nur für Team-Lead):

  2. Developer-Template:

  3. Operator-Template:

62.5.5 Berechtigungen testen

Testen Sie die verschiedenen Benutzerrollen:

  1. Melden Sie sich als Admin ab (oben rechts → Logout)

  2. Melden Sie sich als team-lead an:

  3. Melden Sie sich als developer1 an:

  4. Melden Sie sich als operator1 an:

  5. Melden Sie sich als viewer1 an:

62.5.6 Projekt-Isolation demonstrieren

Zeigen Sie die Projekt-Isolation:

  1. Als Admin erstellen Sie ein zweites Projekt:

  2. Melden Sie sich als developer1 an

  3. Überprüfen Sie: developer1 sieht nur das Team-Projekt-WebApp, nicht das Backend-Services-Projekt

  4. Melden Sie sich wieder als Admin an

  5. Fügen Sie developer1 auch zum Backend-Services-Projekt hinzu mit anderen Berechtigungen

  6. Testen Sie erneut als developer1: Jetzt sollten beide Projekte sichtbar sein

62.5.7 Audit-Trail überprüfen

Kontrollieren Sie die Nachvollziehbarkeit:

  1. Als Admin navigieren Sie zu den System-Logs oder Audit-Logs

  2. Suchen Sie nach Einträgen der verschiedenen Benutzer:

  3. Überprüfen Sie, dass alle Aktionen den richtigen Benutzern zugeordnet sind

  4. Dokumentieren Sie eventuelle Sicherheitslücken oder unerwartete Berechtigungen

Dieser Roundtrip führt Sie durch alle wesentlichen Funktionen von Semaphore und zeigt Ihnen einen kompletten Workflow von der ersten Playbook-Ausführung bis hin zu einem vollständigen Team-Setup mit Rechtekonzept.