Files
wiki/Catalogue-Self-Hosted/apps/app-semaphore.md
T
2026-06-09 18:40:21 +02:00

5.7 KiB


title: Semaphore created: 2026-06-07 updated: 2026-06-07 type: app tags: [catalogue, deployment, ansible, ci-cd, devops, ui] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Deployment, https://github.com/ansible-semaphore/semaphore]

🚀 Semaphore

UI web pour Ansible — exécutez, planifiez et supervisez vos playbooks Ansible depuis une interface web, sans passer par la CLI. L'équivalent self-hosted d'Ansible Tower / AWX, mais en Go léger.

📋 Informations Générales

Champ Valeur
Site web semaphoreui.com
GitHub ansible-semaphore/semaphore
License MIT
Langage Go (backend) + Vue.js (UI)
Étoiles GitHub 1,5k (monorepo) / 11k+ sur ansible-semaphore
Catégorie cat-deployment
Origine Communauté Ansible (reconnu par Red Hat)

📝 Description

Semaphore (nom complet Ansible Semaphore) est une interface web moderne pour Ansible qui répond au besoin classique : "je veux que l'équipe puisse lancer les playbooks prod depuis une UI, avec logs, secrets, et audit, sans donner accès à la CLI". C'est l'anti-AWX : là où AWX est une montagne Kubernetes (multi-conteneurs, Operator, PostGreSQL, Redis…), Semaphore est un binaire Go unique qui démarre en quelques secondes.

L'ancêtre historique de Semaphore (v1) était en Python, repris par la communauté sous le nom "Ansible Semaphore" puis réécrit en Go en 2022-2023. La version actuelle (2.x) est mature, activement maintenue, et recommandée par Red Hat comme alternative légère à AWX pour les équipes de 2-50 personnes.

Fonctionnalités principales :

  • Inventaires statiques et dynamiques (fichier YAML, AWS EC2, GCP, OpenStack…)
  • Credentials vault : SSH keys, mots de passe, tokens API, stockés chiffrés en DB
  • Environnements multiples : dev/staging/prod avec leurs propres vars
  • Tâches planifiées (cron-like) : lancer un playbook tous les jours à 03:00
  • Tâches manuelles : exécution à la demande, sortie live des logs
  • Templates de tâches : pré-configurations réutilisables par l'équipe
  • Notifications : email, Slack, webhook
  • API REST complète (intégration avec GitLab CI, Gitea Actions, n8n…)
  • RBAC basique : admin, "task runner", viewer

Vs AWX : AWX (~5 Go RAM, 6 conteneurs, PostGreSQL) est adapté à des équipes de 50+ admins ; Semaphore (~150 Mo RAM, binaire unique) est adapté à des équipes de 2-10. Pour un homelab, Semaphore est largement suffisant.

🚀 Installation

Prérequis

  • Un serveur Linux (Ubuntu, Debian, RHEL, Alpine…) ou macOS
  • Ansible installé sur la même machine (ou via Docker runner)
  • Une base de données : SQLite (par défaut, suffit pour démarrer) ou MySQL/PostgreSQL

Via Docker (recommandé)

# docker-compose.yml
services:
  semaphore:
    image: semaphoreui/semaphore:latest
    container_name: semaphore
    restart: unless-stopped
    ports:
      - "3000:3000"
    volumes:
      - semaphore-data:/data
    environment:
      - SEMAPHORE_DB_DIALECT=bolt
      - SEMAPHORE_ADMIN_USERNAME=admin
      - SEMAPHORE_ADMIN_PASSWORD=changeme
      - SEMAPHORE_ADMIN_EMAIL=admin@example.com
      - SEMAPHORE_LISTEN=0.0.0.0:3000
volumes:
  semaphore-data:

Installation native (Linux)

# Sur Ubuntu/Debian
sudo apt install -y ansible
wget https://github.com/ansible-semaphore/semaphore/releases/latest/download/semaphore_linux_amd64
chmod +x semaphore_linux_amd64
sudo mv semaphore_linux_amd64 /usr/local/bin/semaphore
semaphore setup   # assistant de configuration
semaphore --config /etc/semaphore/config.json

⚙️ Configuration

  • Clés SSH : ajouter la clé privée qui sera utilisée par Ansible pour se connecter aux cibles
  • Inventaires : créer un inventaire statique (YAML) ou pointer vers un inventaire dynamique (plugin AWS)
  • Playbooks : pointer vers un repo Git (HTTPS ou SSH), sélectionner la branche
  • Credentials : chiffrés en DB avec la master key de Semaphore — sauvegarder cette clé
  • Schedules : définir les planifications cron (timezone importante, ex. TZ=Europe/Paris)
  • Notifications : configurer Slack/email/webhook pour les succès/échecs

🔗 Alternatives

  • AWX — la version officielle Red Hat, puissante mais lourde (Kubernetes requise)
  • Ansible Tower — l'original propriétaire (3 000 $/an pour 100 nœuds)
  • Rundeck — alternative plus généraliste (CI/CD + jobs non-Ansible)
  • n8n + Ansible CLI — orchestrateur no-code qui appelle Ansible
  • Jenkins + Ansible plugin — l'ancienne école, lourd

🔒 Sécurité

  • ⚠️ Changer SEMAPHORE_ADMIN_PASSWORD dès l'installation
  • ⚠️ Sauvegarder la master key de chiffrement des credentials : si elle est perdue, tous les secrets sont irrécupérables
  • Mettre Semaphore derrière un reverse proxy (Traefik, Caddy) avec TLS
  • Activer 2FA sur les comptes utilisateurs
  • Limiter les permissions du binaire : Semaphore exécute Ansible, qui peut tout faire — ne pas l'exposer publiquement sans restriction IP
  • Audit : les actions sont loggées, mais exporter les logs vers un SIEM (Loki, Splunk) pour l'analyse

📚 Ressources

🔗 Pages Liées