MISE EN PLACE D’UNE CHAÎNE D’INTÉGRATION CONTINUE ET DE DÉPLOIEMENT CONTINU AVEC GITLAB CI/CD SUR UN SERVEUR LINUX

MISE EN PLACE D’UNE CHAÎNE D’INTÉGRATION CONTINUE ET DE DÉPLOIEMENT CONTINU AVEC GITLAB CI/CD SUR UN SERVEUR LINUX

Contexte et Objectifs

  Notre article s’inscrit dans le cadre des retours des apprenants suite à une demande de comment est-ce que nous pouvons déployer nos applications sur des serveurs en entreprise. Leurs retours : Bonjour EAZYTraining, nous réalisons les différents projets qui se trouvent sur votre plateforme et nous déployons nos applications sur des environnements tels que Heroku et Eazy Labs, c’est super, mais en entreprise, comment ferions-nous pour pouvoir les déployer sur des serveurs ? Durée de mise en place : 20 min  

Étapes de mise en place du projet

  • Créer des comptes sur AWS & Gitlab ;
  • Récupérer le projet Fil Rouge du cours de Gitlab-CI ;
  • Provisionner l’infrastructure
  • Mise en place du pipeline CI/CD vers un serveur Linux
  • Vérifier notre infrastructure

Présentation des différents outils et plateformes

 
  • AWS : c’est une plateforme Cloud nous proposant plusieurs services divers nous permettant de mettre en place une infrastructure informatique. AWS Pour avoir un réel aperçu sur AWS, je vous invite à regarder ce cours : AWS
  • Gitlab : C’est une plateforme de collaboration open source qui offre de puissantes fonctionnalités au-delà de l’hébergement d’un dépôt de code. Vous pouvez suivre les problèmes, héberger des paquets et des registres, entretenir des wikis, mettre en place des pipelines d’intégration continue (CI) et de déploiement continu (CD), et bien d’autres choses encore. Gitlab Pour le cours, vous rendez-vous sur le site : eazytraining.fr Terraform les bases pour DevOps – EAZYTraining
  • Packer : c’est un outil permettant de créer des images personnalisées pour plusieurs plateformes cloud et de virtualisation. Packer Pour en apprendre un peu plus sur Packer, je vous invite à regarder le cours sur : eazytraining.fr Packer – EAZYTraining
  • Terraform : c’est un outil permettant de provisionner une infrastructure dans le cloud à l’aide du principe de IAC. Terraform Pour le cours de Terraform, les bases, je vous invite à regarder le cours sur : eazytraining.fr Terraform – EAZYTraining
  • Docker : C’est une plate-forme logicielle qui vous permet de concevoir, tester et déployer rapidement des applications à l’aide de conteneurs. Docker Pour le cours de Docker et pour en apprendre plus, vous rendez-vous sur : eazytraining.frIntroduction à Docker – 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

Mise en place de l’environnement

 

Compte AWS

Pour créer un compte AWS, AWS – EAZYTraining il suffit de se rendre sur AWS et de suivre les différentes étapes.

Compte Gitlab

Pour créer un compte Gitlab, il suffit de se rendre sur [Gitlab]Gitlab Sign IN

Installation de Packer

Pour installer Packer, il suffit de suivre les étapes de la documentation officielle : [ici](https://www.packer.io/docs/install). Dans notre cas, nous sommes sur un serveur Linux.
Installation de packer
Une fois l’installation terminée, nous allons vérifier qu’elle s’est bien déroulée :
tester l'installation

Installation de Terraform

Pour installer Terraform, suivez la procédure de la documentation officielle : ici  
Une fois l’installation terminée , nous allons vérifier:  

Installation de Docker

Docker sera installer directement sur notre infrastructure que nous allons provisionner via terraform et il nous suffit juste d’utiliser ces deux commandes:  
curl -fsSL https://get.docker.com -o install-docker.sh
sudo sh install-docker.sh
 

Mise en place de notre Pipeline CI/CD

 

Step 1: Creation d’un Nouveau Projet sur Gitlab

Pour se faire , on va se connecte à notre compte gitlab Puis réaliser les étapes ci-dessous:  
  • Cliquer sur New Project
gitlab
 
  • Create Blank Project
gitlab
  • Valider la configuration
Une fois que c’est fait nous allons passer à la rédaction de notre Dockerfile  

Step 2: Rédaction du Fichier Dockerfile

Avant de rédiger notre fichier Dockerfile nous allons cloner notre projet en Local sur notre serveur  
https://gitlab.com/ulrichnoumsi98/mini-projet-gitlab.git

cd mini-projet-gitlab

touch Dockerfile
  Nous pouvons dès à présent rédiger votre fichier Dockerfile  
dockerfile
 

Step 3: Provisionnement de l’infrastructure

Se rendre sur votre compte aws et realiser les operations suivantes:  
  • Créer une paire de clés
  • Créer une accesskey et une secret key
Une fois que c’est fait , créer un dossier infra qui aura pour contenu:  
  • Créer une paire de clés
  • Créer une accesskey et une secret key
mkdir infra
mkdir -p infra/packer infra/terraform
infra Dockerfile
La Hiérarchie des dossiers étant établi nous allons insérer les différents code sources et lancer le provisionnement de notre infrastructure:  

Build de l’AMI

cd infra/packer
packer fmt docker.pkr.hcl
packer validate docker.pkr.hcl
packer build docker.pkr.hcl
Une fois le build terminée, nous avons une images de disponible sur aws:  
packer ami
Provisionnement de l’infrastructure  
cd infra/terraform
terraform init
terraform plan
terraform apply
Visualisons sur notre console AWS:  
virtual server
Une fois que l’environnement est mise en place nous allons configurer notre fichier .gitlab-ci.yml  

Configuration du fichier .gitlab-ci.yml

 Il suffit de suivre quelques instruction et le tour est joué  
gitlab ci
Le fichier étant complet nous allons créer une variable sur la plateforme gitlab pour pouvoir contenir la paire de clés qui va nous aider à nous connecter à notre serveur.   Pour se faire , il faut se rendre a **Settings > CI / CD > Variables ** et cliquer sur Add Variable.
  • Key: ID_RSA
  • Value: Mettre la valeur de votre clés
  • Type: File
Réaliser la même opération pour la variable images_NAME qui représente l’URL du registre du conteneur lié au projet spécifique. Cette URL dépend de l’instance GitLab.
variable store information
Une fois cette configuration terminée, il faut pousser le code sur votre repos et le pipeline devrait se lancer Après quelques instant nous avons les jobs qui vont se lancer :  
job start

Résultat 

Comme vous pouvez le voir plus ci-dessous notre site web a bien été déployée sur notre serveur:  
résultats

Conclusion

Comme vous pouvez le constater il est tout a fait possible de réaliser un déploiement sur n’importe quelle infrastructure a notre disposition il suffit juste de savoir au préalable quel est le process de façon manuelle et puis de l’adapter dans un script d’automatisation.  

Ulrich NOUMSI
  Ing Cloud & DevOps

LinkeInd : https://www.linkedin.com/in/ulrich-steve-noumsi/