Invites
Les invites (prompts) sont des options prédéfinies, propres à chaque type de modèle, que vous pouvez activer pour permettre une personnalisation à l'exécution. Contrairement aux variables de sondage, qui sont des champs personnalisés que vous créez, les invites sont des options intégrées correspondant à des options de ligne de commande spécifiques d'Ansible, Terraform et d'autres outils.
Cette fonctionnalité vous permet de :
- Remplacer les valeurs par défaut du modèle à l'exécution
- Cibler des hôtes ou des ressources spécifiques
- Contrôler le comportement d'exécution avec des options de ligne de commande
- Transmettre des options d'exécution via des appels API ou des planifications
Invites et variables de sondage
| Caractéristique | Invites | Variables de sondage |
|---|---|---|
| Définition | Options prédéfinies propres au modèle | Champs personnalisés que vous créez |
| Exemples | Ansible : --limit, --tagsTerraform : workspaces, -destroy | Nom d'environnement, numéro de version, paramètres personnalisés |
| Configuration | Activation via des cases à cocher dans le modèle | Ajout dans les paramètres du modèle avec un nom et un type |
| Transmises comme | Options de ligne de commande intégrées | Ansible : --extra-varsTerraform : -var |
Les invites sont des options standardisées intégrées à Semaphore pour des outils spécifiques, tandis que les variables de sondage sont des champs personnalisés flexibles que vous définissez vous-même.
Invites Ansible
Pour les modèles de playbook Ansible, vous pouvez activer des invites pour les options de ligne de commande suivantes :
Limit
Activez l'invite --limit pour spécifier les hôtes à cibler lors de l'exécution du playbook.
Équivalent CLI : ansible-playbook playbook.yml --limit webservers
Cas d'usage :
- Exécuter le playbook sur un sous-ensemble des hôtes de l'inventaire
- Cibler des serveurs spécifiques pour un déploiement
- Tester des modifications sur un seul hôte avant un déploiement général
Exemple :
- Votre inventaire contient 50 serveurs web
- Activez l'invite Limit
- Lors de l'exécution de la tâche, indiquez
web-01.example.compour ne cibler que ce serveur - Ou indiquez
webservers:&productionpour cibler les serveurs web de production
Tags
Activez l'invite --tags pour n'exécuter que les tâches portant des tags spécifiques.
Équivalent CLI : ansible-playbook playbook.yml --tags deploy,restart
Cas d'usage :
- N'exécuter que certaines parties d'un playbook
- Exécuter les étapes de déploiement sans les tâches de configuration
- Redémarrer rapidement des services sans exécuter tout le playbook
Exemple :
---
- 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
Activez l'invite Tags et saisissez deploy,restart pour ignorer l'étape d'installation.
Skip Tags
Activez l'invite --skip-tags pour ignorer les tâches portant des tags spécifiques.
Équivalent CLI : ansible-playbook playbook.yml --skip-tags testing,debug
Cas d'usage :
- Ignorer les tâches optionnelles en production
- Exclure les tâches de débogage ou de test
- Contourner les tâches chronophages lorsqu'elles ne sont pas nécessaires
Exemple : avec le playbook ci-dessus, activez Skip Tags et saisissez install pour ignorer l'installation des paquets et n'exécuter que les tâches de déploiement et de redémarrage.
Activer les invites Ansible
Pour activer les invites Ansible :
- Accédez à Modèles de tâches et sélectionnez votre modèle Ansible
- Repérez la section Invites Ansible dans les paramètres du modèle
- Cochez les cases des invites souhaitées :
- ☐ Limit - Active l'option
--limit - ☐ Tags - Active l'option
--tags - ☐ Skip Tags - Active l'option
--skip-tags
- ☐ Limit - Active l'option
- Enregistrez le modèle

