Survey-Variablen
Survey-Variablen sind eigene Eingabefelder, die Sie zu Task-Templates hinzufügen können, um beim Ausführen von Tasks Benutzereingaben zu erfassen. Statt Werte fest in Ihren Playbooks oder Skripten zu hinterlegen, können Sie eigene Variablen definieren, die Benutzer zur Laufzeit nach Werten fragen.
Diese Funktion ist nützlich für:
- Das Ausführen desselben Templates mit unterschiedlichen Parametern (z. B. Konfigurationswerten)
- Die Annahme dynamischer Eingaben über API-Aufrufe
- Die Übergabe eigener Parameter in geplanten Tasks
- Das Auslösen von Tasks aus Integrationen mit aus Webhooks extrahierten Daten

Survey-Variablen vs. Prompts
Es ist wichtig, den Unterschied zwischen Survey-Variablen und Prompts zu verstehen:
| Merkmal | Survey-Variablen | Prompts |
|---|---|---|
| Definition | Eigene Felder, die Sie erstellen | Vordefinierte, Template-spezifische Optionen |
| Beispiele | Umgebungsname, Versionsnummer, API-Endpunkt | Ansible: --limit, --tagsTerraform: Workspaces |
| Konfiguration | Hinzufügen in den Template-Einstellungen mit Name und Typ | Aktivierung über Kontrollkästchen im Template |
| Übergabe als | Ansible: --extra-varsTerraform: -var | Integrierte CLI-Flags |
Survey-Variablen sind flexible, selbst definierte Felder, während Prompts integrierte Optionen sind, die für den jeweiligen Template-Typ spezifisch sind (wie die Flags --limit oder --tags von Ansible).
Survey-Variablen zu einem Template hinzufügen
Survey-Variablen werden in den Template-Einstellungen konfiguriert:
- Gehen Sie zu Task-Templates und wählen Sie Ihr Template aus
- Navigieren Sie in den Template-Einstellungen zum Abschnitt Survey-Variablen
- Klicken Sie auf Survey-Variable hinzufügen
- Konfigurieren Sie die Variable:
- Name: Variablenname (wird in Ihrem Code verwendet)
- Titel: Anzeigebezeichnung im Formular
- Typ: Wählen Sie den Feldtyp
- Variable übergeben als: Extra-Variable (Standard) oder Umgebungsvariable
- Standardwert: Optionaler vorausgefüllter Wert, der beim Öffnen des Task-Formulars angezeigt wird
- Erforderlich: Ob das Feld ausgefüllt werden muss
- Speichern Sie das Template
Wenn Benutzer einen Task aus diesem Template ausführen, sehen sie ein Formular mit Ihren eigenen Survey-Variablen.
Variablentypen
Survey-Variablen unterstützen sechs Typen:
String
Texteingabefeld für Zeichenkettenwerte.
Anwendungsfälle: Umgebungsnamen, Branch-Namen, Hostnamen, Dateipfade
Beispiel: Eine Variable namens environment fordert Benutzer auf, „production“, „staging“ oder „development“ einzugeben
Integer
Numerisches Eingabefeld für Ganzzahlwerte.
Anwendungsfälle: Portnummern, Anzahl der Wiederholungen, Timeouts, Ressourcenlimits
Beispiel: Eine Variable namens timeout_seconds fordert Benutzer auf, „300“ oder „600“ einzugeben
Text
Mehrzeiliges Textfeld für längere Zeichenkettenwerte.
Anwendungsfälle: Commit-Nachrichten, JSON-Schnipsel, Freitextnotizen, mehrzeilige Konfiguration
Beispiel: Eine Variable namens changelog, in die Benutzer vor dem Deployment die Release Notes einfügen
Enum (Einfachauswahl)
Dropdown-Menü, in dem der Benutzer genau eine Option aus einer vordefinierten Liste auswählt.
Anwendungsfälle: Umgebungstyp, Deployment-Strategie, boolesche Auswahlmöglichkeiten
Beispiel: Eine Variable namens deployment_type mit den Optionen „rolling“, „blue-green“, „canary“
Beim Erstellen einer Enum-Variable fügen Sie im Variableneditor jede Option mit Anzeigebezeichnung und Wert hinzu.
Select (Mehrfachauswahl)
Dropdown, in dem der Benutzer eine oder mehrere Optionen aus einer vordefinierten Liste auswählen kann. Die ausgewählten Werte werden als JSON-Array übergeben (zum Beispiel ["staging","production"]), nicht als einzelne Zeichenkette.
Anwendungsfälle: Zielregionen, Feature-Flags, mehrere Hostgruppen, Tag-Listen
Beispiel: Eine Variable namens target_regions mit den Optionen us-east-1, eu-west-1, ap-southeast-1
Einschränkungen:
- Standardwerte müssen aus der Optionsliste gewählt werden und können mehrere Auswahlen enthalten
- In Bash-, PowerShell- und Python-Templates müssen Sie das JSON-Array aus dem Argument- oder Umgebungswert parsen (siehe Beispiele unten)
Secret
Passwort-Eingabefeld, in dem der Wert verborgen wird.
Anwendungsfälle: API-Schlüssel, Passwörter, Tokens, sensible Konfiguration
Beispiel: Eine Variable namens api_token, bei der der eingegebene Wert aus Sicherheitsgründen als Punkte angezeigt wird
Standardwerte
Für die meisten Variablentypen können Sie einen optionalen Standardwert festlegen. Wenn ein Benutzer den Dialog zum Ausführen eines Tasks öffnet, sind die Felder mit diesen Standardwerten vorausgefüllt.
- String, Integer, Text, Secret: ein einzelner Standardwert
- Enum: eine Option aus der Liste
- Select: eine oder mehrere Optionen aus der Liste
Standardwerte sind nützlich für Zeitpläne und Integrationen, bei denen dasselbe Template wiederholt mit vorhersehbaren Parametern ausgeführt wird. Benutzer können die Werte vor dem Start eines Tasks weiterhin ändern.
Variable übergeben als (Ziel)
Jede Survey-Variable kann auf eine von zwei Arten übergeben werden:
| Einstellung | Verhalten |
|---|---|
| Extra-Variable (Standard) | Übergabe auf die für die App übliche Weise: Ansible --extra-vars, Terraform -var oder name=value-CLI-Argumente für Shell-Apps |
| Umgebungsvariable | Wird als Prozess-Umgebungsvariable gesetzt, deren Name dem Namen der Survey-Variable entspricht |
Verwenden Sie Umgebungsvariable, wenn Ihr Skript oder Tool aus der Umgebung statt aus CLI-Flags liest. Für Terraform-Variablen, die der TF_VAR_-Konvention folgen müssen, benennen Sie die Survey-Variable TF_VAR_instance_type und setzen Sie das Ziel auf Umgebungsvariable.
Variablen mit dem Ziel Umgebungsvariable werden nicht zusätzlich in Extra-Vars, -var oder CLI-Argumenten übergeben. Jeder Wert wird genau einmal übergeben.
Wie Survey-Variablen an Tasks übergeben werden
Survey-Variablen werden je nach Template-Typ und der Einstellung Variable übergeben als unterschiedlich übergeben.
Werte der Mehrfachauswahl (Typ select) sind auf jedem Übergabeweg JSON-kodierte Arrays (Extra-Vars-JSON, -var, CLI-Argumente und Umgebungsvariablen). Eine Auswahl der Optionen 1 und 2 wird zu ["1","2"], nicht zu einer durch Leerzeichen getrennten Zeichenkette.
Ansible-Templates
Survey-Variablen werden als Ansible-Extra-Variablen über das --extra-vars-Flag übergeben.
Beispiel: Wenn Sie eine Survey-Variable namens app_version definieren:
---
- hosts: webservers
tasks:
- name: Deploy application
command: deploy.sh {{ app_version }}
Beim Ausführen des Tasks gibt der Benutzer „2.5.0“ im Survey-Formular ein, und Ansible erhält den Wert wie folgt:
ansible-playbook playbook.yml --extra-vars "app_version=2.5.0"
Terraform/OpenTofu-Templates
Survey-Variablen werden als Terraform-Variablen über das -var-Flag übergeben.
Beispiel: Wenn Sie eine Survey-Variable namens instance_count definieren:
variable "instance_count" {
type = number
description = "Number of instances to create"
}
resource "aws_instance" "web" {
count = var.instance_count
instance_type = "t2.micro"
# ... other configuration
}
Beim Ausführen des Tasks gibt der Benutzer „3“ im Survey-Formular ein, und Terraform erhält den Wert wie folgt:
terraform apply -var="instance_count=3"
Shell/Bash-Templates
Survey-Variablen werden als Kommandozeilenargumente an das Bash-Skript übergeben:
/bin/bash your_script.sh var1=val1 var2=val2 ... varN=valN
Mit folgendem Code innerhalb des Skripts können Sie die Argumente in ein Array parsen:
declare -A args
for arg in "$@"; do
KEY="${arg%%=*}"
VALUE="${arg#*=}"
args["$KEY"]="$VALUE"
done
echo "ARG1: ${args[ARG1]}"
echo "ARG2: ${args[ARG2]}"
Bei Mehrfachauswahl-Variablen ist der Wert eine JSON-Array-Zeichenkette. Parsen Sie sie mit jq (stellen Sie sicher, dass jq in Ihrem Executor-Image verfügbar ist):
regions_json='["us-east-1","eu-west-1"]'
regions=$(echo "$regions_json" | jq -r '.[]')
for region in $regions; do
echo "Deploying to $region"
done
PowerShell-Templates
Survey-Variablen werden als Kommandozeilenargumente an das laufende PowerShell-Skript übergeben:
pwsh your_script.sh var1=val1 var2=val2 ... varN=valN
Um die Argumente zu parsen, verwenden Sie den folgenden Code im laufenden Skript:
$parsed = @{}
foreach ($a in $args) {
if ($a -match "^([^=]+)=(.*)$") {
$key = $matches[1]
$val = $matches[2]
$parsed[$key] = $val
}
}
Write-Host "Parsed arguments:"
write-host $parsed['env1']
write-host $parsed.env1
Bei Mehrfachauswahl-Variablen parsen Sie das JSON-Array aus dem Argumentwert:
$regions = $parsed['target_regions'] | ConvertFrom-Json
foreach ($region in $regions) {
Write-Host "Deploying to $region"
}
Python-Templates
Survey-Variablen werden als Kommandozeilenargumente an das laufende Python-Skript übergeben:
python3 your_script.sh var1=val1 var2=val2 ... varN=valN
Um die Argumente zu parsen, verwenden Sie den folgenden Code im laufenden Skript:
import sys
parsed = {}
for arg in sys.argv[1:]:
if "=" in arg:
key, val = arg.split("=", 1)
parsed[key] = val
print("Parsed arguments:")
print(parsed.get("env1"))
print(parsed["env1"] if "env1" in parsed else None)
Bei Mehrfachauswahl-Variablen parsen Sie das JSON-Array:
import json
regions = json.loads(parsed["target_regions"])
for region in regions:
print(f"Deploying to {region}")
Survey-Variablen verwenden
Manuelle Task-Ausführung
Beim Ausführen eines Tasks aus einem Template mit Survey-Variablen:
- Klicken Sie beim Template auf Ausführen
- Ein Formular mit allen definierten Survey-Variablen erscheint
- Füllen Sie die Werte für jedes Feld aus
- Klicken Sie auf Task ausführen
Der Task wird mit den von Ihnen angegebenen Werten ausgeführt, die an das Playbook oder Skript übergeben werden.
Geplante Tasks
Zeitpläne können Werte für Survey-Variablen enthalten, um dasselbe Template mit unterschiedlichen Parametern nach verschiedenen Zeitplänen auszuführen.
Einrichtung:
- Fügen Sie Survey-Variablen zu Ihrem Template hinzu
- Erstellen Sie einen Zeitplan für dieses Template
- Definieren Sie in der Zeitplankonfiguration die Werte für Ihre Survey-Variablen
- Jeder geplante Lauf verwendet diese vordefinierten Werte
Beispiel-Anwendungsfall: Ein Backup-Playbook mit unterschiedlichen Aufbewahrungsrichtlinien ausführen:
- Täglicher Zeitplan mit
retention_days=7 - Wöchentlicher Zeitplan mit
retention_days=30 - Monatlicher Zeitplan mit
retention_days=365
Weitere Details finden Sie in der Dokumentation zu Zeitplänen.
Integrationen und Webhooks
Integrationen können Werte aus eingehenden Webhooks extrahieren und Survey-Variablen zuordnen.
Einrichtung:
- Fügen Sie Survey-Variablen zu Ihrem Template hinzu
- Erstellen Sie eine Integration, die dieses Template auslöst
- Konfigurieren Sie Wert-Extraktoren, um Daten aus den Webhook-Nutzdaten zu übernehmen
- Ordnen Sie die extrahierten Werte Ihren Survey-Variablen zu
Beispiel: Ein Deployment auslösen, wenn ein GitHub-Release erstellt wird:
- Release-Tag aus den Webhook-Nutzdaten extrahieren
- Einer Survey-Variable namens
release_versionzuordnen - Das Deployment-Playbook erhält die Versionsnummer
Weitere Details finden Sie in der Dokumentation zu Integrationen.
Best Practices
Aussagekräftige Namen verwenden
Wählen Sie klare, aussagekräftige Namen für Ihre Survey-Variablen, die deren Zweck erkennen lassen:
- ✅ Gut:
target_environment,app_version,backup_retention_days - ❌ Schlecht:
env,ver,days
Hilfreiche Titel vergeben
Der Titel erscheint im Formular, gestalten Sie ihn daher benutzerfreundlich:
- Variablenname:
db_host - Titel: „Datenbank-Hostname oder IP-Adresse“
Enum oder Select für bekannte Optionen verwenden
Wenn Benutzer aus einer begrenzten Menge von Optionen wählen sollen, verwenden Sie Enum oder Select statt String:
- ✅ Enum für genau eine Auswahl: production, staging oder development
- ✅ Select, wenn mehrere Auswahlen gültig sind: mehrere Regionen oder Feature-Flags
- ❌ String-Feld mit dem Hinweis „production oder staging eingeben“
Das Ziel Umgebungsvariable bewusst einsetzen
Bevorzugen Sie die standardmäßige Übergabe als Extra-Variable, es sei denn, Ihr Playbook, Skript oder Tool liest explizit aus der Prozessumgebung. Benennen Sie Variablen mit dem Ziel Umgebungsvariable genau so, wie das nachgelagerte Tool es erwartet (zum Beispiel TF_VAR_region).
Pflichtfelder angemessen kennzeichnen
Kennzeichnen Sie Felder nur dann als erforderlich, wenn sie wirklich notwendig sind. Erwägen Sie, in Ihren Playbooks sinnvolle Standardwerte für optionale Felder bereitzustellen.
In Ihrem Code validieren
Gehen Sie nicht davon aus, dass die Werte von Survey-Variablen immer gültig sind. Fügen Sie Validierungslogik in Ihren Playbooks oder Skripten hinzu:
- name: Validate environment variable
assert:
that:
- environment in ['production', 'staging', 'development']
fail_msg: "Invalid environment: {{ environment }}"
Secrets für sensible Daten verwenden
Verwenden Sie für sensible Werte wie API-Schlüssel, Passwörter oder Tokens immer den Typ Secret. So wird sichergestellt, dass die Werte in der Oberfläche und in den Logs verborgen bleiben.
Mit Variablengruppen kombinieren
Survey-Variablen lassen sich gut mit Variablengruppen kombinieren:
- Verwenden Sie Variablengruppen für statische Konfiguration, die von mehreren Tasks gemeinsam genutzt wird
- Verwenden Sie Survey-Variablen für Werte, die sich bei jedem Task-Lauf ändern
Beispiel:
- Variablengruppe: Datenbank-Verbindungsdaten, API-Endpunkte
- Survey-Variablen: Deployment-Umgebung, Versionsnummer, Feature-Flags
Häufige Anwendungsfälle
Umgebungsspezifische Deployments
Erstellen Sie Survey-Variablen für:
environment: Enum mit den Optionen „production, staging, development“app_version: String für die zu deployende Versionenable_debug: Enum mit den Optionen „true, false“
Datenbankoperationen
Erstellen Sie Survey-Variablen für:
db_name: String für den Datenbanknamenbackup_retention_days: Integer für die Aufbewahrungsrichtliniemaintenance_window: String für das Zeitfenster
Infrastrukturbereitstellung
Erstellen Sie Survey-Variablen für:
instance_count: Integer für die Anzahl der Instanzeninstance_type: Enum mit den Optionen „t2.micro, t2.small, t2.medium“region: Enum mit AWS-Regionen
CI/CD-Pipelines
Erstellen Sie Survey-Variablen für:
git_branch: String für den zu bauenden Branchbuild_type: Enum mit den Optionen „debug, release“run_tests: Enum mit den Optionen „true, false“
Unterschiede zu Variablengruppen
| Merkmal | Survey-Variablen | Variablengruppen |
|---|---|---|
| Zweck | Laufzeiteingabe pro Task | Wiederverwendbare statische Konfiguration |
| Definitionszeitpunkt | Zum Zeitpunkt der Task-Ausführung | Vorkonfiguriert im Projekt |
| Anwendungsfall | Werte, die sich pro Lauf ändern | Gemeinsame Einstellungen für mehrere Tasks |
| Format | Einzelne typisierte Felder | JSON-Format mit verschachtelten Objekten |
| Geltungsbereich | Einzelner Task-Lauf | Mehrere Templates/Inventories |
| Sicherheit | Typ Secret verbirgt sensible Werte | Tab „Secrets“ für sensible Daten |
Verwenden Sie Survey-Variablen, wenn Sie Flexibilität zur Laufzeit benötigen, und Variablengruppen, wenn Sie eine konsistente Konfiguration über mehrere Task-Ausführungen hinweg wünschen.