ANSIBLE SÉMAPHORE : UNE RÉVOLUTION DANS L’AUTOMATISATION IT
Contexte et Objectifs
Dans l’écosystème IT actuel, l’automatisation des déploiements et des tâches d’administration est cruciale pour accélérer les processus et réduire les marges d’erreurs. Ansible Sémaphore se présente comme une solution robuste et accessible offrant une interface web dédiée à la gestion et au suivi des exécutions Ansible. Ce tutoriel explore une approche conviviale pour orchestrer des tâches d’automatisations via Ansible. Vous découvrirez comment installer et configurer Ansible Sémaphore, ainsi que comment exploiter son interface pour lancer et suivre les playbooks Ansible. Cette démarche renforcera votre capacité à gérer les configurations systèmes, à déléguer les tâches d’automatisation et à assurer une traçabilité efficace des opérations réalisées avec Ansible.
Durée de mise en place : 30 à 45 min
Étapes de mise en place du projet
- Mise en place et détail de l’environnement ;
- Installation de Sémaphore ;
- Configuration des Projets
- Définition des Tâches et Template
- Exécution et Suivi des Tâches
Présentation des différents outils et plateformes
- Docker: est une plateforme logicielle conçu pour faciliter la conception, le test et le déploiement rapide d’applications à l’aide de conteneurs. Ces conteneurs permettent d’isoler les applications et leurs dépendances, ce qui simplifie le processus de développement, de distribution et de déploiement des logiciels. Si vous souhaiter en savoir plus sur Docker, vous pouvez consulter le cours dédié sur eazytraining.fr Introduction à Docker – EAZYTraining, Docker
qui propose une introduction complète à cette technologie.
- Docker Compose: est un outil qui permet de définir et de gérer des applications multi-conteneurs avec Docker. Il utilise un fichier YAML pour configurer les services, les réseaux et les volumes nécessaires à votre application, ce qui facilite le déploiement et la gestion des environnements de développement ou de production complexe. Pour plus d’information consulter la documentation officielle : https://docs.docker.com/compose/
- Git : est un système de gestion de version distribué qui permet de suivre les modifications apportées à des fichiers et dossiers au fil du temps. Il est largement utilisé dans le développement de logiciels pour collaborer efficacement sur des projets, gérer les changements et historiques de code, et faciliter le travail en équipe. Pour en apprendre un peu plus sur Git, je vous invite à regarder le cours sur : eazytraining.fr Introduction à GIT – EAZYTraining
- Ansible : est une plateforme open-source de gestion de configuration, de déploiement d’application et d’automatisation des tâches. Il permet aux administrateurs système de définir et de gérer l’état désiré de leur infrastructure informatique de manière déclarative, en utilisant des fichiers de configurations au format YAML. Avec Ansible, les opérations courantes telles que le déploiement d’applications, la configuration de serveurs et la gestion des services peuvent être effectuées de manière simple, efficace et reproductible sur un grand nombre de machines. Pour en apprendre d’avantage sur Ansible suivre le cours sur eazytraining.fr Ansible pour DevOps – EAZYTraining
- Linux: Administration et automatisation est un ensemble de pratiques et de techniques visant à gérer et à automatiser les tâches liées au système d’exploitation Linux. Cela implique la configuration, la maintenance et la sécurisation des systèmes Linux, ainsi que l’automatisation des processus répétitifs à l’aide d’outils comme Ansible, Bash scripting et d’autres solutions. L’objectif est d’optimiser l’efficacité opérationnelle et de garantir la cohérence et la fiabilité des systèmes Linux dans les environnements informatiques. Si vous souhaiter en savoir d’avantage sur ces notions, vous pouvez suivre le cours de Linux sur eazytraining.fr Linux: Administration et automatisation – EAZYTraining
Note : Pour en savoir plus, je vous invite à aller regarder notre site web où vous trouverez des cours très intéressants sur ces différentes technologies. EAZYTraining
Environnement
Architecture de l’environnement
Contexte
Le contexte est simple : nous aurons besoins tout d’abord d’un référentiel contenant notre code Ansible préalablement développé sur notre environnement de développement, ensuite d’un serveur que nous souhaitons administrer (serveur prod) et enfin d’une machine exécutant Ansible Sémaphore.
Mise en place de l’environnement
- Compte AWS : Se rendre sur AWS pour créer votre compte AWS
- Compte GitHub : Se rendre sur https://github.com/ pour créer votre compte GitHub
- Provisionner votre instance ec2 Linux sur aws en suivant les étapes aws_guide_ec2
- Installé git sur Linux: Se rendre sur Git (git-scm.com) pour l’installation
- Installé docker et docker compose : Nous allons installer docker et docker compose sur l’instance ec2 précédemment provisionné, il suffit simplement d’utiliser ces deux commandes :
curl -fsSL https://get.docker.com -o install-docker.sh sudo sh install-docker.sh
- L’application à déployer se trouve sur ce repos : Dépôt Sémaphore
B – Installation de Ansible Sémaphore
Pour cette revue, nous installons Sémaphore dans Docker.
Tout d’abord, nous devons créer un fichier docker compose dans notre répertoire de projet.
docker-compose.yml :
version: '3.7'
services:
mysql:
restart: unless-stopped
image: mysql:8.0
hostname: mysql
volumes:
- semaphore-mysql:/var/lib/mysql
environment:
MYSQL_RANDOM_ROOT_PASSWORD: 'yes'
MYSQL_DATABASE: semaphore
MYSQL_USER: semaphore
MYSQL_PASSWORD: semaphore
networks:
- semaphore-network
semaphore:
restart: unless-stopped
ports:
- 3000:3000
image: semaphoreui/semaphore:latest
environment:
SEMAPHORE_DB_USER: semaphore
SEMAPHORE_DB_PASS: semaphore
SEMAPHORE_DB_HOST: mysql # for postgres, change to: postgres
SEMAPHORE_DB_PORT: 3306 # change to 5432 for postgres
SEMAPHORE_DB_DIALECT: mysql # for postgres, change to: postgres
SEMAPHORE_DB: semaphore
SEMAPHORE_PLAYBOOK_PATH: /tmp/semaphore/
SEMAPHORE_ADMIN_PASSWORD: changeme
SEMAPHORE_ADMIN_NAME: admin
SEMAPHORE_ADMIN_EMAIL: admin@localhost
SEMAPHORE_ADMIN: admin
SEMAPHORE_ACCESS_KEY_ENCRYPTION: u0aKdC+eL9GeylV0whAz0pkC5MO9Yx4EcaZcNfeLLfE=
SEMAPHORE_LDAP_ACTIVATED: 'no' # if you wish to use ldap, set to: 'yes'
SEMAPHORE_LDAP_HOST: dc01.local.example.com
SEMAPHORE_LDAP_PORT: '636'
SEMAPHORE_LDAP_NEEDTLS: 'yes'
SEMAPHORE_LDAP_DN_BIND: 'uid=bind_user,cn=users,cn=accounts,dc=local,dc=shiftsystems,dc=net'
SEMAPHORE_LDAP_PASSWORD: 'ldap_bind_account_password'
SEMAPHORE_LDAP_DN_SEARCH: 'dc=local,dc=example,dc=com'
SEMAPHORE_LDAP_SEARCH_FILTER: "(\u0026(uid=%s)(memberOf=cn=ipausers,cn=groups,cn=accounts,dc=local,dc=example,dc=com))"
networks:
- semaphore-network
depends_on:
- mysql # for postgres, change to: postgres
volumes:
semaphore-mysql: # to use postgres, switch to: semaphore-postgres
networks:
semaphore-network:
name: "semaphore-network"
- Nous devons modifier les champs : MYSQL_PASSWORD, SEMAPHORE_DB_PASS et SEMAPHORE_ADMIN_PASSWORD
- Ensuite, nous devons créer une nouvelle valeur pour la clé SEMAPHORE_ADMIN_PASSWORD avec la commande suivante :
head -c32/dev/urandom | base64
- Ensuite nous pouvons démarrer les services sémaphore et MySQL en utilisant la commande :
docker-compose up --d
docker ps -a
C-Configuration des projets
Après l’installation , nous devons configurer les données de test dans notre service Ansible Sémaphore. Pour mettre en place un projet Sémaphore, nous devons nous connecter à Sémaphore en utilisant le login et mot de passe définit dans le docker compose et configurer les paramètres de notre projet.
- Connexion à Sémaphore
- Créer un nouveau projet
Un Projet sémaphore est un terme utilisé pour désigner un logiciel ou un projet d’infrastructure spécifique qui est géré et construit à l’aide de Sémaphore.
Dans Sémaphore, un projet correspond généralement à un dépôt Git et se compose d’un ensemble de fichiers de configuration qui spécifient comment le projet doit être construit et déployé.
Les fichiers de configuration peuvent inclure des informations sur l’environnement de génération du projet, telles que le système d’exploitation le langage, ainsi que les commandes de génération, les scripts de test et les workflows de déploiement qui doivent être exécutés lorsque des modifications sont apportées au dépôt git du projet.
- Création du projet : Nommez votre projet et cliquez sur créer ensuite s’affichera ce tableau de bord
Remarque:l’utilisateur drée un projet sera automatiquement membre du projet.
- Ajouter de nouveaux utilisateurs au système
En bas à gauche de l’écran, cliquez sur le nom (actuellement c’est ‘admin’) et choisissez le dans menu Utilisateurs. En haut à droite, nous pouvons ajouter de nouveaux utilisateurs avec le bouton : NOUVELLE UTILISATEURS
- Remplir le magasin des clés
Dans le menu Magasin de Clés , nous utilisons le bouton NOUVELLE CLE pour ajouter notre Clé Privée et notre Mot de passe.
Nous pouvons choisir ces deux types pour nos secrets :
- “Clé SSH”pour une connexion SSH basé sur une clé. Cette clé privée est récupérée au niveau du nœud prod ( la clé précédemment générer lors du provisionnement de la vm sur aws )
- “Mot de passe”pour les connexions par mot de passe, mais il peut être utiliser comme mot de passe vault Ansible et également mot de passe.
La Clé mot de passe dont le nom est token_github créé plus haut a pour valeur : nom sera le nom d’utilisateur de votre compte GitHub et dont le mot de passe sera la valeur du token de votre repos git. Il nous permettra de nous authentifier automatiquement sur notre compte GitHub.
- Ajouter nos playbooks et notre référentiel de rôle au système
Nous devons ajouter un référentiel de projet avec nos rôles et nos playbooks. Le menu Dépôts comporte le bouton en haut à droite de l’écran NOUVEAU REFERENTIEL.
Nous devons lui donner un nom lisible par l’homme, une URL de dépôt, la branche que nous voulons suivre et nous devons choisir une clé d’accès au dépôt. La Clé mot de passe dont le nom est token_github sera utilisé pour s’authentifier auprès de GitHub dans notre cas et l’url de dépôt sera https://github.com/Aurelie-Kamgang/demo-sempahore.git
- Créer des environnements
Nous devons ajouter un La section environnements définit des variables spécifiques à l’environnement pour nos tâches. Nous devons ajouter au moins un environnement à notre configuration. Nous pouvons le faire dans le coin supérieur droit de l’écran.Nous créons un environnement Lab avec des données JSON vides.
- Créer des inventaires
- Il est temps de créer notre premier inventaire pour notre configuration Sémaphore. Nous pouvons ajouter un nouvel inventaire dans le coin supérieur droit de l’écran.
- Au moment de cet article, nous pouvons choisir de créer un inventaire Static, Static YAML, ou d’extraire le fichier d’inventaire de git et de faire référence au nom du fichier et c’est ce derniers cas que nous allons utiliser.
- Un inventaire doit avoir un nom, nous devons définir notre clé SSH comme informations d’identification sur les machines distantes, et nous devons choisir le mot de passe que nous avons créé dans le magasin de clés pour l’élévation des privilèges.
- Modèles de tâches
Nous sommes prêt à créer notre premiermodèle de tâche. Ces modèles exécuteront nos playbooks.
Il existe trois types de modèles de tâches dans Sémaphore : TÄCHE, CONSTRUIRE et DEPLOYER.
Pour notre cas nous allons configurer un modèle de tâche simple pour l’exécution de playbooks. Lorsque nous exécutons ce modèle , il :
- Extrait les playbooks, rôles, métadonnées, vault, etc de Github
- Recherche le Playbook
- Télécharge les exigences s’il y’en a dans les fichiers de métadonnées
- Fait correspondre les hôtes dans l’inventaire Lab (il n’y a qu’un seul hôte pour le moment)
Automatisation du déploiement de l’application qui affiche un arrière-plan coloré
En capture vous avez les configurations pour la tâche dont le tag est deploy :
Automatisation du changement de l’arrière-plan en rouge
En capture vous avez les configurations pour la tâche dont le tag est red_color:
Automatisation du changement de l’arrière-plan en bleu
En capture vous avez les configurations pour la tâche dont le tag est blue_color:
Résultat sur le navigateur
Exécuter le playbook pour la tâche red_color sur l’hôte cible. Nous verrons la sortie du playbook sur notre écran :
Résultat sur le navigateur
Exécuter le playbook pour la tâche red_color sur l’hôte cible. Nous verrons la sortie du playbook sur notre écran :
Résultat sur le navigateur
Exécuter le playbook pour la tâche blue_color sur l’hôte cible. Nous verrons la sortie du playbook sur notre écran :
Résultat sur le navigateur
Présentation du modèle de tâche finale
Présentation des conteneurs sur l’hôte ansible
Conclusion
En conclusion, Ansible Sémaphore est l’outil idéal pour les équipes cherchant à automatiser leurs processus de déploiement de manière efficace et sécurisée. Sa simplicité d’utilisation couplée à des fonctionnalités avancées de gestion de projet et de collaboration, en fait une solution incontournable dans l’arsenal technologique des entreprises modernes.
Références
Pour plus d’informations, consultez la documentation officielle d’Ansible Semaphore
Tags et Catégories
Tags : #Ansible #Semaphore #Automatisation #DevOps
Catégorie : Automatisation, Ansible
Aurelie Blondel Nguedajang Kamgang
Ingénieur DevOps
blondelle aurelie nguedjang kamgang | LinkedIn