Une fois activés, ces champs apparaissent dans le formulaire d'exécution de tâche, dans les requêtes API et dans les configurations de planification.
Invites Terraform/OpenTofu
Pour les modèles Terraform et OpenTofu, Semaphore propose plusieurs invites intégrées :
Sélection du workspace
Sélectionnez le workspace Terraform à utiliser pour l'exécution de la tâche.
Équivalent CLI : terraform workspace select staging
Cas d'usage :
- Gérer plusieurs environnements (dev, staging, production)
- Séparer les fichiers d'état pour différentes configurations
- Tester des modifications d'infrastructure de manière isolée
Configuration :
- Créez des workspaces dans l'onglet Workspaces du modèle
- Le sélecteur de workspace apparaît automatiquement dans le formulaire de tâche
- Les utilisateurs choisissent le workspace cible lors de l'exécution des tâches
Consultez Workspaces Terraform pour une configuration détaillée.
Option Destroy
Activez l'option -destroy pour démanteler l'infrastructure.
Équivalent CLI : terraform apply -destroy
Cas d'usage :
- Nettoyer des environnements de test temporaires
- Mettre hors service une infrastructure
- Supprimer des ressources spécifiques
Important : il s'agit d'une opération destructrice. Utilisez-la avec prudence et envisagez d'exiger une confirmation dans vos flux de travail.
Option Migrate State
Activez l'option -migrate-state lors d'un changement de configuration du backend.
Équivalent CLI : terraform init -migrate-state
Cas d'usage :
- Déplacer l'état vers un autre backend
- Migrer entre différents emplacements de stockage
- Mettre à jour la configuration du backend
Activer les invites Terraform
Les invites Terraform sont disponibles dans les paramètres du modèle :
- Accédez à Modèles de tâches et sélectionnez votre modèle Terraform
- Configurez les invites disponibles dans les paramètres du modèle :
- Sélection du workspace (activée automatiquement si des workspaces sont configurés)
- Option Destroy
- Option Migrate State
- Enregistrez le modèle
Le formulaire de tâche affiche ces options lors de l'exécution de tâches Terraform.
Invites Bash, PowerShell et Python
Pour les modèles Bash, PowerShell et Python, les invites sont minimales, car l'essentiel de la personnalisation passe par les variables de sondage.
Les invites disponibles sont :
- Arguments CLI
- Branche
Ces types de modèles tirent davantage parti des variables de sondage personnalisées pour transmettre des paramètres aux scripts.
Utiliser les invites
Exécution manuelle d'une tâche
Lors de l'exécution d'une tâche à partir d'un modèle avec des invites activées :
- Cliquez sur Exécuter sur le modèle
- Un formulaire apparaît avec les champs des invites activées
- Renseignez les valeurs des invites que vous souhaitez utiliser (les champs optionnels peuvent rester vides)
- Cliquez sur Exécuter la tâche
La tâche s'exécute avec les valeurs d'invite que vous avez spécifiées, transmises comme options de ligne de commande.
Appels API
Pour transmettre des valeurs d'invite via l'API, incluez-les dans le corps de la requête :
Exemple Ansible :
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
Important : les invites doivent être activées dans le modèle pour que les valeurs soient acceptées. Si vous transmettez des valeurs d'invite via l'API sans les avoir activées, ces valeurs seront ignorées.
Tâches planifiées
Les planifications peuvent inclure des valeurs d'invite pour personnaliser l'exécution automatisée des tâches :
Exemple : planification avec des invites Ansible
- Planification de déploiement quotidien avec
limit: "production"ettags: "deploy" - Planification de maintenance hebdomadaire avec
tags: "updates,cleanup"
Configurez les valeurs d'invite dans les paramètres de la planification afin que chaque exécution planifiée utilise les options spécifiées.
Intégrations et webhooks
Les intégrations peuvent extraire des valeurs des webhooks et les associer à des invites :
Exemple : un webhook GitHub déclenche un déploiement
- Extraire le nom de la branche du webhook
- L'associer à l'invite Limit pour cibler un environnement spécifique
- Déployer uniquement sur les serveurs correspondant à l'environnement de la branche
Consultez Intégrations pour la configuration des webhooks.
Bonnes pratiques
N'activer que les invites nécessaires
Chaque invite activée ajoute un champ au formulaire de tâche. N'activez que les invites que les utilisateurs auront réellement besoin de personnaliser.
✅ Bien : activer Limit pour les équipes d'exploitation qui doivent cibler des hôtes spécifiques ❌ Mal : activer toutes les invites « au cas où »
Combiner avec les variables de sondage
Utilisez les invites pour les options de ligne de commande propres à l'outil et les variables de sondage pour les paramètres personnalisés :
Exemple de modèle Ansible :
- Invites : Limit (quels hôtes), Tags (quelles tâches)
- Variables de sondage :
app_version(quelle version),enable_rollback(logique personnalisée)
Documenter l'utilisation de l'API
Si les modèles sont déclenchés via l'API, documentez les invites disponibles et leur format attendu :
## 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"
}
Utiliser Limit pour des tests en toute sécurité
Testez toujours d'abord les playbooks potentiellement destructeurs avec l'invite Limit :
- Activez l'invite Limit dans le modèle
- Première exécution : indiquez
limit: "test-server-01"pour tester sur un seul hôte - Vérifiez le succès
- Deuxième exécution : indiquez
limit: "production"pour déployer sur tous les hôtes
Valider les combinaisons d'invites
Certaines combinaisons d'invites peuvent n'avoir aucun sens. Ajoutez de la documentation ou une validation :
- Utiliser
--tags deployavec--skip-tags deploycrée un conflit - Spécifier à la fois un workspace et l'option destroy exige une prudence accrue
Cas d'usage courants
Déploiement progressif avec Limit
Déployez progressivement en production à l'aide de l'invite Limit d'Ansible :
- Exécution 1 :
limit: "web-01.example.com"- Déploiement sur un seul serveur - Surveillez les éventuels problèmes
- Exécution 2 :
limit: "webservers:&canary"- Déploiement sur les serveurs canari - Validez les métriques
- Exécution 3 :
limit: "webservers:&production"- Déploiement complet
Exécution sélective avec Tags
Utilisez Tags pour n'exécuter que certaines parties d'un playbook :
Matin : tags: "deploy" - Déployer la nouvelle version
Après-midi : tags: "config" - Mettre à jour la configuration
Soir : tags: "restart" - Redémarrer les services avec la nouvelle configuration
Gestion des environnements avec les workspaces
Utilisez la sélection de workspace Terraform pour gérer les environnements :
- Développement : sélectionnez le workspace
dev- ressources moins coûteuses, itération plus rapide - Staging : sélectionnez le workspace
staging- proche de la production, pour les tests - Production : sélectionnez le workspace
prod- infrastructure de production complète
Nettoyage avec Destroy
Utilisez Terraform destroy pour les infrastructures temporaires :
- Créez l'environnement de test : exécutez avec le workspace
test-branch-123 - Lancez les tests d'intégration
- Nettoyez : exécutez avec l'option destroy activée et le workspace
test-branch-123
Dépannage
Valeurs d'invite ignorées
Problème : les valeurs d'invite transmises n'ont aucun effet
Solution : vérifiez que l'invite correspondante est activée dans les paramètres du modèle. Les invites doivent être explicitement activées.
Impossible de spécifier limit
Problème : le champ Limit n'apparaît pas dans le formulaire de tâche
Solution :
- Modifiez le modèle
- Repérez la section « Invites Ansible »
- Cochez la case « Limit »
- Enregistrez le modèle
Les appels API échouent avec des valeurs d'invite
Problème : les requêtes API contenant des valeurs d'invite renvoient des erreurs
Solution :
- Assurez-vous que les invites sont activées dans le modèle
- Vérifiez le format JSON du corps de la requête
- Vérifiez que les noms de champs correspondent exactement (
limit, et nonhost_limit)
Les tags ne filtrent pas les tâches
Problème : des tags sont spécifiés mais toutes les tâches s'exécutent quand même
Solution :
- Vérifiez que les tâches du playbook ont bien des tags définis
- Vérifiez l'absence de fautes de frappe dans les noms de tags
- Assurez-vous que les tags sont séparés par des virgules sans espaces :
deploy,restartet nondeploy, restart
Documentation associée
- Variables de sondage - Champs personnalisés pour les modèles
- Modèles Ansible - Configuration spécifique à Ansible
- Modèles Terraform - Configuration spécifique à Terraform
- Planifications - Exécution automatisée des tâches
- Intégrations - Tâches déclenchées par webhook
- Documentation de l'API - Référence de l'API