Skip to content

ulrich-sun/mini-projet-gitlab

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MISE EN PLACE D’UN CHAINE D'INTÉGRATION CONTINUE ET DE DÉPLOIEMENT CONTINUE AVEC GITLAB CI/CD SUR UN SERVEUR LINUX

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 entreprises.

Leur retours: Bonjour EAZYTraining, nous réalisons les différents projets qui se trouvent sur votre plateforme et nous déployons nos applications sur des environnement tel que Heroku, et eazy labs , c’est super mais en entreprise comment ferions nous pour pouvoir les déployer sur des serveurs ?

Etapes de mise en place du projet

  • Creer 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

Presentation des differents 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 reel aperçu sur aws je vous invite a regarder ce cours: aws
  • Gitlab: C'est 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 rentre sur le site: eazytraining.fr
  • Packer: c'est un outil permettant de créer des images personnalisés pour plusieurs Plateforme cloud et de Virtualisation packer Pour en apprendre un peu plus sur Packer , Je vous invite a regarder le cours sur: eazytraining.fr
  • Terraform : c'est un outils 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 a regarder le cours sur :eazytraining.fr
  • 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 pour en apprendre plus vous rentre sur : eazytraining.fr

Note: Pour en savoir plus je vous invite à aller regarder notre site web ou vous allez retrouver des cours très intéressant sur ces différentes technologies. EAZYTraining

Mise en place de l'environnement

Compte AWS:

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

Compte Gitlab

Pour créer un compte Github, il suffit de se rendre sur [gitlab](Sign up · GitLab).

Installation de Packer

Pour installer Packer il suffit de suivre les etapes de la documentation officielle : ici

Dans notre cas nous sommes sur un serveur linux:

Installation de Packer

Une fois l'installation terminée , nous allons vérifier qu'il est bien présent:

check packer

Installation de Terraform

Pour installer Terraform, suivre la procedure de la documentation Officielle: ici

Installation Terraform

Une fois l'installation terminée , nous allons vérifier:

check terraform

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

create project

  • Create Blank Project

create project

  • 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:

  • Un dossier packer pour notre AMI

  • un dossier terraform pour notre code terraform

mkdir infra

mkdir -p infra/packer infra/terraform

infra

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

Provisionnement de l'infrastructure

cd infra/terraform

terraform init

terraform plan

terraform apply

apply

Visualisons sur notre console AWS:

terraform

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.

variables

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

Résultat

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

website

Conclusion

Comme vous pouvez le constater il est tout a fait possible de realiser un deploiement 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/

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors