Initial vault setup

This commit is contained in:
2026-06-09 18:40:21 +02:00
commit bda02d587f
3692 changed files with 402457 additions and 0 deletions
+131
View File
@@ -0,0 +1,131 @@
---
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](https://semaphoreui.com/) |
| **GitHub** | [ansible-semaphore/semaphore](https://github.com/ansible-semaphore/semaphore) |
| **License** | MIT |
| **Langage** | Go (backend) + Vue.js (UI) |
| **Étoiles GitHub** | 1,5k ⭐ (monorepo) / 11k+ sur ansible-semaphore |
| **Catégorie** | [[cat-deployment\|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é)
```yaml
# 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)
```bash
# 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
- [Site officiel](https://semaphoreui.com/)
- [Dépôt GitHub](https://github.com/ansible-semaphore/semaphore)
- [Documentation](https://docs.semaphoreui.com/)
- [Démo en ligne](https://demo.semaphoreui.com/)
## 🔗 Pages Liées
- [[cat-deployment]]
- [[app-portainer]]
- [[app-coolify]]
- [[app-traefik]]
- [[cat-docker]]
- [[securisation-home-lab]]
- [[recettes-docker-compose]]