Initial vault setup
This commit is contained in:
@@ -0,0 +1,158 @@
|
||||
---
|
||||
title: Semaphore UI
|
||||
created: 2026-06-07
|
||||
updated: 2026-06-07
|
||||
type: app
|
||||
tags: [catalogue, automation, ansible, ci-cd, devops, ui, go]
|
||||
confidence: high
|
||||
contested: false
|
||||
sources: [https://selfh.st/apps/?tag=Automation, https://github.com/semaphoreui/semaphore]
|
||||
---
|
||||
|
||||
# 🖥️ Semaphore UI
|
||||
|
||||
> **L'interface web moderne pour Ansible** — exécutez, planifiez et supervisez vos playbooks depuis une UI claire, sans exposer la CLI à toute l'équipe. L'**anti-AWX** : un binaire Go unique qui démarre en 5 secondes.
|
||||
|
||||
## 📋 Informations Générales
|
||||
|
||||
| Champ | Valeur |
|
||||
| :--- | :--- |
|
||||
| **Site web** | [semaphoreui.com](https://semaphoreui.com/) |
|
||||
| **GitHub** | [semaphoreui/semaphore](https://github.com/semaphoreui/semaphore) |
|
||||
| **License** | MIT |
|
||||
| **Langage** | Go (backend) + Vue.js (UI) |
|
||||
| **Étoiles GitHub** | 1 267 ⭐ (cette org) / 11k+ sur l'écosystème |
|
||||
| **Dernière MAJ** | 2026-06-06 |
|
||||
| **Catégorie** | [[cat-automation\|Automation]] |
|
||||
|
||||
## 📝 Description
|
||||
|
||||
**Semaphore UI** (aussi appelé *Ansible Semaphore*) répond à une frustration classique des équipes qui adoptent [[app-ansible|Ansible]] : « comment permettre à l'équipe de lancer un playbook de prod depuis une interface, **avec logs en temps réel, secrets chiffrés, audit et RBAC**, sans donner un accès SSH au serveur de production ? ». Réponse historique : **Ansible Tower** (propriétaire Red Hat, ~3 000 $/an) ou **AWX** (la version open source, mais qui pèse 5 Go de RAM, 6 conteneurs Kubernetes, PostGreSQL, Redis…). Réponse légère : **Semaphore UI**.
|
||||
|
||||
Le projet est né en 2015 en Python, puis **réécrit en Go en 2022** par la communauté et adopté dans l'écosystème Red Hat comme alternative crédible à AWX pour les petites équipes (2-50 personnes). Côté technique, c'est un **binaire Go unique** qui embarque : le serveur HTTP, l'UI Vue.js, l'ORM, le scheduler cron et l'intégration Ansible. Résultat : **~150 Mo de RAM** au repos, démarrage en moins de 5 secondes, configuration via un TOML/YAML unique.
|
||||
|
||||
**Fonctionnalités principales** :
|
||||
- ✅ **Inventaires statiques** (YAML/JSON) **et dynamiques** (AWS EC2, GCP, OpenStack, DigitalOcean)
|
||||
- ✅ **Credentials Vault** : clés SSH, mots de passe, tokens API, stockés **chiffrés en DB** (AES-256)
|
||||
- ✅ **Environnements multiples** : dev / staging / prod avec leurs propres variables
|
||||
- ✅ **Tâches planifiées** (cron) : lancer `backup.yml` tous les jours à 03h15
|
||||
- ✅ **Tâches manuelles** : exécution à la demande avec **logs live**
|
||||
- ✅ **Templates de tâches** : pré-configurations réutilisables par toute l'équipe
|
||||
- ✅ **Notifications** : email, Slack, webhook sur succès/échec
|
||||
- ✅ **API REST** complète (intégrable avec GitLab CI, Gitea Actions, n8n…)
|
||||
- ✅ **RBAC** : rôles `admin` / `task runner` / `viewer`
|
||||
|
||||
**Vs AWX** : AWX brille pour des équipes de 50+ admins avec des besoins complexes de conformité. Semaphore brille pour des équipes de 2-10 qui veulent juste **une UI simple qui marche**. Pour un homelab, Semaphore est largement suffisant.
|
||||
|
||||
## 🚀 Installation
|
||||
|
||||
### Prérequis
|
||||
- Un hôte Linux/macOS ou un conteneur Docker
|
||||
- Ansible accessible depuis l'hôte (binaire ou via conteneur dédié)
|
||||
- Une base de données : **SQLite** (par défaut, parfait pour démarrer), MySQL ou PostgreSQL
|
||||
|
||||
### Option 1 : Docker Compose (recommandé)
|
||||
```yaml
|
||||
# docker-compose.yml
|
||||
services:
|
||||
semaphore-db:
|
||||
image: mysql:8.0
|
||||
container_name: semaphore-db
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
MYSQL_ROOT_PASSWORD: change-me-root
|
||||
MYSQL_DATABASE: semaphore
|
||||
MYSQL_USER: semaphore
|
||||
MYSQL_PASSWORD: change-me-db
|
||||
volumes:
|
||||
- semaphore-db:/var/lib/mysql
|
||||
|
||||
semaphore:
|
||||
image: semaphoreui/semaphore:latest
|
||||
container_name: semaphore
|
||||
restart: unless-stopped
|
||||
depends_on:
|
||||
- semaphore-db
|
||||
ports:
|
||||
- "3000:3000"
|
||||
environment:
|
||||
SEMAPHORE_DB_DIALECT: mysql
|
||||
SEMAPHORE_DB_HOST: semaphore-db
|
||||
SEMAPHORE_DB_PORT: 3306
|
||||
SEMAPHORE_DB_USER: semaphore
|
||||
SEMAPHORE_DB_PASSWORD: change-me-db
|
||||
SEMAPHORE_DB_NAME: semaphore
|
||||
SEMAPHORE_LISTEN: 0.0.0.0:3000
|
||||
SEMAPHORE_ADMIN_USERNAME: admin
|
||||
SEMAPHORE_ADMIN_PASSWORD: change-me-admin
|
||||
SEMAPHORE_ADMIN_EMAIL: admin@example.com
|
||||
SEMAPHORE_ACCESS_KEY_ENCRYPTION: "changez-cette-cle-32-chars-min"
|
||||
volumes:
|
||||
- semaphore-data:/data
|
||||
|
||||
volumes:
|
||||
semaphore-db:
|
||||
semaphore-data:
|
||||
```
|
||||
|
||||
### Option 2 : Binaire natif (Linux)
|
||||
```bash
|
||||
wget https://github.com/semaphoreui/semaphore/releases/latest/download/semaphore_linux_amd64
|
||||
chmod +x semaphore_linux_amd64
|
||||
sudo mv semaphore_linux_amd64 /usr/local/bin/semaphore
|
||||
semaphore setup # assistant interactif
|
||||
sudo systemctl enable --now semaphore
|
||||
```
|
||||
|
||||
## ⚙️ Configuration
|
||||
|
||||
- **Premier login** : `admin` / mot de passe défini dans `SEMAPHORE_ADMIN_PASSWORD` (**à changer immédiatement**)
|
||||
- **Clés SSH** : menu *Key Store* → ajouter la clé privée qui sera utilisée pour se connecter aux cibles
|
||||
- **Inventaires** : créer un inventaire statique (YAML/JSON) ou pointer vers un script dynamique
|
||||
- **Repos de playbooks** : pointer vers un dépôt Git (HTTPS ou SSH), choisir la branche
|
||||
- **Credentials Vault** : chiffrés en base avec la **master key** `SEMAPHORE_ACCESS_KEY_ENCRYPTION` — **sauvegarder impérativement**
|
||||
- **Schedules** : cron avec timezone explicite (ex. `TZ=Europe/Paris`)
|
||||
- **Notifications** : configurer Slack / email / webhook pour les résultats d'exécution
|
||||
|
||||
## 🔗 Alternatives
|
||||
|
||||
### Open Source
|
||||
- **AWX** — version officielle Red Hat, puissante mais lourde (K8s requis, 5 Go RAM)
|
||||
- **Rundeck** — [[app-rundeck|plus généraliste]], gère aussi des jobs non-Ansible
|
||||
- **Jenkins + Ansible plugin** — l'ancienne école, orienté pipelines
|
||||
- **n8n + Ansible CLI** — workflow no-code qui appelle Ansible via SSH
|
||||
- **StackStorm** — orienté "event-driven automation" (plus complexe)
|
||||
|
||||
### Propriétaires (ce que Semaphore remplace)
|
||||
- **Red Hat Ansible Automation Platform** — 14 000 $/an/100 nœuds
|
||||
- **Ansible Tower (legacy)** — maintenant absorbé dans AAP
|
||||
- **Puppet Enterprise Console** — équivalent pour Puppet
|
||||
- **SaltStack Enterprise** — équivalent pour Salt
|
||||
- **CloudBees Flow** — orchestrateur de pipelines CI/CD
|
||||
|
||||
## 🔒 Sécurité
|
||||
|
||||
- ⚠️ **Changer `SEMAPHORE_ADMIN_PASSWORD` et `SEMAPHORE_ACCESS_KEY_ENCRYPTION` immédiatement** après l'install
|
||||
- ⚠️ **Sauvegarder la master key** : si elle est perdue, **tous les credentials Vault sont irrécupérables**
|
||||
- **Mettre Semaphore derrière un reverse proxy** (Traefik, Caddy, Nginx) avec TLS obligatoire
|
||||
- Activer **2FA** (TOTP) sur tous les comptes utilisateurs
|
||||
- **Restriction IP** : Semaphore peut tout faire sur les cibles (root via `become: yes`) — ne pas exposer publiquement
|
||||
- **Audit** : exporter les logs vers un SIEM (Loki, Graylog) pour analyse
|
||||
- **Sauvegardes** : automatiser le dump MySQL + le `semaphore-data` (qui contient la master key)
|
||||
|
||||
## 📚 Ressources
|
||||
|
||||
- [Site officiel](https://semaphoreui.com/)
|
||||
- [Dépôt GitHub](https://github.com/semaphoreui/semaphore)
|
||||
- [Documentation](https://docs.semaphoreui.com/)
|
||||
- [Démo en ligne](https://demo.semaphoreui.com/) (login: `demo` / `demo`)
|
||||
- [Communauté Reddit](https://www.reddit.com/r/ansible/)
|
||||
- [Awesome Ansible](https://github.com/awesome-ansible/awesome-ansible)
|
||||
|
||||
## 🔗 Pages Liées
|
||||
- [[cat-automation]] — Catégorie Automation
|
||||
- [[app-ansible]] — Le moteur que Semaphore pilote
|
||||
- [[app-rundeck]] — Orchestrateur de jobs (alternative généraliste)
|
||||
- [[cat-deployment]] — Catégorie Déploiement
|
||||
- [[recettes-docker-compose]] — Templates Docker
|
||||
- [[securisation-home-lab]] — Sécurité
|
||||
Reference in New Issue
Block a user