Initial vault setup
This commit is contained in:
@@ -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]]
|
||||
Reference in New Issue
Block a user