Prompts
Prompts sind vordefinierte Flags und Optionen, die für den jeweiligen Template-Typ spezifisch sind und die Sie aktivieren können, um Anpassungen zur Laufzeit zu ermöglichen. Im Gegensatz zu Survey-Variablen, die Sie als eigene Felder selbst erstellen, sind Prompts integrierte Optionen, die bestimmten CLI-Flags von Ansible, Terraform und anderen Tools entsprechen.
Diese Funktion ermöglicht Ihnen:
- Template-Standardwerte zur Laufzeit zu überschreiben
- Bestimmte Hosts oder Ressourcen anzusprechen
- Das Ausführungsverhalten über CLI-Flags zu steuern
- Laufzeitoptionen über API-Aufrufe oder Zeitpläne zu übergeben
Prompts vs. Survey-Variablen
| Merkmal | Prompts | Survey-Variablen |
|---|---|---|
| Definition | Vordefinierte, Template-spezifische Optionen | Eigene Felder, die Sie erstellen |
| Beispiele | Ansible: --limit, --tagsTerraform: Workspaces, -destroy | Umgebungsname, Versionsnummer, eigene Parameter |
| Konfiguration | Aktivierung über Kontrollkästchen im Template | Hinzufügen in den Template-Einstellungen mit Name und Typ |
| Übergabe als | Integrierte CLI-Flags | Ansible: --extra-varsTerraform: -var |
Prompts sind standardisierte, in Semaphore integrierte Optionen für bestimmte Tools, während Survey-Variablen flexible, selbst definierte Felder sind.
Ansible-Prompts
Für Ansible-Playbook-Templates können Sie Prompts für die folgenden CLI-Optionen aktivieren:
Limit
Aktivieren Sie den --limit-Prompt, um festzulegen, welche Hosts beim Ausführen des Playbooks angesprochen werden.
CLI-Entsprechung: ansible-playbook playbook.yml --limit webservers
Anwendungsfälle:
- Playbook auf einer Teilmenge der Inventory-Hosts ausführen
- Bestimmte Server für ein Deployment ansprechen
- Änderungen auf einem einzelnen Host testen, bevor sie ausgerollt werden
Beispiel:
- Ihr Inventory enthält 50 Webserver
- Aktivieren Sie den Limit-Prompt
- Geben Sie beim Ausführen des Tasks
web-01.example.coman, um nur diesen Server anzusprechen - Oder geben Sie
webservers:&productionan, um die Produktions-Webserver anzusprechen
Tags
Aktivieren Sie den --tags-Prompt, um nur Tasks mit bestimmten Tags auszuführen.
CLI-Entsprechung: ansible-playbook playbook.yml --tags deploy,restart
Anwendungsfälle:
- Nur bestimmte Teile eines Playbooks ausführen
- Deployment-Schritte ohne Konfigurations-Tasks ausführen
- Dienste schnell neu starten, ohne das gesamte Playbook auszuführen
Beispiel:
---
- hosts: all
tasks:
- name: Install packages
apt:
name: nginx
tags: install
- name: Deploy application
copy:
src: app.tar.gz
dest: /opt/app/
tags: deploy
- name: Restart service
service:
name: nginx
state: restarted
tags: restart
Aktivieren Sie den Tags-Prompt und geben Sie deploy,restart ein, um den Installationsschritt zu überspringen.
Skip Tags
Aktivieren Sie den --skip-tags-Prompt, um Tasks mit bestimmten Tags zu überspringen.
CLI-Entsprechung: ansible-playbook playbook.yml --skip-tags testing,debug
Anwendungsfälle:
- Optionale Tasks in der Produktion überspringen
- Debug- oder Test-Tasks ausschließen
- Zeitaufwändige Tasks umgehen, wenn sie nicht benötigt werden
Beispiel: Aktivieren Sie mit dem obigen Playbook Skip Tags und geben Sie install ein, um die Paketinstallation zu überspringen und nur die Deployment- und Neustart-Tasks auszuführen.
Ansible-Prompts aktivieren
So aktivieren Sie Ansible-Prompts:
- Gehen Sie zu Task-Templates und wählen Sie Ihr Ansible-Template aus
- Suchen Sie in den Template-Einstellungen den Abschnitt Ansible-Prompts
- Aktivieren Sie die Kontrollkästchen für die gewünschten Prompts:
- ☐ Limit – Aktiviert das
--limit-Flag - ☐ Tags – Aktiviert das
--tags-Flag - ☐ Skip Tags – Aktiviert das
--skip-tags-Flag
- ☐ Limit – Aktiviert das
- Speichern Sie das Template

