🚀 Déploiement de Semaphore avec Docker Compose¶
Semaphore est une interface web légère qui permet de gérer et exécuter vos Ansible playbooks facilement.
✅ Prérequis¶
- Docker (site officiel)
- Docker Compose (documentation officielle)
- Connexion internet pour récupérer les images Docker
- Le port
3000doit être disponible sur votre machine
1️⃣ Configuration¶
Le fichier docker-compose.yml déploie deux services principaux :
| Service | Description |
|---|---|
| PostgreSQL | Base de données stockant projets, tâches et utilisateurs de Semaphore |
| Semaphore | Interface web pour Ansible accessible via le port 3000 |
Volumes de persistance¶
semaphore-postgres: volume Docker pour les données PostgreSQL afin d’assurer la persistance.
2️⃣ Variables d’environnement¶
Stockez les paramètres sensibles et personnalisables dans un fichier .env :
SEMAPHORE_USER=ukakiko
SEMAPHORE_PASS=PASSWORD
SEMAPHORE_ADMIN_EMAIL=admin@example.com
SEMAPHORE_DB=semaphore
Ces variables sont injectées dans le fichier docker-compose.yml pour séparer configuration et déploiement.
3️⃣ Exemple de fichier docker-compose.yml¶
version: '3'
services:
postgres:
container_name: semaphore_db
image: postgres:14
restart: unless-stopped
environment:
POSTGRES_USER: ${SEMAPHORE_USER}
POSTGRES_PASSWORD: ${SEMAPHORE_PASS}
POSTGRES_DB: ${SEMAPHORE_DB}
volumes:
- semaphore-postgres:/var/lib/postgresql/data
semaphore:
container_name: semaphore
image: semaphoreui/semaphore:latest
restart: unless-stopped
depends_on:
- postgres
ports:
- "3000:3000"
environment:
SEMAPHORE_DB_USER: ${SEMAPHORE_USER}
SEMAPHORE_DB_PASS: ${SEMAPHORE_PASS}
SEMAPHORE_DB_HOST: postgres
SEMAPHORE_DB_PORT: 5432
SEMAPHORE_DB_DIALECT: postgres
SEMAPHORE_DB: ${SEMAPHORE_DB}
SEMAPHORE_ADMIN: ${SEMAPHORE_USER}
SEMAPHORE_ADMIN_NAME: ${SEMAPHORE_USER}
SEMAPHORE_ADMIN_PASSWORD: ${SEMAPHORE_PASS}
SEMAPHORE_ADMIN_EMAIL: ${SEMAPHORE_ADMIN_EMAIL}
SEMAPHORE_ACCESS_KEY_ENCRYPTION: "gs72mPntFATGJs9qK0pQ0rKtfidlexiMjYCH9gWKhTU="
TZ: UTC
volumes:
semaphore-postgres:
4️⃣ Lancement du projet¶
docker-compose up -d
- Cette commande télécharge les images, crée les volumes et démarre les services en arrière-plan.
5️⃣ Accès à l’interface web¶
Ouvrez votre navigateur à :
http://localhost:3000
Connectez-vous avec les identifiants définis dans le fichier .env.
6️⃣ Gestion des services¶
| Action | Commande |
|---|---|
| Vérifier l’état | docker-compose ps |
| Afficher les logs | docker-compose logs -f |
| Redémarrer les services | docker-compose restart |
| Arrêter et supprimer | docker-compose down |
7️⃣ Sécurité¶
- Clé de chiffrement : la variable
SEMAPHORE_ACCESS_KEY_ENCRYPTIONsécurise les clés stockées. Pour en générer une nouvelle :
head -c 32 /dev/urandom | base64
8️⃣ Notes complémentaires¶
- Pour utiliser MySQL au lieu de PostgreSQL, adaptez la configuration.
- Vous pouvez monter un fichier
ansible.cfgpour personnaliser Ansible. - Semaphore n’a pas de support natif pour SSO, mais propose une intégration LDAP.
9️⃣ Exemple d’arborescence du projet¶
/opt/docker-compose/Semaphore/
├── docker-compose.yml
├── .env
├── README.md
✅ Conclusion¶
Cette configuration vous permet de déployer rapidement Semaphore, un outil simple et efficace pour orchestrer vos déploiements Ansible avec persistance des données et configuration claire.