Öffnen Sie Ihren Webbrowser und navigieren Sie zur Semaphore-Instanz
unter http://localhost:3000. Melden Sie sich mit Ihren
Administrator-Zugangsdaten an:
Geben Sie im Login-Formular ein:
admin[Ihr Admin-Passwort]Klicken Sie auf den Button “Sign In”
Nach erfolgreicher Anmeldung sehen Sie das Semaphore-Dashboard mit einer Übersicht der verfügbaren Projekte.
Da Sie vermutlich mit einer frischen Semaphore-Installation arbeiten, erstellen wir zunächst ein neues Projekt:
Klicken Sie auf den grünen Button “+ New Project” in der oberen rechten Ecke
Füllen Sie das Projekt-Formular aus:
Demo-Projekt#demo-alerts
ein1Klicken 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.
Bevor Sie ein Playbook ausführen können, benötigen Sie ein Git-Repository mit Ansible-Inhalten:
Klicken Sie in der linken Seitenleiste auf “Repositories”
Klicken Sie auf den Button “+ New Repository”
Füllen Sie das Repository-Formular aus:
demo-playbookshttps://github.com/ansible/ansible-examples.gitmasterLassen Sie das Feld “Access Key” leer (öffentliches Repository)
Klicken Sie auf “Create”
Semaphore lädt nun das Repository herunter. Sie sehen eine Bestätigungsmeldung und das Repository erscheint in der Liste.
Da Ansible SSH-Zugriff auf die Zielsysteme benötigt, fügen wir einen SSH-Key hinzu:
Klicken Sie in der linken Seitenleiste auf “Key Store”
Klicken Sie auf “+ New Key”
Füllen Sie das Key-Formular aus:
demo-ssh-keySSH Key aus dem
DropdownansibleKlicken Sie auf “Create”
Jetzt definieren wir die Zielsysteme für unsere Playbooks:
Klicken Sie in der linken Seitenleiste auf “Inventory”
Klicken Sie auf “+ New Inventory”
Füllen Sie das Inventory-Formular aus:
Name: demo-hosts
User Credentials: Wählen Sie den soeben
erstellten demo-ssh-key
Type: Belassen Sie Static
Inventory: Tragen Sie folgendes ein:
[webservers]
localhost ansible_connection=local
[databases]
localhost ansible_connection=localKlicken Sie auf “Create”
Nun erstellen wir ein ausführbares Template:
Klicken Sie in der linken Seitenleiste auf “Task Templates”
Klicken Sie auf “+ New Template”
Füllen Sie das Template-Formular aus:
Hello World Demolamp_simple/site.ymldemo-hostsdemo-playbooksKlicken Sie auf “Create”
Jetzt führen Sie Ihr erstes Playbook aus:
Sie befinden sich automatisch auf der Template-Übersichtsseite
Klicken Sie neben Ihrem Template “Hello World Demo” auf das Play-Symbol (▶)
Im erscheinenden Dialog “New Task”:
Erster Test-Run
einKlicken Sie auf “Run”
Der Job startet und Sie werden automatisch zur Job-Detail-Seite weitergeleitet:
Beobachten Sie den Status oben auf der Seite -
er ändert sich von Waiting zu Running zu
Success (oder Error)
Schauen Sie sich die Live-Logs an, die in Echtzeit aktualisiert werden
Klicken Sie auf einzelne Tasks in der Ausgabe, um Details zu erweitern
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.
Wir erweitern nun unser Inventory um realistischere Host-Definitionen:
Navigieren Sie zurück zu “Inventory” in der linken Seitenleiste
Klicken Sie auf “+ New Inventory” für eine zweite Inventory
Erstellen Sie ein Production-Inventory:
Name: production-servers
User Credentials: Wählen Sie
demo-ssh-key
Type: Static
Inventory: Tragen Sie ein:
[webservers]
web01.example.com ansible_host=192.168.1.10
web02.example.com ansible_host=192.168.1.11
[databases]
db01.example.com ansible_host=192.168.1.20
[loadbalancers]
lb01.example.com ansible_host=192.168.1.5
[webservers:vars]
http_port=80
https_port=443
[databases:vars]
mysql_port=3306Klicken Sie auf “Create”
Für dynamische Inventories fügen wir Cloud-Credentials hinzu:
Gehen Sie zurück zum “Key Store”
Klicken Sie auf “+ New Key”
Erstellen Sie AWS-Credentials:
aws-demo-credentialsLogin with passwordKlicken Sie auf “Create”
Wiederholen Sie den Vorgang für Azure:
azure-demo-credentialsLogin with passwordErstellen Sie ein dynamisches Inventory für Cloud-Ressourcen:
Erstellen Sie ein neues Inventory mit folgenden Daten:
Name:
aws-dynamic-inventory
User Credentials:
demo-ssh-key
Type: Static (für Demo-Zwecke
verwenden wir statische Konfiguration)
Inventory:
# AWS EC2 Dynamic Inventory (Beispiel-Konfiguration)
plugin: amazon.aws.aws_ec2
regions:
- us-east-1
- eu-central-1
keyed_groups:
- key: tags.Environment
prefix: env
- key: instance_type
prefix: type
hostnames:
- tag:Name
- dns-name
compose:
ansible_host: public_ip_addressKlicken Sie auf “Create”
Testen Sie die Inventory-Konfiguration:
Erstellen Sie ein neues Template für den Verbindungstest:
Connectivity Testproduction-serversdemo-playbooksIm Environment-Feld tragen Sie ein:
{
"test_mode": true,
"gather_facts": false
}Speichern und führen Sie das Template aus
Erstellen Sie das erste Template einer Deployment-Pipeline:
Navigieren Sie zu “Task Templates”
Klicken Sie auf “+ New Template”
Füllen Sie aus:
Template Name:
1. Pre-Deployment Checks
Playbook Filename:
lamp_simple/site.yml
Inventory: demo-hosts
Repository: demo-playbooks
Environment:
{
"stage": "pre-deployment",
"check_mode": true,
"validate_only": true
}Klicken Sie auf “Create”
Erstellen Sie ein weiteres Template:
Template Name:
2. Application Deployment
Playbook Filename:
lamp_simple/site.yml
Inventory: demo-hosts
Repository: demo-playbooks
Environment:
{
"stage": "deployment",
"app_version": "1.0.0",
"deployment_strategy": "rolling"
}Erstellen Sie das dritte Template:
Template Name:
3. Post-Deployment Tests
Playbook Filename:
lamp_simple/site.yml
Inventory: demo-hosts
Repository: demo-playbooks
Environment:
{
"stage": "testing",
"run_healthchecks": true,
"validate_deployment": true
}Da Semaphore keine nativen Pipeline-Abhängigkeiten hat, führen Sie die Jobs sequenziell aus:
Starten Sie “1. Pre-Deployment Checks”:
Pipeline Step 1 - Pre-ChecksNach erfolgreichem Abschluss starten Sie “2. Application Deployment”:
Pipeline Step 2 - DeploymentSchließlich führen Sie “3. Post-Deployment Tests” aus:
Pipeline Step 3 - TestingÜberprüfen Sie die Pipeline-Ausführung:
Navigieren Sie zu “Task History” (falls verfügbar) oder zum Dashboard
Betrachten Sie die drei Jobs in zeitlicher Reihenfolge
Klicken Sie auf jeden Job und prüfen Sie:
Dokumentieren Sie eventuelle Fehlschläge und deren Ursachen
Für diese Demonstration verwenden wir ein eigenes Repository oder einen Fork:
Erstellen Sie einen Fork des ansible-examples Repository oder verwenden Sie ein eigenes Repository
In Semaphore navigieren Sie zu “Repositories”
Klicken Sie auf Ihr existierendes Repository
(demo-playbooks)
Klicken Sie auf “Edit” (Stift-Symbol)
Aktualisieren Sie die Git URL auf Ihr eigenes Repository:
https://github.com/[IHR-USERNAME]/ansible-examples.gitmaster oder
mainKlicken Sie auf “Save”
Konfigurieren Sie den Webhook in GitHub/GitLab:
Für GitHub:
Öffnen Sie Ihr Repository auf GitHub
Klicken Sie auf “Settings” (Repository-Settings, nicht Profil-Settings)
Klicken Sie auf “Webhooks” in der linken Seitenleiste
Klicken Sie auf “Add webhook”
Füllen Sie das Webhook-Formular aus:
http://[IHRE-SEMAPHORE-URL]/api/project/[PROJECT-ID]/webhookapplication/jsonKlicken Sie auf “Add webhook”
Aktivieren Sie die automatische Synchronisation in Semaphore:
In Semaphore gehen Sie zurück zu “Repositories”
Bearbeiten Sie Ihr Repository erneut
Aktivieren Sie “Auto-Sync” falls verfügbar (je nach Semaphore-Version)
Speichern Sie die Änderungen
Erstellen Sie ein spezielles Template für automatische Ausführung:
Erstellen Sie ein neues Template:
Template Name:
Auto-Deploy on Push
Playbook Filename:
lamp_simple/site.yml
Inventory: demo-hosts
Repository: demo-playbooks
Environment:
{
"trigger": "webhook",
"auto_deploy": true,
"branch": "master"
}Speichern Sie das Template
Führen Sie einen Git-Push durch, um den Webhook auszulösen:
Klonen Sie Ihr Repository lokal:
git clone https://github.com/[IHR-USERNAME]/ansible-examples.git
cd ansible-examplesErstellen Sie eine kleine Änderung:
echo "# Webhook-Test $(date)" >> README.md
git add README.md
git commit -m "Test webhook trigger"
git push origin masterÜberprüfen Sie in Semaphore, ob automatisch ein neuer Job gestartet wurde:
Falls der Webhook nicht funktioniert, prüfen Sie:
Erstellen Sie verschiedene Benutzer für das Rechtekonzept:
Navigieren Sie zur Benutzerverwaltung (meist über das Admin-Menü oben rechts)
Klicken Sie auf “Users”
Klicken Sie auf “+ New User”
Erstellen Sie den ersten Benutzer:
team-leadteam-lead@example.comTeam Leadteamlead123Klicken Sie auf “Create”
Wiederholen Sie für weitere Benutzer:
Username: developer1
Email: dev1@example.com
Name: Developer One
Password: dev123
Username: operator1
Email: op1@example.com
Name: Operator One
Password: op123
Username: viewer1
Email: view1@example.com
Name: Viewer One
Password: view123
Erstellen Sie ein neues Projekt für das Team:
Klicken Sie auf “+ New Project”
Projekt-Details:
Team-Projekt-WebApp#webapp-team3Klicken Sie auf “Create”
Weisen Sie den Benutzern verschiedene Rollen zu:
In Ihrem neuen Projekt klicken Sie auf “Team” oder “Access” (je nach UI-Version)
Klicken Sie auf “+ Add User” oder ähnlich
Fügen Sie den Team-Lead hinzu:
team-leadManager oder Admin
(höchste Projekt-Berechtigung)Fügen Sie den Developer hinzu:
developer1Developer oder
MaintainerFügen Sie den Operator hinzu:
operator1Operator oder Guest
(nur Ausführung)Fügen Sie den Viewer hinzu:
viewer1Guest oder
Read-onlyErstellen Sie Templates mit unterschiedlichen Berechtigungsanforderungen:
Management-Template (nur für Team-Lead):
Template Name:
Production Deployment
Playbook:
lamp_simple/site.yml
Inventory:
production-servers
Environment:
{
"environment": "production",
"requires_approval": true,
"critical_deployment": true
}Developer-Template:
Template Name:
Development Testing
Playbook:
lamp_simple/site.yml
Inventory: demo-hosts
Environment:
{
"environment": "development",
"debug_mode": true,
"safe_mode": true
}Operator-Template:
Template Name:
Routine Maintenance
Playbook:
lamp_simple/site.yml
Inventory: demo-hosts
Environment:
{
"task_type": "maintenance",
"automated": true
}Testen Sie die verschiedenen Benutzerrollen:
Melden Sie sich als Admin ab (oben rechts → Logout)
Melden Sie sich als team-lead
an:
team-leadteamlead123Melden Sie sich als developer1
an:
Melden Sie sich als operator1
an:
Melden Sie sich als viewer1 an:
Zeigen Sie die Projekt-Isolation:
Als Admin erstellen Sie ein zweites Projekt:
Backend-ServicesMelden Sie sich als developer1
an
Überprüfen Sie: developer1 sieht
nur das Team-Projekt-WebApp, nicht das Backend-Services-Projekt
Melden Sie sich wieder als Admin an
Fügen Sie developer1 auch zum
Backend-Services-Projekt hinzu mit anderen
Berechtigungen
Testen Sie erneut als developer1:
Jetzt sollten beide Projekte sichtbar sein
Kontrollieren Sie die Nachvollziehbarkeit:
Als Admin navigieren Sie zu den System-Logs oder Audit-Logs
Suchen Sie nach Einträgen der verschiedenen Benutzer:
Überprüfen Sie, dass alle Aktionen den richtigen Benutzern zugeordnet sind
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.