
Dans ce tutoriel, je vais vous expliquer comment déployer Semaphore UI avec Docker qui est propose une interface Web pour gérer vos automatisation (playbook) d’Ansible.
Si vous ne connaissez pas encore Ansible, je vous invite à lire ce tutoriel dans un premier temps : Ansible : installation, configuration et utilisation avec Windows et Linux.
Avant d’aller plus de commencer, voici un présentation de Semaphore UI :
Semaphore UI est une interface web intuitive pour gérer des playbooks Ansible. Elle permet de centraliser l’exécution des tâches d’automatisation, de planifier des jobs, et de suivre l’état des déploiements en temps réel. Grâce à son interface claire, les utilisateurs peuvent créer des projets, définir des inventaires, injecter des variables et lancer des playbooks sans ligne de commande. Semaphore offre aussi une gestion fine des accès utilisateurs et une intégration avec Git pour synchroniser les configurations. C’est une solution idéale pour les équipes DevOps souhaitant automatiser et sécuriser leurs déploiements Ansible.
Sommaire
Prérequis pour déployer Semaphore UI
Pour commencer, vous aurez besoin d’un serveur Linux avec Docker d’installé : Ubuntu 24.04 : Installation de Docker et Docker compose
Ensuite vous aurez besoin d’un ou plusieurs dépôt Git pour stocker vos différents projets qui vont contenir les playbooks Ansible et les fichier d’inventaire. Vous pouvez auto-héberger Gitlab pour tout gérer en interne : Gitlab : déployer avec Docker et docker compose
Idéalement une première expérience avec Ansible et la gestion de dépôt Git.
Configurer le déploiement de Semaphore UI
Pour nous aider le déploiement de Semphore UI avec Docker et Docker Compose, sur le site officiel, on trouve un générateur de fichier docker-compose.yml qui va nous permettre de configurer Semaphore UI avec l’ensemble des variables et des services nécessaire au bon fonctionnement.
Aller sur l’URL suivante : Docker Container Configuration
Sélectionner la version OpenSource puis utiliser les options disponibles pour configurer votre déploiements de Semaphore UI.
Dans cette partie, je ne vais pas rentrer dans le détails car le site est très bien, il suffit juste de lire ce qui est affiché.
Une fois la configuration terminée, vous aurez le fichier Docker Compose qui s’affiche :

Pour ma part à cette étape, j’ai copié le contenu dans vscode et j’ai modifié les volumes pour appliquer une redirection de dossier en ajoutant
./devant le nom du volume afin d’avoir un accès directe au dossier.
Déployer Semaphore UI
Sur votre serveur Linux, si nécessaire créer un dossier pour le stockage des fichiers et dossiers des conteneurs pour Semaphore UI, pour ma part je vais me placer dans le dossier /containers/semaphore.
Créer le fichier docker-compose.yml :
sudo nano docker-compose.ymlDans le fichier, coller le contenu généré sur le site :

Télécharger les images :
sudo docker compose pull
Démarrer les conteneurs :
sudo docker compose up -d
Vérifier les logs que les conteneurs démarrent bien sans soucis :
sudo docker compose logs -f

Dans les logs, quand le message Server is running s’affiche, Semaphore UI est démarré.
Pour tester le bon fonctionnement, ouvrir un navigateur et aller à l’URL suivante : http://ip:3000
On arrive sur la page d’authentification, entrer les identifiants configurés dans le fichier docker-compose.yml.

Création du premier projet
Semaphore UI utilise la notion de projet pour regrouper de façon logique les différents éléments lié à l’automatisation :
- Inventaire
- Templates
- Variables
- ….
On peut par exemple faire un projet qui va regrouper les serveurs Linux et un second les serveurs Windows.
Commencer par nommer le projet 1 et cliquer sur CREATE 2.

Le projet est créé.

Configuration des identifiants et mot de passe – key store
La première étape dans la configuration du projet va être d’enregistrer les différents identifiants :
- Connexion au serveur (Identifiant / mot de passe, clé privée)
- Identifiant d’accès au dépôt Git
Aller sur la page Key Store 1 et cliquer sur le bouton NEW KEY 2.

Nommer 1 l’enregistrement, sélectionner le type 2, saisir l’identifiant 3, puis entrer le mot de passe ou la clé privée 4 et cliquer sur CREATE 5.

L’élément est ajouté.

Ajouter un dépôt Git
Aller sur la page Repositories 1 et cliquer sur NEW REPOSITORY 2.

Nommer le dépôt 1, entrer l’URL 2 et le nom de la branche 3, sélectionner l’identifiant 4 pour accéder au dépôt et cliquer sur CREATE 5.

Même si le dépôt est public, il faut sélectionner Non dans le champ Access Key
Le dépôt Git est ajouté.

Configuration de l’inventaire
D’un point de vue Ansible, l’inventaire est la liste des ordinateurs (serveurs) sur lesquels les playbooks Ansible vont être exécutés.
Dans Semaphore UI, l’inventaire peut être soient sur le dépôt Git ou saisie depuis l’interface Web.
Cliquer sur Inventory 1 puis sur NEW INVENTORY 2 et sur Ansible Inventory 3.

Inventaire statique
L’inventaire statique (Static YAML), c’est celui qui est intégré directement à Sephamore UI.
Commencer par nommer l’inventaire 1, choisir les identifiants 2, sélectionner le type : Static YAML 3, saisir l’inventaire au même format que sur Ansible 4 puis cliquer sur CREATE 5.

L’inventaire statique est ajouté.

Inventaire depuis le dépôt Git
La seconde solution pour l’inventaire va être d’indiquer un fichier qui est sur le dépot.
Nommer l’inventaire 1, sélectionner l’identifiant 2, choisir le type File 3, indiquer le chemin et le nom du fichier sur le dépôt Git 4, choisir le dépôt Git 5 qui a été configuré et cliquer sur CREATE 6 pour ajouter l’inventaire.


Créer une tâche – Task Templates
Les tâches (Task) permettent de configurer l’exécution des playbooks, aller sur Task Templates 1 puis cliquer sur NEW TEMPLATE 2 puis sur Ansible Playbook 3.

Nommer la tâche 1, indiquer le chemin et le fichier du playbook 2 sur le dépôt Git, sélectionner l’inventaire 3 puis le dépôt Git 4 où se trouve le playbook et cliquer sur CREATE 5.

La tâche est créé, pour l’exécuter cliquer sur le bouton lecture 1.

Cliquer sur RUN 1 pour lancer la tâche.

La tâche exécute le playbook de la même manière que la commande ansible-playbook.


Le playbook est exécuté.
Planifier l’exécution des tâches
Denier point que l’on va voir dans ce tutoriel, c’est la planification des tâches depuis Semaphore UI.
Aller sur Schedule 1 puis cliquer sur NEW SCHEDULE 2.

Nommer la planification 1, sélectionner la tâche 2 (Template), configurer la planification 3 , cocher la case 4 pour activer la planification et cliquer sur SAVE 5 pour l’ajouter.

L’exécution du playbook est planifiée.
Dans ce premier tutoriel dédié à Sephamore UI, on a vu comment le mettre en place avec Docker et ces principales fonctionnalités.
Dans de futur tutoriel, j’aborderai d’autres points pour que vous puissiez utiliser pleinement ses fonctionnalités.
Pour finir, mon ressentie sur Sephamore UI est à ce jour le meilleur outils gratuit que j’ai pu tester et utiliser pour la gestion des playbooks Ansible par rapport à Jenkins ou encore Rundeck.
