Semaphore UI – Interface Web Ansible

Présentation

Dans ce tutoriel, nous allons installer et configurer Semaphore UI pour gérer l’exécution de tâches. Ces tâches peuvent être des playbooks Ansible, Terraform, des scripts Bash et bien d’autres.

Ce tutoriel est prévu pour Debian 12 et Ubuntu Server 24.04.
Dans ce tutoriel, Semaphore UI est installé sur un serveur virtuel Proxmox VE (PVE) mais il est également possible de l’installer sur un Serveur Privé Virtuel (VPS).


1) Prérequis


2) Installation de mariadb

2.1) Mettre à jour le cache apt

2.2) Installer le paquet mariadb


3) Sécurisation de mariadb

3.1) Se connecter au serveur de base de données mariadb

3.2) Définir un mot de passe pour l’utilisateur « root »

Remarque : Il s’agit de l’utilisateur root du serveur de base de données et non du système.
Attention : Remplacez ChangeThisPassword par le mot de passe que vous aurez choisi pour l’utilisateur semaphore.

3.3) Autoriser « root » uniquement en local

3.4) Supprimer l’accès anonyme et les bases de test

3.5) Recharger les privilèges et se déconnecter


4) Création base de données semaphore

Nous allons créer une base de données semaphore et d’un utilisateur ayant le même nom.
L’utilisateur semaphore aura tous les droits sur la base de données du même nom.

4.1) Se connecter au serveur de base de données mariadb

4.2) Créer un utilisateur de base de données semaphore

Attention : Remplacez ChangeThisPassword par le mot de passe que vous aurez choisi pour l’utilisateur semaphore.

4.3) Créer une base de données semaphore


5) Création du contexte d’exécution

Nous allons créer un utilisateur semaphore non-admin pour exécuter le service semaphore.
Ensuite, nous créerons un répertoire qui contiendra le fichier de configuration de semaphore.

5.1) Créer un utilisateur linux semaphore

Attention : Cet utilisateur n’a pas besoin de privilèges élevés.

5.2) Créer le répertoire de configuration semaphore


6) Installation de Semaphore UI

6.1) Installer les prérequis

6.2) Télécharger la dernière version de Semaphore UI

6.3) Installer Semaphore UI

6.4) Configurer Semaphore UI

6.5) Déplacer le fichier de configuration dans /etc/semaphore


7) Création d’un service pour Semaphore

7.1) Configuration du service semaphore

Contenu :

7.2) Recharger la configuration de systemd

7.3) Activer le service au démarrage du système

7.4) Démarrer le service semaphore

7.5) Vérifier le status du service semaphore


8) Création d’un projet dans Semaphore

8.1) Se connecter à l’interface web de semaphore

Par défaut, semaphore écoute sur le port réseau 3000.
Il faut donc se rendre à l’url suivant : http://192.168.1.101:3000

Remarque : Remplacer 192.168.1.101 par l’adresse IP de votre serveur.

Renseigner identifiant et mot de passe qui ont été défini lors de la configuration de semaphore.

8.2) Créer un premier projet


9) Informations d’authentification

Nous allons créer des informations d’authentification pour permettre à Semaphore d’accéder aux différentes ressources à savoir :

  • Clé privée pour se connecter via SSH aux machines de l’inventaire
  • Mot de passe sudo pour les actions nécessitant une élévation de privilège
  • Clé d’API du dépôt git (si ce dernier n’est pas public)

9.1) Se rendre dans « Key Store »

Cliquer sur « NEW KEY ».

9.2) Informations de connexion ssh

Renseigner la clé privée permettant de se connecter aux machines de l’inventaire. Évidemment, la clé publique doit être renseignée sur les machines cibles.
Si vous avez suivi le tutoriel Ansible – Installation et configuration, il faudra copier la clé privée de l’utilisateur ansible normalement stockée à cet endroit : /home/ansible/.ssh/id_rsa.

Attention : La clé privée doit être conservée précieusement et ne doit pas être partagée.

9.3) Mot de passe sudo

Attention : Laisser le champ « Login » vide. Dans le cas contraire, vous pourriez rencontrer une erreur lors de l’exécution du playbook au moment de l’élévation de privilège.

9.4) Authentification git

Password : Dans mon cas, il s’agit du Token d’authentification git.

Remarque : Si le dépôt git est public, vous pouvez ignorer cette étape.


10) Dépôt git dans Semaphore

10.1) Se rendre dans « Repositories »

Cliquer sur « NEW REPOSITORY ».

10.2) Configurer un dépôt git


11) Inventaire dans Semaphore

11.1) Se rendre dans « Inventory »

11.2) Configurer un inventaire

L’inventaire ansible est directement disponible dans le projet sur le dépôt git (voir tutoriel ansible).

Path to Inventory file : Chemin vers l’inventaire ansible. Dans mon cas, l’inventaire est contenu dans un répertoire « inventory » à la racine du projet.
Repository : Dépôt sur lequel se trouve l’inventaire.


12) Tâches dans Semaphore

12.1) Se rendre dans « Task Templates »

12.2) Configurer une tâche

Playbook Filename : Chemin vers le fichier playbook à exécuter. Dans mon cas, il s’agit du fichier « playbook_upgrade_all_packages.yml » stocké à la racine du projet git.

12.3) Exécuter une tâche

Cliquer sur « RUN »

Certaines options sont disponibles comme :
Dry Run qui permet de simuler l’exécution du playbook et sans altérer les machines cibles.

Résultat d’exécution du playbook

Remarque : SI vous rencontrez des problèmes à cette étape, rendez-vous à la partie suivante.


13) Problèmes et erreurs rencontrés avec Semaphore

13.1) Désactiver la vérification SSL dans git

Uniquement si le dépôt git est auto-hébergé avec un certificat auto-signé.

Erreur : SSL: certificate subject name (*.mydomain.com) does not match target host name 'myserver.mydomain2.com'

Solution :

Cette commande permet de désactiver la vérification SSL dans git pour l’utilisateur semaphore en modifiant le fichier /home/semaphore/.gitconfig.
Remarque : L’idéal serait de mettre en place un certificat valide.

13.2) Désactiver la vérification de l’empreinte de la clé ssh

Problème : Si vous utilisez l’authentification par clé, l’exécution du playbook dans semaphore peut être bloquée ici :

Solution :
Modifier le fichier de configuration ansible.

Contenu :

Cette configuration va désactiver la vérification de l’empreinte ssh qui nécessite une action utilisateur lors de la toute 1ere connexion à un serveur.
Remarque : Il est possible de configurer ce comportement directement dans les variables de l’inventaire : ansible_ssh_common_args: '-o StrictHostKeyChecking=no'


Voilà ! C’est terminé !

Vous pouvez maintenant automatiser des tâches grâce à Semaphore UI.

Il ne reste plus qu’à :

  1. Exécuter votre playbook ansible depuis Semaphore UI.
  2. Utiliser la section commentaires pour me faire part de vos remarques ou problèmes rencontrés.
  3. Visiter la page de la documentation officielle pour aller encore plus loin.
  4. Faire un don pour soutenir notre travail.

En savoir plus sur Jj World

Subscribe to get the latest posts sent to your email.

Laisser un commentaire