Wenn aktiviert, erscheinen diese Felder im Formular zum Ausführen von Tasks, in API-Anfragen und in Zeitplankonfigurationen.
Terraform/OpenTofu-Prompts
Für Terraform- und OpenTofu-Templates stellt Semaphore mehrere integrierte Prompts bereit:
Workspace-Auswahl
Wählen Sie, welcher Terraform-Workspace für die Task-Ausführung verwendet wird.
CLI-Entsprechung: terraform workspace select staging
Anwendungsfälle:
- Mehrere Umgebungen verwalten (dev, staging, production)
- Getrennte State-Dateien für unterschiedliche Konfigurationen
- Infrastrukturänderungen isoliert testen
Einrichtung:
- Erstellen Sie Workspaces im Tab Workspaces des Templates
- Die Workspace-Auswahl erscheint automatisch im Task-Formular
- Benutzer wählen beim Ausführen von Tasks den Ziel-Workspace
Siehe Terraform-Workspaces für die detaillierte Einrichtung.
Destroy-Flag
Aktivieren Sie das -destroy-Flag, um Infrastruktur abzubauen.
CLI-Entsprechung: terraform apply -destroy
Anwendungsfälle:
- Temporäre Testumgebungen bereinigen
- Infrastruktur außer Betrieb nehmen
- Bestimmte Ressourcen entfernen
Wichtig: Dies ist ein destruktiver Vorgang. Verwenden Sie ihn mit Vorsicht und erwägen Sie, in Ihren Workflows eine Bestätigung zu verlangen.
Migrate-State-Flag
Aktivieren Sie das -migrate-state-Flag, wenn Sie die Backend-Konfiguration ändern.
CLI-Entsprechung: terraform init -migrate-state
Anwendungsfälle:
- State in ein anderes Backend verschieben
- Zwischen Speicherorten migrieren
- Backend-Konfiguration aktualisieren
Terraform-Prompts aktivieren
Terraform-Prompts sind in den Template-Einstellungen verfügbar:
- Gehen Sie zu Task-Templates und wählen Sie Ihr Terraform-Template aus
- Konfigurieren Sie die verfügbaren Prompts in den Template-Einstellungen:
- Workspace-Auswahl (automatisch aktiviert, wenn Workspaces konfiguriert sind)
- Option für das Destroy-Flag
- Option für Migrate State
- Speichern Sie das Template
Das Task-Formular zeigt diese Optionen beim Ausführen von Terraform-Tasks an.
Bash-, PowerShell- und Python-Prompts
Für Bash-, PowerShell- und Python-Templates sind die Prompts minimal, da die meisten Anpassungen über Survey-Variablen erfolgen.
Verfügbare Prompts sind:
- CLI-Argumente
- Branch
Diese Template-Typen profitieren stärker von eigenen Survey-Variablen zur Übergabe von Parametern an Skripte.
Prompts verwenden
Manuelle Task-Ausführung
Beim Ausführen eines Tasks aus einem Template mit aktivierten Prompts:
- Klicken Sie beim Template auf Ausführen
- Ein Formular mit den aktivierten Prompt-Feldern erscheint
- Füllen Sie die Werte für die gewünschten Prompts aus (optionale Felder können leer bleiben)
- Klicken Sie auf Task ausführen
Der Task wird mit den von Ihnen angegebenen Prompt-Werten ausgeführt, die als CLI-Flags übergeben werden.
API-Aufrufe
Um Prompt-Werte über die API zu übergeben, nehmen Sie sie in die Nutzdaten der Anfrage auf:
Ansible-Beispiel:
curl -XPOST \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-d '{
"template_id": 123,
"limit": "webservers",
"tags": "deploy,restart",
"skip_tags": "testing"
}' \
https://your-semaphore.com/api/project/1/tasks
Wichtig: Die Prompts müssen im Template aktiviert sein, damit die Werte akzeptiert werden. Wenn Sie Prompt-Werte über die API übergeben, ohne sie zu aktivieren, werden diese Werte ignoriert.
Geplante Tasks
Zeitpläne können Prompt-Werte enthalten, um die automatisierte Task-Ausführung anzupassen:
Beispiel: Zeitplan mit Ansible-Prompts
- Täglicher Deployment-Zeitplan mit
limit: "production"undtags: "deploy" - Wöchentlicher Wartungszeitplan mit
tags: "updates,cleanup"
Konfigurieren Sie die Prompt-Werte in den Zeitplaneinstellungen, damit jeder geplante Lauf die angegebenen Optionen verwendet.
Integrationen und Webhooks
Integrationen können Werte aus Webhooks extrahieren und Prompts zuordnen:
Beispiel: GitHub-Webhook löst ein Deployment aus
- Branch-Namen aus dem Webhook extrahieren
- Dem Limit-Prompt zuordnen, um eine bestimmte Umgebung anzusprechen
- Nur auf Servern deployen, die zur Umgebung des Branches passen
Siehe Integrationen für die Webhook-Konfiguration.
Best Practices
Nur notwendige Prompts aktivieren
Jeder aktivierte Prompt fügt dem Task-Formular ein Feld hinzu. Aktivieren Sie nur Prompts, die Benutzer tatsächlich anpassen müssen.
✅ Gut: Limit für Operations-Teams aktivieren, die bestimmte Hosts ansprechen müssen ❌ Schlecht: Alle Prompts „für alle Fälle“ aktivieren
Mit Survey-Variablen kombinieren
Verwenden Sie Prompts für Tool-spezifische CLI-Optionen und Survey-Variablen für eigene Parameter:
Beispiel für ein Ansible-Template:
- Prompts: Limit (welche Hosts), Tags (welche Tasks)
- Survey-Variablen:
app_version(welche Version),enable_rollback(eigene Logik)
API-Nutzung dokumentieren
Wenn Templates über die API ausgelöst werden, dokumentieren Sie, welche Prompts verfügbar sind und welches Format erwartet wird:
## API Usage
Enabled prompts:
- `limit`: Host pattern (optional)
- `tags`: Comma-separated tag list (optional)
Example:
POST /api/project/1/tasks
{
"template_id": 123,
"limit": "webservers:&production",
"tags": "deploy"
}
Limit für sicheres Testen verwenden
Testen Sie potenziell destruktive Playbooks immer zuerst mit dem Limit-Prompt:
- Aktivieren Sie den Limit-Prompt im Template
- Erster Lauf: Geben Sie
limit: "test-server-01"an, um auf einem Host zu testen - Prüfen Sie den Erfolg
- Zweiter Lauf: Geben Sie
limit: "production"an, um auf alle Hosts auszurollen
Prompt-Kombinationen prüfen
Manche Prompt-Kombinationen ergeben keinen Sinn. Ergänzen Sie Dokumentation oder Validierung:
- Die Verwendung von
--tags deployzusammen mit--skip-tags deployführt zu einem Konflikt - Die gleichzeitige Angabe von Workspace und Destroy-Flag erfordert besondere Vorsicht
Häufige Anwendungsfälle
Schrittweises Rollout mit Limit
Deployen Sie schrittweise in die Produktion mit dem Ansible-Limit:
- Lauf 1:
limit: "web-01.example.com"– Deployment auf einen Server - Auf Probleme achten
- Lauf 2:
limit: "webservers:&canary"– Deployment auf Canary-Server - Metriken prüfen
- Lauf 3:
limit: "webservers:&production"– Vollständiges Rollout
Selektive Ausführung mit Tags
Verwenden Sie Tags, um nur bestimmte Teile eines Playbooks auszuführen:
Morgens: tags: "deploy" – Neue Version deployen
Nachmittags: tags: "config" – Konfiguration aktualisieren
Abends: tags: "restart" – Dienste mit der neuen Konfiguration neu starten
Umgebungsverwaltung mit Workspaces
Verwenden Sie die Terraform-Workspace-Auswahl zur Verwaltung von Umgebungen:
- Entwicklung: Workspace
devwählen – günstigere Ressourcen, schnellere Iteration - Staging: Workspace
stagingwählen – produktionsnah zum Testen - Produktion: Workspace
prodwählen – vollständige Produktionsinfrastruktur
Bereinigung mit Destroy
Verwenden Sie Terraform Destroy für temporäre Infrastruktur:
- Testumgebung erstellen: Mit Workspace
test-branch-123ausführen - Integrationstests ausführen
- Bereinigen: Mit aktiviertem Destroy-Flag und Workspace
test-branch-123ausführen
Fehlerbehebung
Prompt-Werte werden ignoriert
Problem: Prompt-Werte werden übergeben, haben aber keine Wirkung
Lösung: Prüfen Sie, ob der entsprechende Prompt in den Template-Einstellungen aktiviert ist. Prompts müssen explizit aktiviert werden.
Limit kann nicht angegeben werden
Problem: Das Limit-Feld erscheint nicht im Task-Formular
Lösung:
- Bearbeiten Sie das Template
- Suchen Sie den Abschnitt „Ansible-Prompts“
- Aktivieren Sie das Kontrollkästchen „Limit“
- Speichern Sie das Template
API-Aufrufe mit Prompt-Werten schlagen fehl
Problem: API-Anfragen mit Prompt-Werten liefern Fehler
Lösung:
- Stellen Sie sicher, dass die Prompts im Template aktiviert sind
- Prüfen Sie die JSON-Formatierung im Anfragetext
- Prüfen Sie, ob die Feldnamen exakt übereinstimmen (
limit, nichthost_limit)
Tags filtern die Tasks nicht
Problem: Tags werden angegeben, aber trotzdem laufen alle Tasks
Lösung:
- Prüfen Sie, ob die Tasks im Playbook korrekte Tags definiert haben
- Prüfen Sie die Tag-Namen auf Tippfehler
- Stellen Sie sicher, dass die Tags durch Kommas ohne Leerzeichen getrennt sind:
deploy,restart, nichtdeploy, restart
Verwandte Dokumentation
- Survey-Variablen – Eigene Felder für Templates
- Ansible-Templates – Ansible-spezifische Konfiguration
- Terraform-Templates – Terraform-spezifische Konfiguration
- Zeitpläne – Automatisierte Task-Ausführung
- Integrationen – Über Webhooks ausgelöste Tasks
- API-Dokumentation – API-Referenz