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é. 

Qu’est-ce que Semaphore (anciennement Ansible Semaphore) ?

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. 

Pourquoi utiliser Semaphore avec Ansible ?

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 : 

Semaphore, AWX et Ansible Automation Platform : que choisir ? 

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. 

DÉMARRER VOTRE PROJET

Les concepts clés de Semaphore (Projet, Inventaire, Key Store…)

Avant de configurer votre premier projet, voici les notions essentielles pour se repérer dans l’interface et le vocabulaire de Semaphore :

Comment installer Semaphore avec Docker ?

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. 

Comment exécuter un playbook Ansible dans Semaphore ?

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. 

Planifier et automatiser les exécutions des playbooks 

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. 

Comment sécuriser Semaphore en production ?

Une fois Semaphore en place, quelques réflexes permettent de sécuriser son usage en production et d’éviter les mauvaises surprises :

Semaphore : les pièges à éviter

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 :

FAQ : Semaphore et Ansible 

Semaphore est-il gratuit et open source ? 

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. 

Quelle différence entre Semaphore et AWX ou Ansible Tower ? 

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. 

Faut-il modifier mes playbooks Ansible existants ? 

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. 

Semaphore sert-il uniquement à Ansible ? 

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. 

Comment automatiser l’exécution des playbooks ? 

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. 

Quelle base de données utiliser ? 

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. 

DISCUTONS