Projet Fil Rouge
Bootcamp DevOps
Par EazyTraining
12/01/2024 Bootcamp DevOps | Eazytraining 1
Plan
• Objectifs
• Rappel
• Présentation du projet
• Livrables
2 1/12/2024 Bootcamp DevOps | Eazytraining
Plan
• Objectifs
• Rappel
• Présentation du projet
• Livrables
3 1/12/2024 Bootcamp DevOps | Eazytraining
Objectifs
L’objectif du projet fil rouge que nous
vous proposons permettra à tous les
participants du BootCamp DevOps de
pourvoir mettre en collaboration les
differentes technologies sur lesquelles
nous avons travailler afin de mettre en
place une usine Logicielle de Bout en
bout, quittant de la conception de
l’application jusqu’a son déploiement
dans un environnement dedié.
1/12/2024 Bootcamp DevOps | Eazytraining 4
Plan
• Objectifs
• Rappel
• Présentation du projet
• Livrables
5 1/12/2024 Bootcamp DevOps | Eazytraining
Rappel: Pourquoi le
DevOps ?
• Intégration en continu
• Test en continu
• Déploiement en continu
• Orchestration
1/12/2024 Bootcamp DevOps | Eazytraining 6
Plan
• Objectifs
• Rappel
• Présentation du projet
• Annexes
• Livrables
7 1/12/2024 Bootcamp DevOps | Eazytraining
Présentation du Projet
1/12/2024 Bootcamp DevOps | Eazytraining 8
La société IC GROUP dans laquelle vous travaillez en tant qu’ingénieur
Devops souhaite mettre sur pied un site web vitrine devant permettre
d’accéder à ses 02 applications phares qui sont :
• Odoo et
• PgAdmin
Présentation du Odoo est un ERP multi usage qui permet de gérer les ventes, les
achats, la comptabilité, l’inventaire, le personnel …
Projet (1/19):
Odoo est distribué en version communautaire et Enterprise. IC GROUP
souhaite avoir la main sur le code et apporter ses propres
modifications et customisations ainsi elle a opté pour l’édition
Introduction communautaire. Plusieurs versions de Odoo sont disponibles et celle
retenue est la 13.0 car elle intègre un système de LMS (Learning
Management System) qui sera utilisé pour publier les formations en
internes et ainsi diffuser plus facilement l’information.
PgAdmin quant à elle devra être utilisée pour administrer de façon
graphique la base de données PostgreSQL crée précédemment.
1/12/2024 Bootcamp DevOps | Eazytraining 9
Présentation du Projet (2/19): Introduction
Le site web vitrine a été conçu par l’équipe de développeurs de l’entreprise et les fichiers y
relatifs se trouvent dans le repo suscité : Github . Il est de votre responsabilité de
conteneuriser cette application tout en permettant la saisie des différentes URL des applications
(Odoo et Pgadmin) par le biais des variables d’environnement. Ci-dessous un aperçu du site
vitrine attendu:
NB: L’image créée devra permettre de lancer un container permettant d’héberger ce site
web et ayant les liens adéquats permettant d’accéder à nos applications internes
1/12/2024 Bootcamp DevOps | Eazytraining 10
Il s’agit en effet d’une application web python utilisant le module Flask. Les étapes
à suivre pour la conteneurisation de cette application sont les suivantes :
1) Image de base : `python:3.6-alpine`
2) Définir le répertoire `/opt` comme répertoire de travail
3) Installer le module Flask à l’aide de `pip install`
4) Exposer le port `8080` qui est celui utilisé par défaut par l'application
5) Créer les variables d’environnement `ODOO_URL` et `PGADMIN_URL` afin de
Présentation du
permettre la définition de ces url lors du lancement du container
6) Lancer l’application `[Link]` dans le `ENTRYPOINT` grâce à la commande
`python`
Projet (3/19): Une fois le Dockerfile crée, Buildez le et lancer un container test permettant d’aller
Conteneurisation sur les sites web officiels de chacune de ces applications (site web officiels
fournis ci-dessus).
• Nom de l’image : ic-webapp
• tag :1.0
• container test_name : test-ic-webapp
Une fois le test terminé, supprimez ce container test et poussez votre image sur
votre registre Docker hub.
1/12/2024 Bootcamp DevOps | Eazytraining 11
Présentation du Projet
(4/19): Pipeline CI/CD
L'objectif de ICGROUP est en effet de mettre
sur pied un pipeline CI/CD permettant
l'intégration et le déploiement en continu de
cette solution sur leurs différentes machines
en environnement de production (03 serveurs
hébergés soit en On-Premises soit dans le
cloud AWS)
1/12/2024 Bootcamp DevOps | Eazytraining 12
Présentation du Projet
(5/19): Infrastructure (IaC)
Pour ce projet, on aura besoin de 03 serveurs
hébergées soit dans le cloud ou en On
Premises (VirtualBox, VMWare…) pour ceux
qui n’ont pas de comptes cloud (AWS, AZURE
ou autres).
Les serveurs nécessaires sont les suivants :
Serveur1 : Jenkins (AWS, [Link],
docker_jenkins: Github)
Serveur2 : Applications web site vitrine +
pgadmin4 (AWS, [Link])
Serveur3 : Application Odoo (AWS, [Link])
1/12/2024 Bootcamp DevOps | Eazytraining 13
Présentation du Projet (6/19):
Automatisation du Deploiement
Afin de faciliter le déploiement de nos applications dans notre
pipeline Jenkins, nous allons créer des rôles ansible à l’aide de
l’IAC docker (Docker-compose) et Ansible.
Les étapes sont les suivantes:
1) Créer un docker-compose permettant de déployer entièrement
l’application Odoo tout en créant un réseau docker et un volume pour
faire persister les données de la BDD
2) Créer un docker-compose permettant de déployer l’application
pgadmin avec les paramètres décrits dans la partie1 (fichier
[Link] et persistance des données).
3) A l’aide de ces docker-compose comme Template, créer deux rôles
ansible que vous appellerez odoo_role et pgadmin_role, dans ces rôles
vous devez :
a) Variabiliser le nom du réseau et du volume qui sera créé
dans docker
b) Variabiliser le répertoire de montage pour le volume,
permettant à l’utilisateur de définir s’il le souhaite un autre chemin
de fichier en local sur son serveur où il souhaite stocker les données
de la BDD Odoo
c) Variabiliser le nom des services et des containers qui
seront créés par ce docker-compose.
NB : Ces rôles devront être appelés dans votre pipeline lors de la
phase de déploiement avec les variabilisations qui vont bien.
1/12/2024 Bootcamp DevOps | Eazytraining 14
Présentation du Projet (7/19): Mise en place du
Pipeline (1/2)
Afin de davantage automatiser notre solution, vous devez créer à la racine de votre repo, un fichier
appelé [Link] dans lequel vous enterrez les données sur votre application ( ODOO_URL, PGADMIN_URL
et Version)
Ce fichier devra contenir 03 lignes et 02 colonnes ( séparateur de colonne étant l’espace)
Exemple :
Par la suite, vous devez modifier votre Dockerfile afin qu’il puisse lors du build récupérer les
valeurs des URL du fichier [Link] et les fournir automatiquement aux variables
d’environnement crées dans le Dockerfile.
1/12/2024 Bootcamp DevOps | Eazytraining 15
Présentation du Projet (8/19): Mise en place du
pipeline (2/2)
Cela devra se faire grâce aux commandes awk et export. Ci-dessous un exemple.
Après avoir crée le Dockerfile qui va bien, Vous devrez créer le JenkinsFile permettant de Builder
l’application, la tester (à vous de trouver les différents tests à réaliser sur chacune des
applications) et la déployer en environnement de production.
NB: vous devrez utiliser les mêmes mécanismes afin de récupérer la valeur de la variable version dans le
fichier [Link] qui devra être utilisé comme tag sur votre image.
1/12/2024 Bootcamp DevOps | Eazytraining 16
Présentation du Projet
(9/19): Test de
fonctionnement
Lancez l’exécution de votre pipeline manuellement
pour une première fois, ensuite automatiquement
après modification de votre fichier [Link]
(version : 1.1). Vérifiez que toutes les applis sont
déployées et fonctionnent correctement. N’hésitez
pas à prendre des captures d’écran le plus possible
afin de consolider votre travail dans un rapport final
qui présentera dans le moindre détail ce que vous
avez fait.
1/12/2024 Bootcamp DevOps | Eazytraining 17
Présentation du Projet (10/19): Déploiements
(1/4)
Les applications ou services seront déployées dans un cluster Minikube, donc à un seul nœud et devront
respecter l’architecture suivante.
En vous basant sur cette architecture logicielle, bien vouloir identifier en donnant le type et le rôle
de chacune des ressources (A…H) mentionnées dans cette architecture.
1/12/2024 Bootcamp DevOps | Eazytraining 18
Présentation du Projet (11/19): Déploiement
(2/4) Odoo
Comme décrite ci-dessus, Odoo est une application web de type 2 tier contenant
différents modules facilitant la gestion administrative d’une société.
En Vous servant des différents liens mentionnés ci-dessus, déployer Odoo à l’aide des
images docker correspondantes et assurez vous que les données de la base de donnée Odoo
soient persistantes et sauvegardées dans un répertoire de votre choix sur votre hôte.
NB: respectez l’architecture ci-dessus
1/12/2024 Bootcamp DevOps | Eazytraining 19
Présentation du Projet
(12/19): Déploiement
(3/4) PgAdmin
1/12/2024
Présentation du Projet (13/19): Déploiement
(4/4)
Afin de réduire le nombre de taches manuelles, nous souhaiterons qu’au démarrage de
votre container PgAdmin, que ce dernier ait automatiquement les données nécessaires lui
permettant de se connecter à votre BDD Odoo. Pour ce faire, il existe un fichier de
configuration PgAdmin que vous devrez au préalable customiser et fournir par la suite à
votre container sous forme de volume.
Ce fichier doit être situé au niveau du container dans le répertoire :
/pgadmin4/[Link]
1/12/2024 Bootcamp DevOps | Eazytraining 21
Présentation du
Projet (14/19):
Déploiement
(4/4)
1/12/2024 Bootcamp DevOps | Eazytraining 22
Présentation du Projet (15/19): Déploiements
(5/6)
Déploiement des différentes applications
En vous servant des données ci-dessus, créez les différents manifests correspondants
aux ressources nécessaires au bon fonctionnement de l’application tout en respectant
l’architecture fournie (Nbre de réplicas et persistance de données).
Notez également que l’ensemble de ces ressources devront être crées dans un namespace
particulier appelé «icgroup» et devront obligatoirement avoir toutes au moins le label
« env = prod »
NB : Etant donné que vos manifests pourront être publics (pousser vers un repo Git ),
bien vouloir prendre les mesures nécessaires afin d’utiliser les ressources adéquates
permettant de cacher vos informations sensibles.
1/12/2024 Bootcamp DevOps | Eazytraining 23
Test de fonctionnement et rapport final
Présentation du Lancez l’exécution de vos différents manifests afin
de déployer les différents services ou applications
Projet (16/19): demandés, testez le bon fonctionnement de vos
différentes applications et n’hésitez pas à prendre
Déploiement des captures d’écran le plus possible afin de
consolider votre travail dans un rapport final qui
(6/6) présentera dans les moindres détails ce que vous
avez fait.
1/12/2024 Bootcamp DevOps | Eazytraining 24
Plan
• Objectifs
• Rappel
• Présentation du projet
• Annexes
• Livrables
25 1/12/2024 Bootcamp DevOps | Eazytraining
Présentation du Projet
(17/19): Annexe (1/2)
Ci-apres un exemple de description des
qualifications souhaitées pour un poste de
Devops
1/12/2024 Bootcamp DevOps | Eazytraining 26
NB : Bien vouloir préter attention aux qualités encadrées en
jaune ci-dessus, vous vous rendez compte en effet que
maitriser les technologies seulement ne suffit pas, il faut en
plus de ca avoir un esprit très créatif, de très bonnes
capacités rédactionnelles pour rédiger vos différents rapports
et également des qualités de pédagogue qui vous aideront à
parfaire les explications de vos actions dans vos différents
Présentation du rapports afin de faciliter leur compréhension.
Projet (18/19): Compte tenu de tout cela, je vous invite tous à donner
l’importance à ce volet « rapport » de votre projet final, car
Annexe (2/2) c’est également une partie très importante qui devra pouvoir
décrire le contenu de l’ensemble de votre travail.
Merci de le rédiger correctement avec les captures d’écran,
commentaires et explications qui vont bien car cette partie
sera prise en compte dans votre note finale.
1/12/2024 Bootcamp DevOps | Eazytraining 27
Présentation du Projet
(19/19): Liens utiles
• Site officiel : [[Link]
• GitHub officiel:
[[Link]
• Docker Hub officiel :
[[Link] ]
• Site officiel : [[Link] ]
• Docker Hub officiel:
[[Link] ]
1/12/2024 Bootcamp DevOps | Eazytraining 28
Plan
• Objectifs
• Rappel
• Présentation du projet
• Annexes
• Livrables
29 1/12/2024 Bootcamp DevOps | Eazytraining
Livrables
• Pour pouvoir obtenir votre certificate de participation aux BootCamps DevOps
Organiser par Eazytraining il faut:
• Avoir realiser l’integralite des Projets proposes
• Avoir un depot Github disposant du code
• Avoir un README explicative
• Ecrire par Mail a contact@[Link]
1/12/2024 Bootcamp DevOps | Eazytraining 30
MERCI
12/01/2024 Bootcamp DevOps | Eazytraining 31