Semaphore (anciennement Ansible Semaphore, aujourd’hui Semaphore UI) est une interface web open source qui permet d’exécuter des playbooks Ansible depuis un navigateur, sans passer par la ligne de commande.
Écrit en Go, léger et autonome, il gère les inventaires, les identifiants, la planification, l’historique d’exécution et le contrôle d’accès, et sert d’alternative légère à AWX et à Ansible Automation Platform. Il prend aussi en charge Terraform, OpenTofu, Bash et PowerShell.
Ce guide technique explique ce qu’est Semaphore, pourquoi l’associer à Ansible, ses concepts clés, son installation avec Docker, l’exécution et la planification de playbooks, l’usage de l’API, ainsi que les bonnes pratiques de sécurité.
Semaphore est une application web open source qui fournit une couche de pilotage au-dessus d’Ansible. Plutôt que de lancer chaque playbook depuis un terminal, les équipes organisent dans un seul espace navigateur leurs projets, dépôts, inventaires, identifiants, modèles de tâches, planifications et historiques d’exécution.
Le projet, longtemps nommé Ansible Semaphore, a été rebaptisé Semaphore UI à mesure qu’il élargissait sa portée au-delà d’Ansible.
Trois caractéristiques le définissent :
Attention à ne pas le confondre avec Semaphore CI, une plateforme d’intégration continue qui n’a aucun lien avec ce projet, malgré le nom commun.
Semaphore transforme Ansible, un outil en ligne de commande, en une plateforme accessible à toute une équipe ops. Voici les principaux bénéfices qu’il apporte au quotidien :
| Critère | Semaphore | AWX et Ansible Automation Platform |
|---|---|---|
| Nature | Interface web open source légère | Plateforme complète (AWX open source, AAP édité par Red Hat) |
| Empreinte | Binaire unique en Go, faible consommation | Plus lourde, orientée conteneurs et Kubernetes |
| Portée | Ansible, plus Terraform, OpenTofu, Bash et PowerShell | Centrée sur Ansible, écosystème étendu côté AAP |
| Public visé | Homelab, petites et moyennes équipes, PME | Grandes organisations avec besoins d’entreprise |
| Support | Communauté open source | Support commercial Red Hat pour AAP |
Le choix dépend du contexte. Semaphore vise la simplicité et la légèreté : il s’installe et s’exploite vite, sans infrastructure lourde.
AWX, successeur open source d’Ansible Tower, et Ansible Automation Platform, son édition commerciale soutenue par Red Hat, s’adressent aux organisations qui recherchent un écosystème complet, des fonctionnalités d’entreprise et un support contractuel.
Pour beaucoup d’équipes, Semaphore couvre le besoin réel sans la complexité d’AWX.
Avant de configurer votre premier projet, voici les notions essentielles pour se repérer dans l’interface et le vocabulaire de Semaphore :
La méthode la plus rapide pour démarrer est Docker. Le fichier docker-compose ci-dessous lance Semaphore avec la base embarquée BoltDB, suffisante pour un test ou un petit usage. L’interface est ensuite accessible sur le port 3000.
services:
semaphore:
image: semaphoreui/semaphore:latest
container_name: semaphore
ports:
- "3000:3000"
environment:
SEMAPHORE_DB_DIALECT: bolt
SEMAPHORE_ADMIN: admin
SEMAPHORE_ADMIN_NAME: Admin
SEMAPHORE_ADMIN_EMAIL: admin@example.com
SEMAPHORE_ADMIN_PASSWORD: a_changer
volumes:
- semaphore_data:/var/lib/semaphore
volumes:
semaphore_data: On lance ensuite la pile avec docker compose up -d, puis on se connecte sur http://localhost:3000 avec le compte administrateur défini. Pour une installation par binaire ou paquet (.deb, .rpm), le compte administrateur se crée en ligne de commande :
semaphore user add --admin \
--login admin --name "Admin" \
--email admin@example.com \
--password 'a_changer' \
--config /etc/semaphore/config.json Pour un usage en production, on remplace BoltDB par PostgreSQL ou MySQL, plus robustes et adaptés à la concurrence, et l’on place Semaphore derrière un reverse proxy (Nginx, par exemple) avec un certificat TLS.
Une fois connecté, l’exécution d’un playbook suit une séquence logique, du paramétrage au lancement.
Le prérequis technique à retenir : le serveur Semaphore doit disposer d’un accès SSH vers les hôtes gérés, et vos playbooks doivent résider dans un dépôt Git.
Un modèle de tâche accepte aussi des options familières d’Ansible, comme la limite d’hôtes ou les tags, ainsi que des variables saisies au lancement.
Au-delà du lancement manuel, Semaphore automatise les exécutions de trois façons :
curl -X POST \
-H "Authorization: Bearer VOTRE_TOKEN" \
-H "Content-Type: application/json" \
https://semaphore.example.com/api/project/1/tasks \
-d '{"template_id": 1}'Cette API ouvre la voie à l’intégration de Semaphore dans une chaîne CI/CD ou dans des automatisations plus larges, où il devient le moteur d’exécution des playbooks déclenché par d’autres systèmes.
Une fois Semaphore en place, quelques réflexes permettent de sécuriser son usage en production et d’éviter les mauvaises surprises :
Plusieurs erreurs reviennent fréquemment lors de la prise en main de Semaphore. Les connaître en amont évite des désagréments en production :
Oui. Semaphore (Semaphore UI, anciennement Ansible Semaphore) est un projet open source, écrit en Go, que l’on auto-héberge librement. Il s’installe par Docker, par binaire ou par paquet système.
Semaphore est une interface légère, simple à déployer et peu gourmande en ressources. AWX et Ansible Automation Platform sont des plateformes plus complètes et plus lourdes, orientées entreprise, avec un support commercial pour AAP. Semaphore convient aux équipes qui veulent une interface sans la complexité d’AWX.
Non. Semaphore se greffe sur des playbooks et des rôles existants stockés dans un dépôt Git, sans modification. Il a seulement besoin d’un accès SSH vers les hôtes cibles.
Non. Malgré son ancien nom, il exécute aussi du code Terraform, OpenTofu, Bash et PowerShell, via différents types de modèles de tâches.
De trois façons : des planifications cron pour les tâches récurrentes, des webhooks pour un déclenchement sur événement, et une API REST pour intégrer Semaphore dans une chaîne CI/CD ou un script.
BoltDB (embarquée) suffit pour un test ou un petit usage. En production, PostgreSQL ou MySQL sont recommandées pour la robustesse et la gestion de la concurrence.