ANSIBLE SÉMAPHORE : UNE RÉVOLUTION DANS L’AUTOMATISATION IT

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

Installation de packer

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

 

Installation de packer
Installation de packer
  • Ensuite nous pouvons démarrer les services sémaphore et MySQL en utilisant la commande :

 

docker-compose up --d
docker ps -a

 

Installation de packer
Installation de packer
Le service sémaphore est maintenant disponible sur l’URL : http:// :3000
 
Installation de packer

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

 

Installation de packer

  • 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
Installation de packer
Plus tard, nous pouvons ajouter de nouveaux projets à Sémaphore en utilisant le côté supérieur gauche de l’écran.
Installation de packer

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

Installation de packer
Installation de packer
  • 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 :

  1. “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 )
  2. “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.
Installation de packer
Installation de packer
Installation de packer

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

Installation de packer
  • 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.

Installation de packer
  • 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.
Installation de packer
  • 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 :

Installation de packer
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:

Installation de packer
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

 

Installation de packer
Exécuter le playbook pour la tâche red_color sur l’hôte cible. Nous verrons la sortie du playbook sur notre écran :
Installation de packer
Résultat sur le navigateur
Installation de packer
Exécuter le playbook pour la tâche red_color sur l’hôte cible. Nous verrons la sortie du playbook sur notre écran :
Installation de packer
Résultat sur le navigateur
Installation de packer
Exécuter le playbook pour la tâche blue_color sur l’hôte cible. Nous verrons la sortie du playbook sur notre écran :
Installation de packer
Résultat sur le navigateur
Installation de packer
Présentation du modèle de tâche finale
Installation de packer
Présentation des conteneurs sur l’hôte ansible
Installation de packer

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