SlideShare une entreprise Scribd logo
1  sur  83
Télécharger pour lire hors ligne
RÉPUBLIQUE DU SÉNÉGAL
Un Peuple – Un But – Une Foi
MINISTÈRE DE L’ENSEIGNEMENT SUPÉRIEUR, DE LA RECHERCHE
ET DE L’INNOVATION
UNIVERSITE CHEIKH ANTA DIOP DE DAKAR
*********************
FACULTE DES SCIENCES ET TECHNIQUES
*********************
MÉMOIRE DE MASTER INFORMATIQUE
Spécialité : Réseaux et Télécommunications
Option : Réseau, Systèmes et Services
Présenté et soutenu publiquement par :
M. Fallou Mbengue
Encadré par Professeur Ibrahima NIANG
Le : 28/02/2022
Jury 2
Pr. Cheikh A. Bamba GUEYE Professeur Titulaire, UCAD Président
Pr. Ibrahima NIANG Professeur Titulaire, UCAD Membre
Dr. Mohamed M. Ould DEYE Maître Assistant Titulaire, UCAD Membre
Dr. Bassirou KASSE Assistant / Ingénieur Informaticien Membre
Sujet : Etude et mise en place d’une infrastructure Datacenter
privé avec OpenStack : Automatisation des déploiements et tests
II
DEDICACE
Pour leur amour et soutien inconditionnel, je dédie ce mémoire :
A mon cher père CHEIKH SOHIBOU MBACKE MBENGUE, ma chère mère MAME
DIARRA DIAGNE.
A feu mon père CHEIKH SOHIBOU MBACKE MBENGUE : votre souvenir restera à
jamais dans ma mémoire.
A vous qui m’as toujours appris la valeur du travail. Je vous dédié spécialement ce travail pour
vous signifier ma gratitude et vous dire que jamais vous ne quitterez mon cœur .Mes pensées
iront toujours vers vous qui avez su guider mes pas vers le bon chemin. Que le tout puissant
vous accueille dans son paradis céleste. AMINE
A mes adorables frères et sœurs particulièrement Cheikh M Mbengue, Faty Mbengue,
Khadim Mbengue, Bassirou Mbengue, Matar Mbengue Serigne Mor Mbengue Fatou M
Mbengue, Sokhna Mbengue ,Penda Mbengue et M Bousso Mbengue pour leur amour et
assistance.
A mon meilleur ami et complice Ibra Fally Mbengue qui m’a soutenu dans toute situation et
toute sa famille.
A ma meilleure amie, et complice Anta Thiam qui m’a soutenu dans toute situation et toute sa
famille.
A ma meilleure amie, et complice Aïssatou Sowé qui m’a soutenu dans toute situation et toute
sa famille.
A mon oncle Ouztas Diagne pour ses conseils et sa disponibilité sans limite.
A mon frère : Ibra Niang, sa femme Mame Diarra Khoulé et son fils S. Saliou Niang : pour
son dénouement sans limite et qui à tout moment a été à l’écoute de mes services et tous mes
désirs. Vous avez toujours été un vrai frère et ami, un confident de tous les jours et vous m’avez
toujours soutenu dans ma vie. Merci pour vos soutiens multiformes. Que Dieu vous donne une
longue vie et une santé de fer.
A tous mes amis, camarades de promotion et collègues avec qui j’ai travaillé et partagé des
moments de bonheur.
A la mémoire de mon père Cheikh Sohibou Mbacké Mbengue que la terre de Touba lui soit
légère. AMINE.
III
REMERCIEMENTS
Je tiens à remercier tous les enseignants de la section Informatique, en particulier ceux de la
filière Réseaux et Télécommunications pour tous les efforts consentis afin de nous permettre
de réussir. J’exprime mes sincères remerciements à Monsieur le Pr Ibrahima Niang d’avoir
accepté aimablement de présider le jury, ainsi qu’aux membres du jury : Pr. Cheikh A. Bamba
GUEYE, Pr. Ibrahima NIANG, Dr. Mohamed M. Ould DEYE et Dr. Bassirou KASSE
Je tiens à adresser chaleureusement mes remerciements à mon encadrant, Monsieur le
Professeur Ibrahima Niang pour l’attention et le temps qu’il a bien voulu me consacrer pour
l’encadrement de ce mémoire, ainsi que pour son soutien, ses remarques pertinentes et son
encouragement. Ses expertises et ses réflexions toujours aussi pertinentes se sont révélées
particulièrement enrichissantes. Son écoute et ses conseils, m’ont permis de cibler mon objectif
et de découvrir ce projet, qui correspondait à mes préoccupations.
Je ne pourrais pas conclure ces remerciements sans évoquer les précieux encouragements de
ma famille et surtout de mon père Cheikh Sohibou Mbacké Mbengue qui m’a toujours
encouragé à poursuivre des études supérieures. Il a toujours trouvé les mots et les ressources
pour me pousser à avancer et à réaliser mes études supérieures avec succès. Pour terminer, je
remercié mes tantes, ainsi Anta Thiam, Mame Diarra Sylla qui ont toujours été à mes côtés
jours et nuits pour m’encourager, ainsi que toutes les personnes qui ont pu m’aider de près ou
de loin pendant mon parcours et dont les noms ne figurent pas sur cette page. Sachez que vous
avez toute ma gratitude. Un grand merci à mes amis
IV
Résumé
Face à l'augmentation continuelle des coûts de mise en place et de maintenance des systèmes
informatiques, les entreprises exécutent de plus en plus leurs calculs dans le cloud. Ce dernier
offre des tarifs très attractifs, grâce à la mutualisation des ressources. Pour implanter cette
propriété, le cloud s'appuie sur la virtualisation.
A l’heure actuelle, nos universités sont souvent confrontées à un manque de moyens, pour
disposer des outils ou matériels pour réaliser certains travaux pratiques et projets de fin
d’année des étudiants. Pour remédier à tous ces problèmes, la section informatique de
l’Université Cheikh Anta Diop de Dakar a jugé nécessaire de mettre en place un cloud privé
open source.
Dans ce travail, nous proposons une étude et une implémentation de l’outil Jenkins afin
d’automatisation le déploiement d’applications et de tests dans un environnement de cloud privé
OpenStack. Pour atteindre cet objectif, une architecture est proposée avec un choix
technologique de la solution retenue.
Mots-clés : Cloud Computing, Virtualization, OpenStack, Automatisation , Jenkins
V
Abstract
As the cost of setting up and maintaining IT systems continues to rise, companies are
increasingly running their computations in the cloud. The latter offers very attractive prices,
thanks to the pooling of resources. To implement this property, the cloud relies on
virtualization.
At present, our universities are often faced with a lack of means to have the tools or materials
to carry out certain practical work and end-of-year projects for students. To remedy all these
problems, the IT section of the Cheikh Anta Diop University in Dakar found it necessary to set
up an open source private cloud.
In this work, we propose a study and an implementation of the Jenkins tool in order to automate
the deployment of applications and tests in an OpenStack private cloud environment. To
achieve this objective, an architecture is proposed with a technological choice of the chosen
solution.
Keywords: Cloud Computing, Virtualization, OpenStack, Automation, Jenkins
VI
Table des matières
DEDICACE .........................................................................................................................II
REMERCIEMENTS......................................................................................................... III
Résumé............................................................................................................................... IV
Abstract ...............................................................................................................................V
LISTE DES FIGURES........................................................................................................X
LISTE DES TABLEAUX.................................................................................................. XI
GLOSSAIRE ....................................................................................................................XII
INTRODUCTION GENERALE .........................................................................................1
PREMIERE PARTIE : CADRE THEORIQUE ET METHODOLOGIQUE ..................3
1 CHAPITRE 1 : CADRE THEORIQUE.......................................................................3
1.1 Contexte..............................................................................................................................3
1.2 Problématique .....................................................................................................................3
1.3 Objectifs..............................................................................................................................4
1.3.1 Objectif général ...........................................................................................................4
1.3.2 Objectifs spécifiques....................................................................................................4
2 CHAPITRE 2 : CADRE METHODOLOGIQUE........................................................5
2.1 Délimitation du champ d’étude ............................................................................................5
2.2 Méthodologie de recherche..................................................................................................5
DEUXIEME PARTIE : ETAT DE L’ART .........................................................................6
3 CHAPITRE 3 : ETAT DE L’ART SUR LA VIRTUALISATION ET CLOUD
COMPUTING ......................................................................................................................6
3.1 Virtualisation : Définition et Concepts .................................................................................6
3.1.1 Définition de la virtualisation.......................................................................................6
3.1.2 Les types de virtualisation............................................................................................6
3.1.3 Les techniques de virtualisation....................................................................................7
3.1.4 Etude détaillée entre VM et Conteneur.........................................................................8
3.2 Le cloud computing : Concepts et Défis.............................................................................11
3.2.1 Définition du cloud ....................................................................................................11
VII
3.2.2 Les types de Cloud.....................................................................................................12
3.2.3 Solutions Cloud Computing ou les services du cloud..................................................14
3.2.4 Prestataires de solutions Cloud (AWS : Amazon Web Service, Microsoft Azure,
Google Cloud) ..........................................................................................................................15
4 CHAPITRE4 : CONCEPT SUR LE DEVOPS ET L’AUTOMATISATION .........16
4.1 Définition et Notion de DevOps dans le Cloud...................................................................16
4.1.1 Comment l’approche est-elle née?..............................................................................16
4.1.2 Avantages du DevOps dans le cloud privé..................................................................17
4.1.3 Les pratiques de DevOps dans le cloud prive..............................................................19
4.2 Etude de l’Automatisation .................................................................................................19
4.2.1 Orchestration .............................................................................................................20
4.2.2 Automatisation dans le Cloud.....................................................................................20
TROISIEME PARTIE : ETUDE COMPARATIVE ET CHOIX DE LA SOLUTION ..22
5 CHAPITRE5 : ETUDE COMPARATIVE DES SOLUTIONS DE CLOUD
PRIVES OPEN SOURCE..................................................................................................22
5.1 Présentation des solutions clouds privés open source.........................................................22
5.1.1 OpenStack .................................................................................................................22
5.1.2 CloudStack ................................................................................................................25
5.1.3 Eucalyptus .................................................................................................................26
5.1.4 OpenNebula...............................................................................................................27
5.2 Etude comparative des solutions clouds privés open source................................................28
5.3 Présentation détaillée de la solution retenue : OpenStack ...................................................30
5.3.1 Définition d’OpenStack .............................................................................................30
5.3.2 Les objectifs d’OpenStack: ........................................................................................30
5.3.3 Les composants d’OpenStack.....................................................................................30
5.3.4 Les avantages et inconvénients d’OpenStack..............................................................32
5.3.5 Les avantages.............................................................................................................32
5.3.6 Inconvénients.............................................................................................................32
6 CHAPITRE 6 : ETUDE COMPARATIVE DES OUTILS
D’AUTOMATISATION DANS LE DEVOPS ..................................................................34
6.1 Les outils d’automatisation dans le DevOps .......................................................................34
6.1.1 Jenkins.......................................................................................................................34
6.1.2 Travis ........................................................................................................................35
VIII
6.1.3 Circle CI....................................................................................................................35
6.1.4 Bamboo .....................................................................................................................35
6.1.5 Gitlub CI....................................................................................................................36
6.2 Etude comparative des outils d’automatisation de DevOps.................................................36
6.2.1 Architecture technique de Jenkins ..............................................................................36
6.3 Etude détaillée de la solution proposée : Jenkins ................................................................37
6.3.1 Introduction ...............................................................................................................37
6.3.2 Avantages..................................................................................................................38
6.3.3 Fonctionnement de Jenkins ........................................................................................38
QUATRIEME PARTIE : CONCEPTION ET MISE EN OEUVRE ...............................39
7 CHAPITRE 7 : CONCEPTION DE LA SOLUTION ...............................................39
7.1 Architecture : Schéma logique et composants ....................................................................39
7.2 Architecture : Fonctionnement détaillé avec Jenkins et OpenStack.....................................40
7.3 Les besoins spécifiques......................................................................................................40
7.3.1 Identification de besoins.............................................................................................40
7.3.2 Besoins fonctionnels ..................................................................................................41
7.3.3 Gestion d’images .......................................................................................................41
7.3.4 Gestion d’instances ....................................................................................................41
7.3.5 Gestion de volumes....................................................................................................41
7.3.6 Gestion de flavors......................................................................................................41
7.3.7 Gestion de projets ......................................................................................................41
7.3.8 Gestion d’utilisateurs .................................................................................................41
7.3.9 Gestion de la sécurité et de l’accès .............................................................................41
7.4 Besoins non fonctionnels ...................................................................................................41
7.4.1 Simplicité d’un service à la demande..........................................................................41
7.4.2 Extrême flexibilité .....................................................................................................42
7.4.3 Accès « léger » ..........................................................................................................42
7.4.4 Sûreté ........................................................................................................................42
7.4.5 Vivacité.....................................................................................................................42
7.5 Identifications des acteurs..................................................................................................42
7.6 Les acteurs du système ......................................................................................................42
7.7 Le cas d’utilisation de l’administrateur...............................................................................42
7.8 Le cas d’utilisateur d’un utilisateur ....................................................................................44
IX
7.9 Diagrammes d’activités .....................................................................................................46
7.9.1 Diagramme d’activité globale ....................................................................................46
7.9.2 Diagramme d’activité pour la création d’une instance.................................................47
7.10 Diagrammes de séquences système....................................................................................48
7.10.1 Diagramme de séquences pour le scénario d’authentification......................................48
7.10.2 Diagramme de séquences pour le scenario de création d’un nouveau projet par
l’administrateur.........................................................................................................................49
7.10.3 Diagramme de séquences pour le scenario de création d’une instance d’une machine
virtuelle 50
8 CHAPITRE 8 : MISE EN ŒUVRE, TESTS ET VALIDATION..............................51
8.1 Maquette de test ................................................................................................................51
8.2 Mise en place de proxmox Virtual Environnement .............................................................53
8.3 Déploiement de OpenStack dans un environnement cluster ...............................................53
a. Installation et la configuration d’OpenStack en cluster...........................................................54
8.4 Installation et configuration de la solution proposée : Jenkins.............................................60
8.4.1 Intégration de Jenkins et OpenStack...........................................................................63
8.4.2 Test et validation sur la création de job.......................................................................65
CONCLUSION GENERALE ET PERSPECTIVES ........................................................68
Bibliographie ......................................................................................................................69
Webographie.......................................................................................................................70
X
LISTE DES FIGURES
Figure 1: isolation [1]..........................................................................................................................7
Figure 2:virtualisation complète [1].....................................................................................................8
Figure 3:paravirtualisation [1].............................................................................................................8
Figure 4:Comparaison entre les conteneurs et les machines virtuelles [2].............................................9
Figure 5:Conteneur Docker [3]..........................................................................................................10
Figure 6:Cloud Computing [4] ..........................................................................................................12
Figure 7:Cloud privé [5]....................................................................................................................13
Figure 8:Cloud hybride [6]................................................................................................................14
Figure 9:Les services du cloud ..........................................................................................................14
Figure 10:Le DevOps [8] .................................................................................................................16
Figure 11:Architecture de Nova ........................................................................................................23
Figure 12:Architecture de Swift [9]...................................................................................................24
Figure 13:Architecture d’OpenStack [9]............................................................................................25
Figure 14:Composition architecturale de CloudStack [9]...................................................................26
Figure 15:Les composants d’OpenStack [10] ....................................................................................32
Figure 16:Explication de l’architecture Jenkins [11]..........................................................................35
Figure 17:Chaîne d’intégration continue à mettre en place.................................................................37
Figure 18:Jenkins et fonctionnement [12]..........................................................................................38
Figure 19:Architecture proposée .......................................................................................................39
Figure 20:Diagramme des cas d’utilisation pour un administrateur ....................................................43
Figure 21:Diagramme des cas d’utilisation pour un membre d’un projet............................................45
Figure 22:Diagramme d’activé globale du système............................................................................46
Figure 23:Diagramme d’activité pour la création d’une instance........................................................47
Figure 24:Diagramme de séquences pour le scenario d’authentification.............................................49
Figure 25:Diagramme de séquences pour le scenario de création un nouveau projet par
l’administrateur.................................................................................................................................50
Figure 26:Diagramme de séquences pour le scenario de création un nouveau projet par
l’administrateur.................................................................................................................................51
Figure 27:Architecture proposée prototype........................................................................................52
Figure 28:Interface de proxmox ........................................................................................................53
Figure 29:Interface de connexion d’OpenStack .................................................................................59
Figure 30:Creation d'instance............................................................................................................59
Figure 31:Interface de connexion de Jenkins .....................................................................................62
Figure 32:Tableau de bord de Jenkins ...............................................................................................63
Figure 33:Installation du plugin ........................................................................................................64
Figure 34:Installation et mise à jour du plugin openstack...................................................................64
Figure 35:Creation de Job .................................................................................................................65
Figure 36:Les Jobs............................................................................................................................66
Figure 37:Depot code html................................................................................................................66
XI
LISTE DES TABLEAUX
Tableau 1: comparatif entre VM et Conteneur...................................................................................10
Tableau 2:Comparatif des solutions open source avec OpenStack......................................................28
Tableau 3:Comparaison des communautés et de l'activité développement pour les solutions IaaS ......29
Tableau 4:Comparaison des fonctionnalités réseaux pour les solutions IaaS ......................................29
Tableau 5:Comparatif de quelques outils d'automatisation sur DevOps..............................................36
XII
GLOSSAIRE
Amazon EC2 = Amazon Elastic Compute Cloud
API = Interfaces de programmation d'applications
AWS = Amazon Web Services
CD = Deployment Continue
CI = Intégration Continu
CPU = central processing unit
DHCP = Dynamic Host Configuration Protocol
IaaS = Infrastructure-as-a-Service
ISCSI = Internet Small Computer System Interface
NAS= Network Attached Storage
OS = Système d'exploitation
PaaS = Platform-as-a-Service
PM machine physique
RAM= Random Access Memory
SaaS= Software-as-a-Service
SDN= Software-Defined Network
SOA = Service Oriented Architecture
SPOF = Single Point Of Failur
SSH = Secure Shell
TIC= Technologies de l’Information et de la Communication
UML= Unified Modeling Language
VM = machine virtuel
VPN = Réseaux privés virtuels
1
INTRODUCTION GENERALE
Face à l'augmentation continuelle des coûts de mise en place et de maintenance des systèmes
informatiques, les entreprises exécutent de plus en plus leurs calculs dans le cloud. Ce dernier
offre des tarifs très attractifs, grâce à la mutualisation des ressources. Pour implanter cette
propriété, le cloud s'appuie sur la virtualisation. Cette dernière permet d'exécuter simultanément
et de façon isolée plusieurs systèmes d'exploitation (OS) appelés machines virtuelles (VM) sur
une machine physique (PM). Au-delà des plates-formes de cloud, la virtualisation s'est imposée
ces dernières années comme la brique de base de tout centre de données.
En effet, le modèle promet un changement dans le mode d’investissement et d’exploitation des
ressources. Avec le Cloud, les organisations, institutions et entreprises n’ont plus besoin
d’investir lourdement dans des ressources informatiques, nécessairement limitées, et
nécessitant une gestion interne lourde et coûteuse. Aujourd’hui elles ont le choix de migrer vers
un modèle Cloud Computing où elles peuvent acheter ou louer des ressources en ligne. Ce
modèle leur épargne les coûts de gestion interne puisque les ressources informatiques sont
administrées au niveau du fournisseur du Cloud.
Cependant beaucoup d’entreprises utilisent le cloud privé. Ce type de nuage offre plusieurs
avantages parmi lesquels on peut citer la confidentialité, la disponibilité et l’intégrité des
données au sien des entreprises. Ce cloud peut être déployé avec plusieurs solutions d’open
sources mais dans ce notre choix est porté sur OpenStack.
A l’heure actuelle, nos universités sont souvent confrontées à un manque de moyens, pour
disposer des outils ou matériels pour réaliser certains travaux pratiques et projets de fin
d’année des étudiants. Pour remédier à tous ces problèmes, la section informatique de
l’Université Cheikh Anta Diop de Dakar a jugé nécessaire de mettre en place un Datacenter
privé avec OpenStack.
Ce projet de mise en place d’un Datacenter privé au sein de la section informatique est globale
dont nous participons sur le déploiement de la plateforme de base et se focalisant sur
l’automatisation des déploiements et tests.
Le mémoire est organisé comme suit :
La première partie présente les cadres théorique et méthodologique. Dans le chapitre 1, la
présentation du contexte, de la problématique et des objectifs du sujet, est faite. Le chapitre 2
présente le cadre de l’étude, la délimitation du champ de l’étude, les techniques de recherche et
les difficultés rencontrées.
La deuxième partie porte sur l’état de l’art. Le chapitre 3 présente la virtualisation et le cloud
computing. Le chapitre 4 propose une étude des solutions du cloud privé et la gestion de
l’automatisation de dans le cloud.
La troisième partie, composée des chapitres 5 et 6, présente étude comparative et choix de la
solution. Le chapitre 5 présente les études comparatives des solutions et le chapitre 6 se
focalise sur l’étude de la solution.
2
La quatrième partie, composée des chapitres 7 et 8, présente les phases de conception et de mise
en œuvre. Le chapitre 7 présente les études comparatives des solutions et le chapitre 8 se
focalise sur l’implémentation de la solution, les tests et la validation.
3
PREMIERE PARTIE : CADRE THEORIQUE ET METHODOLOGIQUE
1 CHAPITRE 1 : CADRE THEORIQUE
1.1 Contexte
En 2010, l’offre Cloud commençait à faire partie du paysage des solutions et des services liés
aux systèmes d’information, le marché était en cours de structuration et l’offre ne répondait que
partiellement aux besoins fonctionnels au niveau des entreprises. « Faire différence, plus vite,
moins cher, en optimisant les ressources », Ce qui impliquait pour l’entreprise performance,
innovation, agilité et rapidité dans la conception, réalisation et distribution de nouveaux
produits et services. Depuis lors, le Cloud Computing est progressivement devenu une
opportunité incontournable et un vecteur de la transformation digitale. Il existe trois de clouds
à savoir le cloud public le cloud privé et le cloud hybride. Cependant la sécurité et la gestion
des données constituent un problème majeur aux entreprises ce qui fait que beaucoup
entreprises utilisent le cloud privé. Ce type de nuage peut être déployé avec plusieurs solutions
d’open sources parmi lesquels OpenStack est le plus utilisé grâce à sa confidentialité son
intégrité et sa disponibilité des données.
A l’heure actuelle, nos universités sont souvent confrontées à un manque de moyens, pour
disposer des outils ou matériels pour réaliser certains travaux pratiques et projets de fin
d’année des étudiants.
Pour remédier à tous ces problèmes, la section informatique de l’Université Cheikh Anta Diop
de Dakar a jugé nécessaire de mettre en place un Datacenter privé avec OpenStack.
Sur ce projet global nous participons sur l’automatisation des déploiements et tests pour
permettre aux étudiants de bien déployer leurs applications et de bien faire leurs travaux
pratiques.
1.2 Problématique
Au cours de ces années on voit que la demande des étudiants sur l’internet a considérablement
augmenté. Avec toujours plus de services et des volumes de données plus grands on voit aussi
les étudiants n’ont pas pu faire correctement leurs tps par manque de ressources et de capacité
de stockage.
Cependant nous avons proposé de mettre en place un Datacenter privé avec OpenStack en
intégrant des solutions open source permettant aux étudiants de faire bien faire leurs travaux
pratiques et l’automatisation des déploiements et tests.
Parallèlement, elle ressent un besoin pressant de répondre à ces différentes questions:
 Comment déployer une solution d’automatisation des déploiements et tests dans un
cloud privé OpenStack?
 Quel dispositif optimal à intégrer à OpenStack pour une gestion des applications et
services conteneurisées ?
 Quelle stratégie et quel dispositif à déployer dans OpenStack pour une gestion
automatisée des applications et services?
4
1.3 Objectifs
1.3.1 Objectif général
L’objectif général de ce mémoire est de faire l’étude et de mettre en place d’un Datacenter privé
avec OpenStack avec l’automatisation des déploiements et Tests.
1.3.2 Objectifs spécifiques
Pour être plus précis dans notre travail, nous fixons des objectifs spécifiques résultants de
l’objectif général que sont :
 Faire un état de l’art sur la virtualisation et le cloud
 Proposer une vue d’ensemble des solutions de cloud privé open source.
 Décrire les composants natifs sur OpenStack.
 Faire l’état de l’art sur le concept de DevOps.
 Proposer une architecture.
 Proposer et mettre en œuvre des solutions performantes d’automatisation dans
OpenStack.
5
2 CHAPITRE 2 : CADRE METHODOLOGIQUE
2.1 Délimitation du champ d’étude
L'étude de notre mémoire est la mise en place d’un Datacenter privé avec OpenStack au sein
de la section informatique de l’université Cheikh Anta Diop de Dakar. Notre mémoire est cadré
sur l’étude et mise en place d’un cloud privé. Par conséquent nous avons mettre en place un
Cluster d’OpenStack pour notre Datacenter. Sur ce projet nous avons travaillé sur la partie
d’automatisation par un outil .Ce dernier permettra d’automatiser les déploiements et tests. Ce
projet permettra aux étudiants de bien faire leurs travaux pratiques leur projet de fin d’année
2.2 Méthodologie de recherche
Afin d’atteindre nos objectifs nous ferons une étude bibliographique et webographie (à travers
des livres, des mémoires, les publications, etc.) pour acquérir des connaissances dans le
domaine de mettre en place un Datacenter privé avec OpenStack mais des solutions
d’implémentation qui sont proposées pour l’automatisation des déploiements et test par
Jenkins.
6
DEUXIEME PARTIE : ETAT DE L’ART
3 CHAPITRE 3 : ETAT DE L’ART SUR LA VIRTUALISATION ET CLOUD
COMPUTING
3.1 Virtualisation : Définition et Concepts
3.1.1 Définition de la virtualisation
La virtualisation est un mécanisme informatique qui consiste à faire fonctionner plusieurs
systèmes, serveurs ou applications, sur un même serveur physique.
Elle consiste à créer plusieurs machines virtuelles (aussi appelées ordinateurs virtuels, instances
virtuelles, versions virtuelles, VM ou Virtual machine) à partir d’une machine physique, à l’aide
d’un logiciel appelé hyperviseur.
3.1.2 Les types de virtualisation
La virtualisation est un mécanisme informatique qui consiste à faire fonctionner plusieurs
systèmes, serveurs ou applications, sur un même serveur physique. Il existe différents types de
virtualisation dans le domaine de l’informatique dont voici les 6 principaux :
 La virtualisation de serveur
Elle permet la mise en œuvre de plusieurs systèmes d’exploitation sous la forme de machines
virtuelles et à l’aide d’un seul serveur physique. Elle offre aussi une rapidité de déploiement
des workloads, des applications plus performantes, une hausse de la disponibilité de serveur et
la suppression des problèmes liés à la gestion des serveurs ;
 La virtualisation de réseau
Son objectif est de calquer un réseau physique ainsi que ses composants comme les ports, les
interrupteurs, les routeurs, les firewalls, etc. Cela lui permet de procéder à la mise en place
d’applications sur un réseau virtuel ;
 La virtualisation de stockage
Elle consiste à concentrer la capacité de stockage de différents appareils en un seul (virtuel), et
ce, depuis une console centrale ;
 La virtualisation desktop
Équivalente à la virtualisation de serveur, mais elle à un ajout qui permet la reproduction des
environnements de PC. Grâce à cela, la réaction face aux changements de besoins est plus
rapide.
 La virtualisation de données
L’abstraction de détails techniques tels que la localisation, le format, la performance permet
d’accroître la résilience et d’ouvrir un accès aux données. De plus, le traitement de ces données
est simplifié grâce à la Data Virtualisation qui les consolides dans une seule source ;
 La virtualisation d’application
7
Cette virtualisation repose sur l’abstraction de la couche application de système d’exploitation.
Cela permet de réaliser une application indépendante du système d’exploitation, sous forme
encapsulée.
3.1.3 Les techniques de virtualisation
Nous distinguons essentiellement trois techniques de virtualisation :
 L’isolation
 La virtualisation complète
 La paravirtualisation
a. L'isolation
C’est une technique permettant d'emprisonner l'exécution des applications dans des contextes.
Cette solution est très performante (le surcoût d'une application isolée/virtualisée est minime
par rapport au temps d'exécution de la même application installée sur un système
d'exploitation). La performance est donc au rendez-vous, cependant on ne peut pas parler de
virtualisation de systèmes d'exploitation car l'isolation ne consiste à virtualiser que des
applications. On pourrait par contre avoir plusieurs instances de Tomcat qui écoutent sur le
même port, plusieurs Apaches sur le port 80 etc.
Figure 1: isolation [1]
b. La virtualisation est dite complète
Lorsque le système d'exploitation invité n'a pas conscience d'être virtualisé. L'OS qui est
virtualisé n'a aucun moyen de savoir qu'il partage le matériel avec d'autres OS. Ainsi, l'ensemble
des systèmes d'exploitation virtualisés s'exécutant sur un unique ordinateur, peuvent
fonctionner de manière totalement indépendante les uns des autres et être vu comme des
ordinateurs à part entière sur un réseau.
8
Figure 2:virtualisation complète [1]
c. La paravirtualisation
Par opposition à la virtualisation, on parle de paravirtualisation lorsque les systèmes
d'exploitation doivent être modifiés pour fonctionner sur un hyperviseur de paravirtualisation.
Les modifications sont en fait des insertions de drivers permettant de rediriger les appels
système au lieu de les traduire.
Figure 3:paravirtualisation [1]
3.1.4 Etude détaillée entre VM et Conteneur
Un conteneur est une alternative légère à la virtualisation complète de la machine qui implique
d'encapsuler une application avec son propre environnement d'exploitation. Une machine
virtuelle (VM) est un système d'exploitation (OS) ou un environnement d'application installé
sur un logiciel, qui imite un matériel dédié.
9
Figure 4:Comparaison entre les conteneurs et les machines virtuelles [2]
 Définition d’une VM?
VM fait référence à machine virtuelle. C’est une émulation d'un système informatique. De plus,
une machine virtuelle est basée sur une architecture d'ordinateur et fournit les fonctionnalités
d'un ordinateur physique. Cela inclut du matériel spécialisé, des logiciels ou une combinaison
des deux. Un hyperviseur ou un moniteur de machine virtuelle est utilisé pour créer et exécuter
des ordinateurs virtuels.
Il existe deux types de machines virtuelles en tant que machines virtuelles système et processus
de machines virtuelles.
Une machine virtuelle système fournit un substitut à une vraie machine. De plus, il fournit la
fonctionnalité requise pour exécuter un système d'exploitation complet.
Un processus machine virtuelle, d'autre part, exécute des programmes informatiques dans un
environnement indépendant de la plate-forme. En outre, de nombreux services IP utilisent des
machines virtuelles pour réduire les coûts et améliorer l'efficacité.
 Définition d’un conteneur?
Un conteneur est un package logiciel qui comprend tout le nécessaire pour exécuter des
applications. Contrairement à une machine virtuelle, qui virtualise l'ordinateur sous-jacent, un
conteneur virtualise le système d'exploitation. Il se trouve au sommet d'un serveur physique et
son système d'exploitation hôte est généralement Windows ou Linux. Chaque conteneur partage
le noyau du système d'exploitation hôte, les fichiers binaires et les bibliothèques. De plus, il est
uniquement possible de lire les composants partagés dans un conteneur.
10
Figure 5:Conteneur Docker [3]
 Tableau comparatif entre conteneur et VM
Tableau 1: comparatif entre VM et Conteneur
Fonctionnalité Machine virtuelle Conteneur
Système d’exploitation
Exécute un système
d’exploitation complet
incluant le noyau, ce qui
requiert davantage de
ressources système
(processeur, mémoire et
stockage).
Exécute la partie mode
utilisateur d’un système d’
exploitation et peut être
personnalisé pour contenir
uniquement les services
nécessaires à votre
application, en utilisant
moins de ressources
système.
Compatibilité des invités
Exécute n’importe quel
système d’exploitation à
l’intérieur de la machine
virtuelle
S’exécute sur la même
version du système
d’exploitation que l'hôte
(l’isolation Hyper-V vous
permet d’exécuter des
versions antérieures du
même système
d’exploitation dans un
environnement de machine
virtuelle léger)
11
Déploiement
Déployez des machines
virtuelles individuelles à
l’aide de Windows Admin
Center ou du Gestionnaire
Hyper-V ; déployez plusieurs
machines virtuelles à l’aide
de PowerShell ou de System
Center Virtual Machine
Manager.
Déployez des conteneurs
individuels à l’aide de
Docker via une ligne de
commande ; déployez
plusieurs conteneurs à
l’aide d’un orchestrateur tel
qu'Azure Kubernetes
Service.
Tolérance de panne
Les machines virtuelles
peuvent basculer vers un
autre serveur dans un cluster,
avec redémarrage du système
d’exploitation de la machine
virtuelle sur le nouveau
serveur.
En cas de défaillance d’un
nœud de cluster, tous les
conteneurs en cours
d’exécution sont
rapidement recréés par
l’orchestrateur sur un autre
nœud de cluster.
3.2 Le cloud computing : Concepts et Défis
3.2.1 Définition du cloud
Le Cloud Computing est un terme général employé pour désigner la livraison de ressources et
de services à la demande par internet. Il désigne le stockage et l’accès aux données par
l’intermédiaire d’internet plutôt que via le disque dur d’un ordinateur. Il s’oppose ainsi à la
notion de stockage local, consistant à entreposer des données ou à lancer des programmes
depuis le disque dur. La notion de Cloud ne doit pas non plus être confondue avec celle du
Network Attached Storage (NAS), utilisée par beaucoup d’entreprises via un serveur en
résidence. Ces réseaux locaux n’entrent pas dans la définition du Cloud. Cependant, certains
NAS permettent d’accéder aux données à distance depuis Internet.
12
Figure 6:Cloud Computing [4]
3.2.2 Les types de Cloud
Il existe quatre principaux types de cloud computing : clouds publics, clouds privés, clouds
hybrides et multiclouds. Il existe aussi trois principaux types de services de cloud computing :
IaaS (Infrastructure-as-a-Service), PaaS (Platform-as-a-Service) et SaaS (Software-as-a-
Service).
Clouds publics
Clouds privés
Clouds hybrides
 Le cloud public
Est généralement des environnements cloud créés à partir d’une infrastructure informatique qui
n'appartient pas à l'utilisateur final. Alibaba Cloud, Microsoft Azure, Google Cloud,
Amazon Web Services (AWS) et IBM Cloud sont les principaux fournisseurs de cloud public.
Les clouds publics étaient habituellement exécutés hors site, mais les fournisseurs de cloud
public proposent désormais des services cloud dans les Datacenter de leurs clients, ce qui rend
les notions d'emplacement et de propriété obsolètes. Tous les clouds deviennent des clouds
publics lorsque les environnements sont partitionnés et redistribués entre plusieurs clients. Les
structures payantes ne sont plus nécessairement caractéristiques des clouds publics puisque
certains fournisseurs de cloud (tel que le Massachusetts Open Cloud) autorisent les clients à
utiliser leurs clouds gratuitement. Les infrastructures informatiques de systèmes nus utilisées
par les fournisseurs de cloud public peuvent également être dissociées et vendues sous forme
d'IaaS ou développées au sein d'une plateforme vendue sous forme de PaaS.
 Le clouds privé
13
Est généralement définis comme des environnements cloud spécifiques à un utilisateur final ou
à un groupe, et sont habituellement exécutés derrière le pare-feu de l'utilisateur ou du groupe.
Tous les clouds deviennent des clouds privés lorsque l'infrastructure informatique sous-jacente
est spécifique à un client unique, avec un accès entièrement isolé.
Toutefois, les clouds privés ne reposent désormais plus forcément sur une infrastructure
informatique sur site. Aujourd'hui, les entreprises créent des clouds privés dans des Datacenter
hors site et loués à des fournisseurs, ce qui rend les règles relatives à l'emplacement et à la
propriété obsolètes.
Figure 7:Cloud privé [5]
 Un cloud hybride
Fonctionne comme un environnement informatique unique créé à partir de plusieurs
environnements connectés via des réseaux locaux (LAN), des réseaux étendus (WAN), des
réseaux privés virtuels (VPN) et/ou des API. Les caractéristiques des clouds hybrides sont
complexes et les exigences associées peuvent varier selon l'utilisateur qui les définit. Par
exemple, un cloud hybride peut inclure :
 Au moins un cloud privé et au moins un cloud public
 Au moins deux
 clouds privés
 Au moins deux clouds publics
 Un environnement nu ou virtuel connecté à au moins un cloud privé ou public
 Le multicloud
C’est une approche du cloud qui s'appuie sur plusieurs services cloud et sur plusieurs
fournisseurs de cloud, public ou privé. Tous les clouds hybrides sont des multiclouds, mais tous
les multiclouds ne sont pas des clouds hybrides. Les multiclouds peuvent devenir des clouds
14
hybrides lorsqu'une forme d'intégration ou d'orchestration permet de connecter plusieurs
clouds.
Figure 8:Cloud hybride [6]
3.2.3 Solutions Cloud Computing ou les services du cloud
Le Cloud Computing propose trois modèles principaux L'infrastructure (IaaS : Infrastructure as
a service) La plate-forme (PaaS: Platform as a service) L’application (Saas : Software as a
service).A l’heure actuelle, pour l’infrastructure en tant que service (IaaS) et la plate-forme en
tant que service (PaaS), le marché est clairement dominé par 3 acteurs : AWS, Microsoft Azure
et Google Cloud Platform
Figure 9:Les services du cloud
15
 IAAS (INFRASTRUCTURE AS A SERVICE)
C’est le premier niveau de service cloud. Grâce à un cloud en IaaS, nous avons accès à une
infrastructure informatique externe pour stocker vos données. Le fournisseur cloud met donc à
votre disposition le matériel serveur, les réseaux, le stockage et les couches de virtualisation.
Autrement dit, ce type de cloud vous dispense d’investir dans certains matériels
informatiques. Il s’adapte également à vos besoins de stockage facilement pour que vous
puissiez les réduire ou les augmenter et vous permet un gain de place certain.L’IaaS est souvent
choisi par les grands groupes car il nécessite des compétences pointues en interne pour gérer
tout ce dont ne s’occupe pas le fournisseur de cloud
 PAAS (PLATEFORME AS A SERVICE)
Avec le PaaS, nous montons d’un degré supplémentaire par rapport à l’infrastructure comme
service. Les applications middlewares comme le système d’exploitation, les bases de données,
les serveurs web, etc. passent sous la responsabilité du fournisseur de cloud. Nous pouvons
accéder facilement à l’environnement cloud en PaaS via Internet. Les entreprises ayant besoin
d’applications métiers spécifiques font souvent ce choix car le PaaS permet de garder ses
propres applications.
 SAAS (LOGICIEL COMME SERVICE)
C’est le système le plus abouti car il dépend entièrement du fournisseur de cloud. Le logiciel
est installé sur un serveur plutôt que directement sur votre ordinateur. Nous pouvons y accéder
à partir d’un site web depuis n’importe quel ordinateur. Plus besoin d’acheter des logiciels et
de les mettre à jour sans cesse, il suffit de payer un abonnement pour avoir accès au service.
L’intérêt réside surtout dans la rapidité de déploiement et la facilité avec laquelle les entreprises
peuvent s’approprier le SaaS. C’est la forme de cloud computing préférée des entreprises
aujourd’hui.
3.2.4 Prestataires de solutions Cloud (AWS : Amazon Web Service, Microsoft Azure,
Google Cloud)
Les trois principaux fournisseurs de services cloud que sont Amazon Web Services, Microsoft
Azure et Google Cloud Platform ont chacun leurs qualités et leurs défauts. Connaitre les forces
et faiblesses de chacun est stratégique pour décider quelle(s) solution(s) adopter. A l’heure
actuelle, pour l’infrastructure en tant que service (IaaS) et la plate-forme en tant que service
(PaaS), le marché est clairement dominé par 3 acteurs : AWS, Microsoft Azure et Google Cloud
Platform.
16
4 CHAPITRE4 : CONCEPT SUR LE DEVOPS ET L’AUTOMATISATION
4.1 Définition et Notion de DevOps dans le Cloud
Dans le monde entier, l’intérêt et l’adoption de DevOps se développent rapidement. Mais
qu’est-ce que DevOps?
DevOps est un ensemble de pratiques qui met l’accent sur la collaboration et la communication
entre les développeurs de logiciels et les professionnels des opérations informatiques, en
automatisant le processus de livraison de logiciels et les changements d’infrastructure. Le terme
DevOps est né de l’union du «développement» et des «opérations» dont l’objectif est favorisé
une meilleure communication entre les deux équipes.
DevOps vise à créer une culture et un environnement dans lesquels la conception, les tests et la
diffusion de logiciels peuvent être réalisés rapidement, fréquemment et efficacement. DevOps
n’est pas seulement une méthodologie, c’est une véritable philosophie de travail.
Figure 10:Le DevOps [8]
4.1.1 Comment l’approche est-elle née?
En 2007 Patrick Debois connu pour être le fondateur de ce mot « DevOps », était administrateur
système en tant que consultant sur un projet de migration de données pour le gouvernement
Belge. [25]
Quelles seraient les solutions pour résoudre ce problème qui est loin d’être un cas isolé de ce
projet ?
C’était pour lui un véritable sujet de réflexion sur lequel il voulait trouver des solutions.
Aujourd’hui, les entreprises évoluent vers une approche dynamique orientée client pour le
développement et la livraison de leurs applications. Dans un environnement où les clients se
tournent vers des transactions numériques à l’ère du mobile, le rôle des développeurs
d’applications devient incontournable dans l’expérience client. En parallèle, la tendance à
l’agilité a été une source d’inspiration pour DevOps dont l’un des points-clés agiles favorise les
professionnels et leur interaction plutôt que les processus et les outils.
17
Au cours des dernières années, les équipes de développement et d’exploitation ont amélioré
significativement leur façon de travailler. Mais aujourd’hui, le besoin de réaligner ces deux
équipes se renforce. Le mouvement DevOps naît de ce besoin de réalignement. DevOps est à
l’origine d’une philosophie qui transforme complètement la façon dont les professionnels de
l’informatique perçoivent la stabilité et le fonctionnement du système qu’ils gèrent, ainsi que
leur propre rôle dans le flux de valeur ajoutée du début à la fin. Le Cloud Computing et les
réseaux logiciels SDN, Software-Defined Network) sont deux éléments qui ont accéléré la
destruction des silos lesquels séparaient les équipes de développement et d’exploitation.
La rivalité “development VS Operations” est en train de disparaître, quoique progressivement,
car les deux services sont de plus en plus conscients de faire partie de la même équipe et
d’œuvrer vers le même objectif. DevOps permet aux sociétés d’être réactif au Time to market
avec célérité et donc, de satisfaire les besoins clients.
4.1.2 Avantages du DevOps dans le cloud privé
Pour les entreprises qui suivent les pratiques DevOps, les avantages commerciaux et techniques
sont évidents et la plupart contribuent à améliorer la satisfaction des clients. Les équipes qui
adoptent la culture, les outils et les pratiques DevOps collaborent efficacement, deviennent plus
productives, livrent plus rapidement de meilleurs produits et obtiennent une plus grande
satisfaction des clients pour atteindre les objectifs de l’entreprise. DevOps contribue à améliorer
l’agilité des entreprises en offrant un environnement productif qui favorise la collaboration
mutuelle et fructueuse ainsi que l’intégration transparente entre les équipes d’une organisation,
où qu’elles se trouvent dans le monde. Selon un rapport d’UpGuard, 63 % des organisations
qui ont mis en œuvre DevOps ont vu leurs déploiements de logiciels s’améliorer et leurs
produits sortir plus fréquemment.
Voyons plus clairement comment DevOps peut vous aider et profiter à votre équipe.
 Grande vitesse de développement
Le modèle DevOps aide les développeurs et les équipes opérationnelles à tout automatiser afin
qu’ils puissent innover plus rapidement, produire à grande vitesse des logiciels de haute qualité,
s’adapter rapidement aux changements et développer efficacement leur activité.
 Livraison rapide
Vous pouvez augmenter la vitesse et la fréquence de vos versions, adapter des cycles courts et
réduire les délais de commercialisation avec l’aide de DevOps. Lorsque vous diffusez
rapidement le produit et ses fonctionnalités, vous pouvez effectuer des corrections rapides de
bugs, répondre plus rapidement aux besoins des clients et obtenir un avantage concurrentiel sur
le marché grâce à des produits de meilleure qualité.
 Stabilité et fiabilité du système
18
Les pratiques et outils DevOps garantissent la qualité et la stabilité des logiciels malgré tous les
changements d’infrastructure introduits. Des pratiques telles que CI/CD, la surveillance, etc.
sont très utiles pour maintenir la stabilité du système. Ce qui, à son tour, augmente la fiabilité
de votre logiciel aux yeux des utilisateurs.
 Évolutivité
La gestion et l’exploitation des processus de développement et de l’infrastructure à grande
échelle sont améliorées grâce à DevOps. L’automatisation et la cohérence vous permettent de
gérer efficacement des systèmes complexes et changeants avec moins de risques.
Sécurité
DevSecOps a été introduit dans les tuyaux afin que chaque membre de l’équipe soit responsable
du maintien de la sécurité, et pas seulement votre équipe de sécurité. Il vous aide à suivre les
problèmes de sécurité, à les détecter et à les résoudre avant qu’ils ne puissent causer des
dommages.
Vous pouvez donc rester conforme et mieux contrôler la sécurité en utilisant des méthodes de
gestion de la configuration, des politiques de conformité automatisées et un contrôle granulaire.
 Satisfaction accrue des clients
Grâce à la livraison accélérée des logiciels, vous disposerez de suffisamment de temps pour
recueillir les retours des clients, suivre l’évolution du logiciel à différentes étapes et proposer
des modifications.
Par conséquent, lorsque vous travaillez sur les défauts et améliorez les fonctionnalités du
logiciel en fonction des demandes des utilisateurs, cela augmente leur niveau de satisfaction.
Ils font davantage confiance à vos produits et deviennent des clients fidèles.
 Avantage concurrentiel sur le marché
La clé est de s’adapter rapidement à l’évolution des demandes du marché.
La mise en œuvre de DevOps vous aide à accélérer la sortie des logiciels, la livraison rapide,
les fonctionnalités haut de gamme, la sécurité renforcée et la satisfaction des clients. Vous
bénéficiez d’un puissant avantage concurrentiel sur les autres entreprises qui utilisent la
méthode traditionnelle.
En outre, cela permet de réduire les coûts liés à l’ensemble du cycle logiciel et d’optimiser le
retour sur investissement et la rentabilité.
19
4.1.3 Les pratiques de DevOps dans le cloud prive
Les pratiques DevOps améliorent en continu et automatisent les processus. Bon nombre d'entre
elles portent sur une ou plusieurs phases du cycle de développement :
 Développement continu. Cette pratique couvre les phases de planification et de codage
dans le cycle de vie DevOps et peut inclure des mécanismes de contrôle des versions.
 Tests continus. Cette pratique prévoit des tests automatisés, planifiés et continus lors
de l'écriture ou de la mise à jour du code de l'application qui accélèrent la livraison du
code en production.
 Intégration continue. Cette pratique rassemble des outils de gestion de la
configuration, de test et de développement pour assurer le suivi de la mise en production
des différentes portions du code. Elle implique une collaboration étroite entre les
équipes responsables des tests et du développement pour identifier et résoudre
rapidement les problèmes de code.
 Livraison continue. Cette pratique automatise la publication des modifications du code
après la phase de test, dans un environnement intermédiaire ou de prés production. Un
membre de l'équipe peut décider de publier ces modifications dans l'environnement de
production.
 Déploiement continu. À l'instar de la livraison continue, cette pratique automatise la
publication d'un code nouveau ou modifié dans l'environnement de production. Les
entreprises peuvent être amenées à publier plusieurs fois par jour des modifications du
code ou des fonctionnalités. Dans un contexte de déploiement continu, les technologies
de conteneur comme Docker et Kubernetes assurent la cohérence du code entre
plusieurs plateformes et environnements.
 Surveillance continue. Cette pratique prévoit une surveillance continue du code
exécuté et de l'infrastructure sous-jacente. Les développeurs reçoivent des retours sur
les bogues ou sur les problèmes.
 Infrastructure-as-code Cette pratique peut être suivie dans plusieurs phases DevOps
pour automatiser le provisionnement de l'infrastructure requise pour une version
logicielle. Les développeurs ajoutent le « code » de l'infrastructure à l'aide de leurs outils
de développement. Par exemple, un développeur peut créer un volume de stockage à la
demande via Docker, Kubernetes ou Open Shift. Cette pratique permet aussi aux
équipes chargées des opérations de surveiller les configurations de l'environnement,
d'effectuer le suivi des modifications et de simplifier leur restauration.
4.2 Etude de l’Automatisation
DevOps est un ensemble de pratiques visant à automatiser et intégrer les processus entre les
équipes de développement et informatiques, afin de leur permettre de développer, de tester et
de publier des logiciels plus rapidement et de manière plus fiable.
Dans l’IAAS, l'automatisation doit se jouer à deux niveaux :
Orchestration des briques ;
Automatisation des déploiements.
20
4.2.1 Orchestration
Le principe d'une couche d'orchestration cloud est de créer le liant entre les différentes briques
de façon à fournir une interface unifiée permettant de les administrer et de les utiliser.
Outre l'interface graphique, la couche d'orchestration va exposer des API permettant de créer
des infrastructures de manière programmatique. Dans la plupart des cas, les API sont voulues
compatibles avec celles fournies par AWS.La couche d'orchestration agit donc comme une sorte
de chef d'orchestre chargé de mettre en musique les briques d'un cloud privé. Certains
mentionnent l'orchestration comme le système d'exploitation du cloud lui-même. Cette couche
n'est pas essentielle, mais elle simplifie grandement les choses en centralisant tous les outils en
un seul. Tout comme un système d'exploitation, elle vous apporte la gestion des utilisateurs et
des rôles ainsi que la notion de zone permettant de gérer plusieurs Datacenter.
4.2.2 Automatisation dans le Cloud
L'automatisation est essentielle au succès de DevOps. Au lieu d'exiger des humains qu'ils
vérifient manuellement le code dans un dépôt, exécutent des tests tout au long du processus de
développement et déploient le code en production, les experts DevOps simplifient ce processus
en automatisant chaque étape. L’automatisation du Cloud est la capacité à fournir des ressources
Cloud, y compris des serveurs et du stockage connectés par des réseaux, sans intervention
manuelle. La véritable automatisation se fait également sans obstacles techniques ou de
processus, comme la demande d'approbation des ressources Cloud au sein d'une organisation.
Au plus haut niveau, l'automatisation dans le Cloud permet aux utilisateurs d'accéder aux
ressources du Cloud et de les déployer à la demande en appuyant simplement sur le bouton
proverbial.
L'automatisation dans le Cloud consiste principalement en des outils logiciels qui interagissent
avec les ressources matérielles. La couche logicielle remplit la fonction de mise en œuvre des
politiques pour répartir et équilibrer les charges de travail, soutenir les activités et déterminer
les nœuds de calcul à utiliser en fonction du matériel disponible. Les administrateurs système
peuvent compter sur un logiciel d'automatisation dans le Cloud pour recevoir des alertes sur les
erreurs éventuelles et pour obtenir des informations de télémétrie et au niveau du système afin
d'éclairer les décisions sur le placement de la charge de travail et l'optimisation des
performances.
L'automatisation aide les équipes à améliorer les métriques DevOps clés. Les équipes DevOps
peuvent dire adieu aux longs délais d'exécution pour les changements et aux déploiements
planifiés, et embrasser l'intégration, la livraison et le déploiement continus. Elles passent d'une
détection réactive des problèmes à une surveillance et une observabilité proactives, ce qui réduit
le temps moyen jusqu'à la remise en route (MTTR).
Nous avons rassemblé les tutoriels suivants pour vous aider tout au long de votre parcours
d'adoption de DevOps.
L'automatisation du Cloud est la capacité à fournir des ressources Cloud, y compris des serveurs
et du stockage connectés par des réseaux, sans intervention manuelle.
21
Dans cette dernière étape, notre but est de simplifier encore le provisionnement des
infrastructures créées via la couche d'orchestration. L'idée est donc d'automatiser le déploiement
des middlewares utilisés par vos applications. Pour adresser cette problématique, il faudra se
tourner vers les outils de type « infrastructure as code ». Ces outils permettent de rédiger des
recettes de déploiements qui détaillent l'installation et la configuration des middlewares via des
fichiers de configuration. Par exemple, pour déployer un serveur web Apache, on pourra écrire
une recette Apache qui pourra être appliquée sur les serveurs retenus pour cette configuration.
Dès lors, lorsqu'une nouvelle machine virtuelle taguée Apache sera démarrée sur votre
infrastructure, cette dernière se verra appliquer l'installation et la configuration du serveur web
Apache
22
TROISIEME PARTIE : ETUDE COMPARATIVE ET CHOIX DE LA SOLUTION
5 CHAPITRE5 : ETUDE COMPARATIVE DES SOLUTIONS DE CLOUD PRIVES
OPEN SOURCE
5.1 Présentation des solutions clouds privés open source
5.1.1 OpenStack
OpenStack est une plateforme qui permet de créer et gérer des clouds privés ou publics à partir
de pools de ressources virtuelles. Les outils (ou « projets ») qui constituent la plateforme
OpenStack assurent les principaux services de cloud computing, à savoir, le calcul, la mise en
réseau, le stockage, la gestion des identités et la gestion des images. La dizaine de projets
restants, disponibles en option, peuvent également être groupés pour créer des clouds uniques.
Six services essentiels assurent la puissance de calcul, la mise en réseau, le stockage, la gestion
des identités et la gestion des images. Une dizaine d'autres projets, disponibles en option, sont
actuellement à un stade de développement plus ou moins avancé. Ces six services essentiels
forment l'infrastructure qui permet aux projets restants de prendre en charge la création de
tableaux de bord, l'orchestration, l'approvisionnement sur systèmes nus, la messagerie, les
conteneurs et la gouvernance.
a. Architecture d’OpenStack
L'architecture d'OpenStack se compose de multiples projets Open Source. Ces projets sont
utilisés pour paramétrer l'environnement undercloud pour les administrateurs système et
l'environnement overcloud pour les utilisateurs du cloud. Les underclouds contiennent les
composants essentiels dont les administrateurs système ont besoin pour paramétrer et gérer les
overclouds, c'est-à-dire les environnements OpenStack des utilisateurs finaux.
Elle s’articule autour de trois composants:
 OpenStackCompute (projet Nova)
Compute sert à la gestion de larges réseaux de machines virtuelles et d’une architecture
redondante et évolutive. Elle fournit une interface d’administration et l’API nécessaire à
l’orchestration du Cloud. Elle inclue : les gestions des instances serveurs, la gestion du réseau
et les contrôle d’accès
23
Figure 11:Architecture de Nova
 OpenStack Object Storage (projet Swift) [9]
Object Storage sert à la création d’espace de stockage redondant et évolutif pour le stockage
de plusieurs pétabytes de données. Il ne s’agit pas réellement d’un système de fichier mais
est surtout conçut pour le stockage à long terme de gros volumes. Il utilise une architecture
distribuée offrant plusieurs points d’accès pour éviter les SPOF (Single Point Of Failure)
24
Figure 12:Architecture de Swift [9]
 OpenStack Imaging Service (projet Glance)
Glance fournit les services de stockages, de découvertes, d’enregistrements et de distributions
pour les images disques de machines virtuelles. Il fournit également une API compatible REST
permettant d’effectuer des requêtes pour obtenir des informations sur les images hébergées par
les différents magasins de stockages
25
Figure 13:Architecture d’OpenStack [9]
5.1.2 CloudStack
Apache CloudStack est une plateforme d'administration open source qui permet la mise à la
disposition d'une infrastructure à la demande, ou IaaS (Infrastructure-as-a-Service), dans des
environnements informatiques Cloud. CloudStack est développée de sorte à aider les
fournisseurs de services managés et les services IT des entreprises à créer et exploiter un Cloud
public, un Cloud privé ou des Clouds hybrides ,au moyen de capacités équivalentes à celles
d'Amazon Elastic Compute Cloud (Amazon EC2).Développée initialement par Cloud.com, la
plateforme CloudStack a été acquise par Citrix en 2011 et remise à la Apache Software
Fondation en 2012. Son développement est maintenant régi par l’Apache Fondation. Le code
est disponible sous licence Apache 2.0.Le principal concurrent de CloudStack sur le marché de
l'orchestration de Cloud est OpenStack.
C’est une plateforme open source développée depuis 2008 par Cloud.com, racheté par Citrix
en 2011 puis cédé en 2012 à Apache Software Foundation. Cette solution assure la création, la
gestion et le déploiement des services Cloud d’infrastructures publiques, privées et hybrides
(IaaS) dans les nuages. CloudStack fournit une panoplie d’outils nécessaire pour créer, déployer
et gérer des applications Cloud multi-tenant à 68 travers des centres de données virtuels.
26
CloudStack assume les hyperviseurs les plus courants : VMware, KVM, Xen Cloud, serveur
Oracle VM et Microsoft Hyper-V. Il livre une API compatible avec AWS EC2 et S3 pour les
clients désirant déployer des clouds hybrides. L’architecture de CloudStack suit une structure
hiérarchique, qui peut être déployé afin de gérer des milliers de serveurs physiques à partir
d’une seule interface de gestion. La Figure 10 décrit les sept composants du CloudStack cités
ci-dessous :  Hosts : Serveurs fournissant des services ;  Primary Storage : pour le stockage
primaire de machines virtuelles ;  Cluster : association d’un ensemble d’hôte et leur stockage
;  Pod : Collection de clusters ;  Network : Réseau logique associé aux offres de services ;
 Secondary Storage : Stockage secondaire d’ISO, de modèles et de captures instantanées; 
Zone : Collection de pods, offres de réseau et stockage secondaire ;  Management Server Farm
: Batterie de serveurs de gestion responsable de toutes les tâches de gestion et
d’approvisionnement. Le modèle de déploiement de CloudStack couvre les composants de base
de CloudStack, à l'aide duquel CloudStack fournit toutes les fonctionnalités. Il couvre
également la séparation logique des ressources pour aider à mieux les gérer.
Figure 14:Composition architecturale de CloudStack [9]
5.1.3 Eucalyptus
Cloud Computing Eucalyptus System est un logiciel informatique open-source et payant. Il
s'agit d'une infrastructure pour appliquer le cloud computing sur les clusters. Eucalyptus permet
aux utilisateurs de configurer les ressources de calcul et de stockage à la demande au moyen
d'un produit d'infrastructure en tant que service (IaaS). Les entreprises utilisent les logiciels
d'Eucalyptus pour construire des clouds privés, publics ou hybrides.
Nous pouvons utiliser le logiciel Eucalyptus en plus des ressources informatiques telles que les
serveurs, les réseaux, le stockage pour transformer notre propre centre de données en un cloud
privé. De nombreuses entreprises qui construisent des clouds privés s'inquiètent de l'absence de
valeurs dans ce domaine en développement. Ils n'ont pas besoin de créer un choix
27
maintenant. Cela les enfermerait dans un fournisseur exact et les rendrait difficiles à changer à
l'avenir.
L'eucalyptus est né d'un projet de recherche du département d'informatique de l'Université de
Californie à Santa Barbara. Elle a développé un commerce à but lucratif nommé Eucalyptus
Systems en 2009.
Eucalyptus fournit un ensemble combiné d'interfaces de programmation d'applications
(API). Cela correspond bien à Amazon Web Services. Eucalyptus Systems a proclamé un contrat
officiel avec Amazon Web Services (AWS) en mars 2012. Il s'agit d'un accord sur les demandes
de déplacement des administrateurs entre un cloud privé Eucalyptus et Amazon Elastic Compute
Cloud (EC2) pour créer un cloud hybride.
5.1.4 OpenNebula
OpenNebula voit le jour en 2005 à l'université Complutense de Madrid dans le cadre du projet
européen open source RESERVOIR. Son objectif, dans le cadre de ce projet, est
l'administration des IaaS virtualisés. Autrement dit, il fournit des services permettant de
déployer et d'exécuter dans un environnement matériel virtualisé des VM. [12] Depuis sa
version 5.6, OpenNebula peut gérer simultanément dans l’IaaS les hyperviseurs Xen, KVM et
VMware. OpenNebula présente l'IaaS sous forme de clusters (ensemble de machines
physiques) et de VLAN (ensemble de VMs). Au moment de la création d'une VM, l’utilisateur
choisit la machine physique et le réseau virtuel dans lequel il souhaite l'exécuter. L’architecture
d’OpenNebula est fortement centralisée autour d’une unique machine de l’IaaS nommée
Frontend qui assure la coordination et la supervision de toutes les opérations d’administration.
OpenNebula est un logiciel libre et ouvert sous licence Apache qui fournit un ensemble de
fonctionnalités permettant de gérer un nuage informatique. OpenNebula organise le
fonctionnement d'un ensemble de serveurs physiques, fournissant des ressources à des
machines virtuelles. Il orchestre et gère le cycle de vie de toutes ces machines virtuelles.
OpenNebula permet entre autres :
La virtualisation de réseaux ;
La virtualisation de serveurs ;
L’intégration de nœuds supplémentaires (cluster de virtualisation) ;
Propose une interface graphique d'administration d'un nœud ou d'un cluster ;
Le déploiement de plusieurs machines virtuelles dépendantes entre elles.
OpenNebula orchestre le stockage, le réseau, la virtualisation, la surveillance et la sécurité
permettant de déployer des services multi-tiers (par exemple, des grappes de calcul en tant que
machines virtuelles sur des infrastructures distribuées, combinant à la fois des ressources du
centre de données et des ressources distantes dans le nuage informatique. Le tout selon des
politiques d'allocation.
OpenNebula est une boîte à outils comprenant des fonctionnalités d'intégration, de gestion,
d'évolutivité, de sécurité et de comptabilité. L'outil propose également la standardisation,
28
l'interopérabilité et la portabilité, offrant aux utilisateurs et aux administrateurs l’interfaçage
avec un ou des nuages existants (Amazon EC2 Query, OGF Open Cloud Computing Interface
et vCloud) et des hyperviseurs (Xen, KVM et VMware).
 Les composants d'Open Nebula peuvent être divisés en trois couches :
 Tools : c'est l'ensemble des outils de gestion pour OpenNebula ;
 Core: il se compose d'un ensemble de composants pour contrôler les machines
virtuelles, le stockage et le réseau virtuel ;
Drivers : l'interaction entre OpenNebula et l'infrastructure de Cloud est effectuée par des pilotes
spécifiques qui sont les drivers. Les machines Front end et Node sont reliés entre eux à travers
un réseau privé.
5.2 Etude comparative des solutions clouds privés open source
 Hyperviseurs et Instances
Un hyperviseur est une plateforme de virtualisation, il permet de faire fonctionner plusieurs
systèmes d’exploitation sur une même machine physique. Dans notre cas, il permet de créer des
instances dans le cloud. Le tableau 2 liste les différents hyperviseurs disponibles pour les
différentes solutions de cloud computing considérées. Certaines solutions IaaS proposent
également la possibilité de détecter l’indisponibilité d’une instance et de proposer une stratégie
de restauration comme la re-création sur un autre hôte ; cette fonction est couramment appelée
la haute-disponibilité des instances. Il est également parfois proposé de créer des groupes
d’approvisionnement dynamique d’instance en fonction de la charge globale du groupe de
plages horaires. C’est à dire que l’IaaS est capable de générer des instances ou d’en supprimer
selon un certain gabarit.
Tableau 2:Comparatif des solutions open source avec OpenStack
OpenStack Eucalyptus CloudStack OpenNebula
KVM    
XenServer   
Xen    
EMU  
LXC  
VMware    
Hyper-V  
Docker 
PowerKVM 
Haute-
disponibilité
d’instances
  
Auto-Scaling
d’instances
   
29
 Communauté, Développement, Documentation
Outre les fonctionnalités et spécificités techniques des solutions, il ne faut pas négliger la
communauté qui encourage deux autres éléments importants : le développement et la
documentation.
Choisir une solution dont la communauté est trop faible, dont le développement est presque nul
ou dont la documentation serait proche du néant pourrait mener le projet a l’échec avant la
production ou imposer d’importantes difficultés pouvant aller de l’instabilité de la plateforme
jusqu’à l’obligation de changer l’infrastructure complète en production. Il s’impose alors
d’analyser ces caractéristiques. Le tableau 3 résume la situation
Tableau 3:Comparaison des communautés et de l'activité développement pour les solutions
IaaS
OpenStack Eucalyptus CloudStack OpenNebula
Documentation Forte Moyenne Faible Moyenne
Communauté Grande Faible Moyenne Faible
Activité dev Très Elevé Faible Moyenne Communauté
 Réseaux
Un ensemble d’instance virtuelles sans connectivité est une instrastructure morte et une ce
meme ensemble avec des possibilites de connectivité limitées est au mieux ,une infrastructure
non securité.Certaines solutions IaaS actuelles proposent l’utilisation de SDN(Software-
Defined-Networking) qui permet de créer un tres grand nombre de scenarios reseaux virtuels
à l’aide notamment de riuteurs virtuels.
Tableau 4:Comparaison des fonctionnalités réseaux pour les solutions IaaS
OpenStack Eucalyptus CloudStack OpenNebula
Isolation Simple (type
VLAN) 


  
SDN(OpenFlow /Open
Vswitch)
Support solutions
matériels
Qos 
Intrusion détection
system

Load Balancing  
Firewalls   
VNP  
30
5.3 Présentation détaillée de la solution retenue : OpenStack
5.3.1 Définition d’OpenStack
OpenStack est un logiciel open source pour la mise en œuvre d’infrastructure de cloud (publique
et privé).
Il était un projet démarré depuis 2010 par Rackspace (Prestataire de service en cloud) et la
NASA. Il est supporté par des distributions Linux dont Ubuntu et Red hat, conçu pour gérer les
plateformes à grande échelle et à faible coût. Il est Compatible à la plateforme cloud Amazon
Web services .Une forte communauté réactive qui maintient le projet visant à une
standardisation du cloud (exportation des schémas et templates) sous licence Apache version2.
OpenStack est un ensemble de logiciels open source qui permet le contrôle de systèmes de
larges pools d’ordinateurs, d’espaces de stockage et de ressources réseaux à travers d’un
Datacenter; tout en étant accessible au moyen d’une interface graphique web.
5.3.2 Les objectifs d’OpenStack:
 Répondre au cloud privé et au cloud public
 Offrir une architecture modulaire et riche
 Offrir des outils robustes et longuement testés
 Proposer un standard pour le cloud
 Une solution participative et transparente
 Offrir une plateforme de test (trystack.com)
5.3.3 Les composants d’OpenStack
Le logiciel OpenStack regroupe tous les composants nécessaires à la création d’un
environnement Cloud. OpenStack se compose de plusieurs éléments, dont les principaux sont
les suivants :
 Nova (Compute Service)
 Keystone (Identité Service)
 Glance (Image Service)
 Neutron (Networking)
 Cinder (Block Storage)
 Swift (Object Storage)
 Horizon (Dashboard)
5.3.3.1 Nova
Nova est le service qui s’occupe de la gestion des machines virtuelles et de leur cycle de vie. Il
sert aussi de liant avec les autres services pour ajouter, aux machines virtuelles qu’il gère, de la
connectivité réseau et le support des images.
Nova est le composant de calcul du Cloud OpenStack et le premier composant à avoir été
intégré à OpenStack en 2010. C’est en quelque sorte la colonne vertébrale du Cloud et il se
charge d’une tâche essentielle : la gestion des ordinateurs virtuels. Sur la durée, Nova s’est
31
améliorée et permet désormais de gérer des groupes entiers d’ordinateurs. Les ordinateurs
virtuels sont reliés entre eux par une connexion synaptique. Le nombre de nœuds (aussi appelés
synapses) est variable. Nova utilise principalement les hyperviseurs sans licence KVM intégrés
dans le noyau Linux et XEN développé par l’Université de Cambridge comme base des
machines virtuelles utilisées.
5.3.3.2 Keystone
Keystone est responsable de l’autorisation et de l’authentification des utilisateurs (Identity). Le
Cloud computing ne se contente pas de gérer des ordinateurs virtuels, il met en place des réseaux
entiers. Dans ce contexte, l’identification des utilisateurs et la compartimentation des activités
sont indispensables. Keystone accorde à chaque utilisateur du Cloud (appelé « mandant ») un
accès individualisé. Cet accès recense également les droits du mandant.
5.3.3.3 Glance
Glance met à disposition les « images », c’est-à-dire les images des supports de données des
machines virtuelles. En outre, Glance peut également sauvegarder et restaurer les images. Il est
possible de créer une sorte de bibliothèque avec les modèles des systèmes requis. Ceux-ci
peuvent être recréés ultérieurement dans le réseau aussi souvent que nécessaire. Par ailleurs,
Glance garantit la disponibilité, car les machines nécessaires peuvent être recréées à tout
moment.
5.3.3.4 Neutron
Neutron (anciennement Quantum) constitue l’infrastructure réseau virtuelle d’OpenStack. Il est
ainsi possible de répartir des sous-réseaux, de gérer les adresses IP et de générer des réseaux
virtuels (VLAN). Les VPN (Virtual Private Networking) sont également pris en charge par
Neutron. Ce composant permet avant tout l’échange de données entre les éléments
d’OpenStack, par exemple entre les machines virtuelles individuelles. Le pare-feu du réseau est
également mis en place par Neutron.
5.3.3.5 Cinder
Cinder est responsable de la mise à disposition d’un stockage permanent sous forme de
stockage en bloc, un disque dur par exemple. Celui-ci est créé via Cinder grâce à la
virtualisation. Il est ainsi possible d’adapter les volumes aux besoins (évolutivité). Le stockage
en bloc Cinder se comporte comme un disque dur physique dans un ordinateur. La sécurisation
des données est simple, car l’utilisateur peut accéder au disque dur via une interface centrale
qui possède également une fonction snapshot (instantané).
5.3.3.6 Swift
Swift est le stockage objet. Il peut connecter les stockages dans différents endroits afin de
pouvoir utiliser des objets de données répartis aléatoirement sur des stockages adjacents. Cela
crée, si nécessaire, de manière transparente une redondance puisque les objets peuvent être
stockés physiquement plusieurs fois. En outre, les stockages mis à disposition par Swift peuvent
être utilisés par Cinder ou Glance. Il est également possible, grâce à Ceph ou GlusterFS,
d’utiliser la mémoire d’objet distribuée comme sous-structure.
32
5.3.3.7 Horizon
Horizon est un tableau de bord. Autrement dit, Horizon est l’interface utilisateur graphique qui
permet de gérer les composants regroupés dans OpenStack. Il est également utilisé pour gérer
les utilisateurs. Le design et les fonctionnalités d’Horizon sont adaptables
Figure 15:Les composants d’OpenStack [10]
5.3.4 Les avantages et inconvénients d’OpenStack
Le Cloud OpenStack offre les avantages et inconvénients suivants :
5.3.5 Les avantages
 Aucun coût de licence, « scalable » à souhait
 Une utilisation qui nécessite peu de matériel, les services du cloud peuvent
 généralement être utilisés avec n’importe quel appareil compatible avec
Internet
 Haute sécurité et fiabilité des données
 Évolutivité du volume de stockage et de la puissance
 Les services Cloud permettent un travail collaboratif
 L’accès n’est pas limité géographiquement
 Distribution et acceptation élevées
 Normes unifiées[27] iuu
5.3.6 Inconvénients
 Une gamme de fonctions très dynamique : OpenStack est une solution de Cloud
computing ouverte et donc très dynamique. De nouvelles fonctions sont ajoutées
régulièrement et certaines fonctions peuvent être supprimées.
 Les logiciels en open source ne proposent en général pas d’assistance centralisée. Il
existe de la documentation et une aide en ligne, mais la recherche peut être longue et
fastidieuse. Contrairement aux solutions commerciales, il n’existe pas d’interlocuteur
central.
 KVM et XEN sont les principaux hyperviseurs pris en charge. Cela peut occasionner
des problèmes lors de l’intégration d’autres solutions de virtualisation comme VMWare.
33
Les utilisateurs rapportent par exemple des problèmes lors de l’utilisation de VMWare
avec OpenStack.[27]
34
6 CHAPITRE 6 : ETUDE COMPARATIVE DES OUTILS D’AUTOMATISATION DANS
LE DEVOPS
6.1 Les outils d’automatisation dans le DevOps
Aujourd’hui, le DevOps est une pratique incontournable pour les organisations. Ce mouvement
est le résultat d’une étroite collaboration entre les équipes de développement et des opérations
système. La culture DevOps n’a de cesse de prendre en importance. Mais pour atteindre une
telle performance, il faut savoir se doter des outils DevOps appropriés.
Pour vous aider à y voir plus clair, Gologic a regroupé les outils DevOps sous 9 grandes
catégories. Il s’agit là d’un portrait à haut niveau. Chacune des catégories dans le présent texte
mérite à elle seule un article complet.
Pour configurer les logiciels, les équipes peuvent compter sur des outils fiables afin
d’automatiser les actions sur les serveurs et gérer efficacement l’infrastructure des systèmes.
Ces outils garantissent l’intégrité du développement et un meilleur contrôle des informations
dans un environnement automatisé :
6.1.1 Jenkins
C’est un logiciel open source d’intégration continue. Conçu pour réduire le temps nécessaire
pour le développement logiciel, Jenkins automatise les tests et déploiements de nouveaux
builds, ce qui rend plus rapide l’intégration de nouvelles fonctionnalités et mises à jour.
Jenkins est compatible avec plusieurs autres outils DevOps et ses fonctionnalités peuvent être
enrichies avec des plugins spécifiques.
Jenkins est un serveur d'automatisation open source populaire pour une intégration continue,
avec des centaines de plugins et une interface utilisateur conviviale. Il est destiné à automatiser
toutes les tâches de construction et de déploiement pour les projets de développement logiciel
de toute taille.
Jenkins présente plusieurs avantages. Il s’agit d’un outil open source fédérant une vaste
communauté proposant sans cesse de nouvelles améliorations et autres perfectionnements. Le
logiciel est facile à installer, et plus de 1000 plugins sont disponibles. Si un plugin
correspondant à vos besoins n’existe pas, vous pouvez le créer vous-même et le partager avec
la communauté. Autre avantage : Jenkins est également gratuit. Enfin, en tant qu’outil
développé avec Java, il peut être porté sur toutes les principales plateformes logicielles. Par
ailleurs, Jenkins se distingue de la plupart des autres outils d’intégration continue par plusieurs
points. Tout d’abord, Jenkins est adopté de manière bien plus large que ses concurrents. Au
total, on dénombre 147 000 installations actives et plus d’un million d’utilisateurs autour du
monde. L’autre force de Jenkins est son interconnexion avec plus de 1000 plugins permettant
de l’intégrer à la plupart des outils de développement, de test et de déploiement.
Jenkins est un outil open-source pour effectuer l'intégration continue et l'automatisation de la
construction, il est écrit en Java. Il fournit des services d'intégration continue pour le
développement de logiciels, qui peuvent être démarrés via une ligne de commande ou un
serveur d'applications Web. Jenkins est distribué en tant qu'archive WAR et en tant que
35
packages d'installation pour les principaux systèmes d'exploitation, en tant que package
Homebrew, en tant qu'image Docker et en tant que code source.
Figure 16:Explication de l’architecture Jenkins [11]
6.1.2 Travis
Travis est un service d'intégration continue hébergé utilisé pour créer et tester des projets
logiciels hébergés sur GitHub et Bitbucket. Travis CI est l'un des outils d'intégration continue
les plus puissants et les plus faciles à utiliser. Travis prend en charge de nombreux langages de
programmation, il fournit donc des versions par défaut pour chaque langue. Il est également
largement utilisé pour la livraison et l'automatisation. Travis peut tout gérer, des notifications à
l'intégration avec Docker. Travis CI détecte automatiquement quand la validation a été faite et
poussée vers un référentiel GitHub qui utilise Travis CI, et chaque fois que cela se produit, il
essaiera de construire le projet et d'exécuter des tests.
6.1.3 Circle CI
Circle CI est un outil basé sur le cloud qui automatise le processus d'intégration et de
déploiement. Il se concentre également sur le test de chaque modification du code avant son
déploiement, en utilisant un certain nombre de méthodes telles que les tests unitaires, les tests
d'intégration et les tests fonctionnels. L'outil prend en charge les conteneurs, OSX, Linux et
peut s'exécuter dans un cloud privé ou dans votre propre centre de données.
6.1.4 Bamboo
Bamboo est un serveur d’intégration continue qui effectue tout au même endroit : construction
automatique, test et versions. Il fonctionne très bien avec les logiciels JIRA et Bitbucket et
supporte de nombreux langages et technologies tels que CodeDeply, Ducker, Git, SVN,
Mercurial, AWS.
36
6.1.5 Gitlub CI
GitLab CI est une composante du célèbre système de gestion des versions GitLab. En plus de
l’intégration continue, GitLab offre un déploiement et une livraison continus. Tout comme pour
Travis CI, la configuration de GitLab CI s’effectue via un fichier YAML. Par rapport à d’autres
outils, le travail avec ce logiciel est également plus facile à d’autres égards.
Jenkins, travis CI, Bamboo,Circle CI et Gitlab CI sont des outils d’automatisation et integration
continu bien connu sur le marché, chacun d’entre eux présente ses avantages et inconvénients.
Le tableau 2.2 permet de comparer entre ces outils, la comparaison se base sur :
 le nombre de plugins,
 la licence
 prix de l’offre
 Deploiement de cloud
 Architecture
 Haute disponibilite
Tableau 5:Comparatif de quelques outils d'automatisation sur DevOps
Jenkins Gitlub CI Bamboo Travis CI Circle CI
déploiement
continu
supporte supporte supporte Ne supporte
pas
supporte
licence MIT MIT gratuite MIT MIT
Déploiement
cloud
Via plugins Via SDK Via SDK Via SDK Via SDK
prix pour
l’offre
payante
gratuite payant payant Payant payant
Architecture Client-Only Client/Server Client/Server Client-Only Client
Server
Haute
disponibilité
oui non non Non Non
6.2 Etude comparative des outils d’automatisation de DevOps
6.2.1 Architecture technique de Jenkins
Architecture de Jenkins-CI configurée en plate-forme informatique scientifique. Une
installation typique de Jenkins-CI (illustrée au centre) intègre des ressources de calcul
(rectangles bleus) et des données locales et distantes (dossiers de fichiers verts) et les rend
accessibles aux utilisateurs finaux via un portail Web standard. Un modèle de configuration de
projet Jenkins-CI définit les paramètres, l'environnement et les actions exécutées par une
génération de projet et pilote la génération de l'interface utilisateur. Les plugins Jenkins-CI
installés et les scripts et applications locaux s'exécutent sur le serveur Jenkins-CI et fournissent
37
un ensemble extensible de fonctions de gestion et de traitement des données. Les tâches de
calcul parallèle hautes performances (telles que le traitement d'images) peuvent être facilement
intégrées dans les projets Jenkins-CI à l'aide d'un accès SSH standard fourni par le plug-in
SSH. Les magasins d'historique de construction des projets créent des métadonnées, des
données d'analyse transitoires et des composants réutilisables tels que des pipelines et des listes
d'images. Les partages de données des instruments stockent de grands ensembles de
données/images, partagés entre plusieurs systèmes d'exploitation (Windows/Linux). Les
partages de données d'instrument agissent comme le référentiel sécurisé final pour les données
d'analyse importantes.
Figure 17:Chaîne d’intégration continue à mettre en place
6.3 Etude détaillée de la solution proposée : Jenkins
6.3.1 Introduction
C’est un logiciel open source d’intégration continue. Conçu pour réduire le temps nécessaire
pour le développement logiciel, Jenkins automatise les tests et déploiements de nouveaux
builds, ce qui rend plus rapide l’intégration de nouvelles fonctionnalités et mises à jour. Jenkins
est compatible avec plusieurs autres outils DevOps et ses fonctionnalités peuvent être enrichies
avec des plugins spécifiques.
38
6.3.2 Avantages
C'est un outil open source avec un grand soutien de la communauté.
 C'est facile d'installer.
 Il dispose de plus de 1000 plugins pour faciliter votre travail. Si un plugin n'existe pas,
vous pouvez le coder et le partager avec la communauté.
 C'est gratuit.
 Il est construit avec Java et, par conséquent, il est portable sur toutes les principales
plates-formes
 Option d'hébergement multiple
 Plug-in et intégration
 Soutien communautaire
 Facile à déboguer
6.3.3 Fonctionnement de Jenkins
Voici comment se déroule généralement le fonctionnement de Jenkins. Un développeur insère
son morceau de code dans le répertoire du code source. Jenkins, de son côté, vérifie
régulièrement le répertoire pour détecter d’éventuels changements. Lorsqu’un changement est
détecté, Jenkins prépare un nouveau build. Si le build rencontre une erreur, l’équipe concernée
est notifiée. Dans le cas contraire, le build est déployé sur le serveur test. Une fois le test
effectué, Jenkins génère un feedback et notifie les développeurs au sujet du build et des résultats
du test.
Figure 18:Jenkins et fonctionnement [12]
39
QUATRIEME PARTIE : CONCEPTION ET MISE EN OEUVRE
7 CHAPITRE 7 : CONCEPTION DE LA SOLUTION
7.1 Architecture : Schéma logique et composants
D’après le dimensionnement, nous proposons l’architecture suivante :
Figure 19:Architecture proposée
L’architecture de notre solution est composée de sept nœuds :
 Nœud de contrôle (Controller node) et chaque nœud est composé des services suivants :
service d’identité (keystone), service d’image (glance), service de télémétrie
(ceilometer), service d’orchestration (Heat), service de stockage d’objet (swift), service
de stockage en bloc (cinder) et tableau de bord qui s’appelle Horizon.
Ce nœud est l’endroit où s’exécute la plupart des services OpenStack partagé et d’autres
outils.
 Douze (12) nœuds de calcul (compute node) dont quatre (4) nœuds de base et 8 pour la
réplication. Chaque nœud est composé des services suivants : Nova-compute et
Neutron.
Ce nœud est l’endroit où les instances de VM (instance de calcul nova) sont installées.
Ces dernières utilisent les cibles ISCSI provisionnées par le service de volume Cinder.
 Un nœud de réseau (Network node) qui est composé des services suivants : Neutron
server, Neutron DHCP Agent, Neutron open switch agent et neutron L3 agent.
Il fournit des services de mise en réseau virtuels aux instances nova à l’aide des services
réseau Neutron Layer 3 et DHCP.
 Nœud Jenkins qui est composé de plugins et d’API pour gérer l’automatisation des
déploiements et tests
Dans un environnement OpenStack, le trafic réseau peut être divisé en trois réseaux.
40
 Réseau de gestion / API (Management network) : Ce réseau est un réseau interne
privé utilisé pour la communication entre tous les services OpenStack et pour la
haute disponibilité. Tous les nœuds du déploiement doivent avoir une adresse
IPv4 sur ce réseau.
 Réseau de machine virtuelle (VM network) : Ce réseau est un interne, utilisé pour
la communication entre les instances OpenStack (machines virtuelles), ainsi
qu’entre les instances et les nœuds de réseau pour fournir des connexions entrantes
et sortantes au réseau public.
 Réseau externe : le nœud de réseau connecte la machine virtuelle au monde
externe à l’aide externe. Le nœud de contrôleur expose l’OpenStack-Dashboard
sur le réseau externe.
7.2 Architecture : Fonctionnement détaillé avec Jenkins et OpenStack
Un développeur insère son morceau de code dans le répertoire du code source. Jenkins, de son
côté, vérifie régulièrement le répertoire pour détecter d’éventuels changements. Lorsqu’un
changement est détecté, Jenkins prépare un nouveau build. Si le build rencontre une erreur,
l’équipe concernée est notifiée. Dans le cas contraire, le build est déployé sur le serveur test qui
est dans l’OpenStack. Une fois le test effectué, Jenkins génère un feedback et notifie les
développeurs au sujet du build et des résultats du test.
7.3 Les besoins spécifiques
7.3.1 Identification de besoins
Notre nuage privé s’adresse essentiellement à deux types d’utilisateurs : l’administrateur et les
membres des projets. Cette première partie, sera pour énoncer et analyser les différents besoins
fonctionnels et non fonctionnels du nuage.
Memoire_Fallou_Mbengue.pdf
Memoire_Fallou_Mbengue.pdf
Memoire_Fallou_Mbengue.pdf
Memoire_Fallou_Mbengue.pdf
Memoire_Fallou_Mbengue.pdf
Memoire_Fallou_Mbengue.pdf
Memoire_Fallou_Mbengue.pdf
Memoire_Fallou_Mbengue.pdf
Memoire_Fallou_Mbengue.pdf
Memoire_Fallou_Mbengue.pdf
Memoire_Fallou_Mbengue.pdf
Memoire_Fallou_Mbengue.pdf
Memoire_Fallou_Mbengue.pdf
Memoire_Fallou_Mbengue.pdf
Memoire_Fallou_Mbengue.pdf
Memoire_Fallou_Mbengue.pdf
Memoire_Fallou_Mbengue.pdf
Memoire_Fallou_Mbengue.pdf
Memoire_Fallou_Mbengue.pdf
Memoire_Fallou_Mbengue.pdf
Memoire_Fallou_Mbengue.pdf
Memoire_Fallou_Mbengue.pdf
Memoire_Fallou_Mbengue.pdf
Memoire_Fallou_Mbengue.pdf
Memoire_Fallou_Mbengue.pdf
Memoire_Fallou_Mbengue.pdf
Memoire_Fallou_Mbengue.pdf
Memoire_Fallou_Mbengue.pdf
Memoire_Fallou_Mbengue.pdf
Memoire_Fallou_Mbengue.pdf
Memoire_Fallou_Mbengue.pdf

Contenu connexe

Tendances

Mémoire : Cloud iaas Slim Hannachi
Mémoire :  Cloud iaas Slim HannachiMémoire :  Cloud iaas Slim Hannachi
Mémoire : Cloud iaas Slim Hannachislim Hannachi
 
Pfe master fst_final_decembre2015
Pfe master fst_final_decembre2015Pfe master fst_final_decembre2015
Pfe master fst_final_decembre2015Ghali Rahma
 
Contribution a la_realisation_dune_plate_forme_de_suivi_de_colis (1)
Contribution a la_realisation_dune_plate_forme_de_suivi_de_colis (1)Contribution a la_realisation_dune_plate_forme_de_suivi_de_colis (1)
Contribution a la_realisation_dune_plate_forme_de_suivi_de_colis (1)zakia saadaoui
 
Mise en place d'une solution de détection des pirates et des malwares dans le...
Mise en place d'une solution de détection des pirates et des malwares dans le...Mise en place d'une solution de détection des pirates et des malwares dans le...
Mise en place d'une solution de détection des pirates et des malwares dans le...Mohamed Ben Bouzid
 
Réalisation d’un site web pour la Clinique des Oasis Ghardaïa
Réalisation d’un site web pour la Clinique des Oasis GhardaïaRéalisation d’un site web pour la Clinique des Oasis Ghardaïa
Réalisation d’un site web pour la Clinique des Oasis GhardaïaBachir Benyammi
 
Mise en place d'une solution VOIP sécurisée
Mise en place d'une solution VOIP sécuriséeMise en place d'une solution VOIP sécurisée
Mise en place d'une solution VOIP sécuriséeOlivierMawourkagosse
 
Rapport PFE : Cloud Insights
Rapport PFE : Cloud InsightsRapport PFE : Cloud Insights
Rapport PFE : Cloud Insightsahmed oumezzine
 
[PFE] Master - Génie logiciel
[PFE] Master - Génie logiciel  [PFE] Master - Génie logiciel
[PFE] Master - Génie logiciel Louati Aicha
 
mémoire de projet de fin d'études
mémoire de projet de fin d'études mémoire de projet de fin d'études
mémoire de projet de fin d'études MortadhaBouallagui
 
Rapport projet fin d'étude
Rapport projet fin d'étudeRapport projet fin d'étude
Rapport projet fin d'étudeHibaFarhat3
 
Rapport PFE "Conception et développement d'un Portail web pour le Smart Met...
Rapport  PFE  "Conception et développement d'un Portail web pour le Smart Met...Rapport  PFE  "Conception et développement d'un Portail web pour le Smart Met...
Rapport PFE "Conception et développement d'un Portail web pour le Smart Met...Hajer Dahech
 
Mise en place de la solution d’authentification Radius sous réseau LAN câblé
Mise en place de la solution d’authentification Radius sous réseau LAN câbléMise en place de la solution d’authentification Radius sous réseau LAN câblé
Mise en place de la solution d’authentification Radius sous réseau LAN câbléCharif Khrichfa
 
Rapport de projet de fin d’étude
Rapport  de projet de fin d’étudeRapport  de projet de fin d’étude
Rapport de projet de fin d’étudeOumaimaOuedherfi
 
Conception et Réalisation Application Web Laravel PFE BTS
Conception et Réalisation Application Web Laravel PFE BTSConception et Réalisation Application Web Laravel PFE BTS
Conception et Réalisation Application Web Laravel PFE BTSFaissoilMkavavo
 
Rapport_PFE_Securite (1).pdf
Rapport_PFE_Securite (1).pdfRapport_PFE_Securite (1).pdf
Rapport_PFE_Securite (1).pdfAhmedDhib6
 
Rapport final pfe_systeme_de_gestion _de_cabinet_de_formation_mobile_web
Rapport final pfe_systeme_de_gestion _de_cabinet_de_formation_mobile_webRapport final pfe_systeme_de_gestion _de_cabinet_de_formation_mobile_web
Rapport final pfe_systeme_de_gestion _de_cabinet_de_formation_mobile_webSalma Gouia
 
Sécurité Réseau à Base d'un Firewall Matériel (fortigate)
Sécurité Réseau à Base d'un Firewall Matériel (fortigate)Sécurité Réseau à Base d'un Firewall Matériel (fortigate)
Sécurité Réseau à Base d'un Firewall Matériel (fortigate)Sakka Mustapha
 
Rapport PFE ingénieur réseaux marwen SAADAOUI ( Juin 2018 )
Rapport PFE ingénieur réseaux marwen SAADAOUI ( Juin 2018 )Rapport PFE ingénieur réseaux marwen SAADAOUI ( Juin 2018 )
Rapport PFE ingénieur réseaux marwen SAADAOUI ( Juin 2018 )Saadaoui Marwen
 

Tendances (20)

Mémoire : Cloud iaas Slim Hannachi
Mémoire :  Cloud iaas Slim HannachiMémoire :  Cloud iaas Slim Hannachi
Mémoire : Cloud iaas Slim Hannachi
 
Pfe master fst_final_decembre2015
Pfe master fst_final_decembre2015Pfe master fst_final_decembre2015
Pfe master fst_final_decembre2015
 
Contribution a la_realisation_dune_plate_forme_de_suivi_de_colis (1)
Contribution a la_realisation_dune_plate_forme_de_suivi_de_colis (1)Contribution a la_realisation_dune_plate_forme_de_suivi_de_colis (1)
Contribution a la_realisation_dune_plate_forme_de_suivi_de_colis (1)
 
Mise en place d'une solution de détection des pirates et des malwares dans le...
Mise en place d'une solution de détection des pirates et des malwares dans le...Mise en place d'une solution de détection des pirates et des malwares dans le...
Mise en place d'une solution de détection des pirates et des malwares dans le...
 
Réalisation d’un site web pour la Clinique des Oasis Ghardaïa
Réalisation d’un site web pour la Clinique des Oasis GhardaïaRéalisation d’un site web pour la Clinique des Oasis Ghardaïa
Réalisation d’un site web pour la Clinique des Oasis Ghardaïa
 
Mise en place d'une solution VOIP sécurisée
Mise en place d'une solution VOIP sécuriséeMise en place d'une solution VOIP sécurisée
Mise en place d'une solution VOIP sécurisée
 
Rapport PFE : Cloud Insights
Rapport PFE : Cloud InsightsRapport PFE : Cloud Insights
Rapport PFE : Cloud Insights
 
[PFE] Master - Génie logiciel
[PFE] Master - Génie logiciel  [PFE] Master - Génie logiciel
[PFE] Master - Génie logiciel
 
mémoire de projet de fin d'études
mémoire de projet de fin d'études mémoire de projet de fin d'études
mémoire de projet de fin d'études
 
Rapport projet fin d'étude
Rapport projet fin d'étudeRapport projet fin d'étude
Rapport projet fin d'étude
 
Rapport PFE "Conception et développement d'un Portail web pour le Smart Met...
Rapport  PFE  "Conception et développement d'un Portail web pour le Smart Met...Rapport  PFE  "Conception et développement d'un Portail web pour le Smart Met...
Rapport PFE "Conception et développement d'un Portail web pour le Smart Met...
 
Mini projet Zabbix
Mini projet ZabbixMini projet Zabbix
Mini projet Zabbix
 
Mise en place de la solution d’authentification Radius sous réseau LAN câblé
Mise en place de la solution d’authentification Radius sous réseau LAN câbléMise en place de la solution d’authentification Radius sous réseau LAN câblé
Mise en place de la solution d’authentification Radius sous réseau LAN câblé
 
Rapport de projet de fin d’étude
Rapport  de projet de fin d’étudeRapport  de projet de fin d’étude
Rapport de projet de fin d’étude
 
Conception et Réalisation Application Web Laravel PFE BTS
Conception et Réalisation Application Web Laravel PFE BTSConception et Réalisation Application Web Laravel PFE BTS
Conception et Réalisation Application Web Laravel PFE BTS
 
Rapport_PFE_Securite (1).pdf
Rapport_PFE_Securite (1).pdfRapport_PFE_Securite (1).pdf
Rapport_PFE_Securite (1).pdf
 
Rapport final pfe_systeme_de_gestion _de_cabinet_de_formation_mobile_web
Rapport final pfe_systeme_de_gestion _de_cabinet_de_formation_mobile_webRapport final pfe_systeme_de_gestion _de_cabinet_de_formation_mobile_web
Rapport final pfe_systeme_de_gestion _de_cabinet_de_formation_mobile_web
 
Sécurité Réseau à Base d'un Firewall Matériel (fortigate)
Sécurité Réseau à Base d'un Firewall Matériel (fortigate)Sécurité Réseau à Base d'un Firewall Matériel (fortigate)
Sécurité Réseau à Base d'un Firewall Matériel (fortigate)
 
Rapport finiale
Rapport finialeRapport finiale
Rapport finiale
 
Rapport PFE ingénieur réseaux marwen SAADAOUI ( Juin 2018 )
Rapport PFE ingénieur réseaux marwen SAADAOUI ( Juin 2018 )Rapport PFE ingénieur réseaux marwen SAADAOUI ( Juin 2018 )
Rapport PFE ingénieur réseaux marwen SAADAOUI ( Juin 2018 )
 

Similaire à Memoire_Fallou_Mbengue.pdf

rapport fin d'etude
rapport fin d'etuderapport fin d'etude
rapport fin d'etudesihem-med
 
Serveur Vocal Interactif plus d'autres technologies
Serveur Vocal Interactif plus d'autres technologiesServeur Vocal Interactif plus d'autres technologies
Serveur Vocal Interactif plus d'autres technologiesjosepkap
 
Backup & Restore SharePoint 2013 Farm
Backup & Restore SharePoint 2013 FarmBackup & Restore SharePoint 2013 Farm
Backup & Restore SharePoint 2013 FarmYoussef El Idrissi
 
Rapport de PFE - Houssem SAKLI (ISIMM)
Rapport de PFE - Houssem SAKLI (ISIMM)Rapport de PFE - Houssem SAKLI (ISIMM)
Rapport de PFE - Houssem SAKLI (ISIMM)Houssem Sakli
 
Analyse trafic-urbain-temps-reel
Analyse trafic-urbain-temps-reelAnalyse trafic-urbain-temps-reel
Analyse trafic-urbain-temps-reelSid Ahmed Benkraoua
 
TFE - Sécurité des architectures en conteneurs Docker orchestrés par Kubernetes
TFE -  Sécurité des architectures en conteneurs Docker orchestrés par KubernetesTFE -  Sécurité des architectures en conteneurs Docker orchestrés par Kubernetes
TFE - Sécurité des architectures en conteneurs Docker orchestrés par KubernetesManuelMareschal
 
Visualisation graphique des preuves Électroniques (complet)
Visualisation graphique des preuves Électroniques (complet)Visualisation graphique des preuves Électroniques (complet)
Visualisation graphique des preuves Électroniques (complet)Olga Ambani
 
Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence)
Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence)Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence)
Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence)Yasmine Tounsi
 
Guide de production des cours en ligne
Guide de production des cours en ligneGuide de production des cours en ligne
Guide de production des cours en ligneSALMABOUTERRAKA
 
VPN & QOS dans LES Réseaux Informatiques.pdf
VPN & QOS dans LES Réseaux Informatiques.pdfVPN & QOS dans LES Réseaux Informatiques.pdf
VPN & QOS dans LES Réseaux Informatiques.pdfClement BAVOUA TEKEU
 
Rapport stage onee-be_2
Rapport stage onee-be_2Rapport stage onee-be_2
Rapport stage onee-be_2Mounir Kaali
 
ETUDE DE L'EVOLUTION DU COEUR PAQUET 3G VERS L'EPC
ETUDE DE L'EVOLUTION DU COEUR PAQUET 3G VERS L'EPCETUDE DE L'EVOLUTION DU COEUR PAQUET 3G VERS L'EPC
ETUDE DE L'EVOLUTION DU COEUR PAQUET 3G VERS L'EPCOkoma Diby
 
Mémoire ngagne thiam_final
Mémoire ngagne thiam_finalMémoire ngagne thiam_final
Mémoire ngagne thiam_finalNgagne Thiam
 
MUKENGE KANKONDE Zack mise en place d'un système de stockage et sauvegarde d...
MUKENGE KANKONDE  Zack mise en place d'un système de stockage et sauvegarde d...MUKENGE KANKONDE  Zack mise en place d'un système de stockage et sauvegarde d...
MUKENGE KANKONDE Zack mise en place d'un système de stockage et sauvegarde d...ZackMukenge
 
Memoire master ipm_miseur_ludovic.versionenligne
Memoire master ipm_miseur_ludovic.versionenligneMemoire master ipm_miseur_ludovic.versionenligne
Memoire master ipm_miseur_ludovic.versionenligneLudovic Miseur
 
Diagnostic et resolution d'un problème d'interférence dans la bande de 2.4GHz
Diagnostic et resolution d'un problème d'interférence dans la bande de 2.4GHzDiagnostic et resolution d'un problème d'interférence dans la bande de 2.4GHz
Diagnostic et resolution d'un problème d'interférence dans la bande de 2.4GHzRicardo SEBANY
 
MEMOIRE-INTELLIGENCE-ARTIFICIELLE-CANCER-DU-SEIN.pdf
MEMOIRE-INTELLIGENCE-ARTIFICIELLE-CANCER-DU-SEIN.pdfMEMOIRE-INTELLIGENCE-ARTIFICIELLE-CANCER-DU-SEIN.pdf
MEMOIRE-INTELLIGENCE-ARTIFICIELLE-CANCER-DU-SEIN.pdfAichétou Djimé Gallédou
 

Similaire à Memoire_Fallou_Mbengue.pdf (20)

rapport fin d'etude
rapport fin d'etuderapport fin d'etude
rapport fin d'etude
 
Serveur Vocal Interactif plus d'autres technologies
Serveur Vocal Interactif plus d'autres technologiesServeur Vocal Interactif plus d'autres technologies
Serveur Vocal Interactif plus d'autres technologies
 
Backup & Restore SharePoint 2013 Farm
Backup & Restore SharePoint 2013 FarmBackup & Restore SharePoint 2013 Farm
Backup & Restore SharePoint 2013 Farm
 
Rapport de PFE - Houssem SAKLI (ISIMM)
Rapport de PFE - Houssem SAKLI (ISIMM)Rapport de PFE - Houssem SAKLI (ISIMM)
Rapport de PFE - Houssem SAKLI (ISIMM)
 
Analyse trafic-urbain-temps-reel
Analyse trafic-urbain-temps-reelAnalyse trafic-urbain-temps-reel
Analyse trafic-urbain-temps-reel
 
TFE - Sécurité des architectures en conteneurs Docker orchestrés par Kubernetes
TFE -  Sécurité des architectures en conteneurs Docker orchestrés par KubernetesTFE -  Sécurité des architectures en conteneurs Docker orchestrés par Kubernetes
TFE - Sécurité des architectures en conteneurs Docker orchestrés par Kubernetes
 
Visualisation graphique des preuves Électroniques (complet)
Visualisation graphique des preuves Électroniques (complet)Visualisation graphique des preuves Électroniques (complet)
Visualisation graphique des preuves Électroniques (complet)
 
Memoire complet.pdf
Memoire complet.pdfMemoire complet.pdf
Memoire complet.pdf
 
Memoire_cedric
Memoire_cedricMemoire_cedric
Memoire_cedric
 
Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence)
Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence)Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence)
Rapport Projet ERP - Plateforme Odoo 12 (PFE Licence)
 
Guide de production des cours en ligne
Guide de production des cours en ligneGuide de production des cours en ligne
Guide de production des cours en ligne
 
GEmploi : Smart school timetable management software using RFID technology
GEmploi : Smart school timetable management software using RFID technologyGEmploi : Smart school timetable management software using RFID technology
GEmploi : Smart school timetable management software using RFID technology
 
VPN & QOS dans LES Réseaux Informatiques.pdf
VPN & QOS dans LES Réseaux Informatiques.pdfVPN & QOS dans LES Réseaux Informatiques.pdf
VPN & QOS dans LES Réseaux Informatiques.pdf
 
Rapport stage onee-be_2
Rapport stage onee-be_2Rapport stage onee-be_2
Rapport stage onee-be_2
 
ETUDE DE L'EVOLUTION DU COEUR PAQUET 3G VERS L'EPC
ETUDE DE L'EVOLUTION DU COEUR PAQUET 3G VERS L'EPCETUDE DE L'EVOLUTION DU COEUR PAQUET 3G VERS L'EPC
ETUDE DE L'EVOLUTION DU COEUR PAQUET 3G VERS L'EPC
 
Mémoire ngagne thiam_final
Mémoire ngagne thiam_finalMémoire ngagne thiam_final
Mémoire ngagne thiam_final
 
MUKENGE KANKONDE Zack mise en place d'un système de stockage et sauvegarde d...
MUKENGE KANKONDE  Zack mise en place d'un système de stockage et sauvegarde d...MUKENGE KANKONDE  Zack mise en place d'un système de stockage et sauvegarde d...
MUKENGE KANKONDE Zack mise en place d'un système de stockage et sauvegarde d...
 
Memoire master ipm_miseur_ludovic.versionenligne
Memoire master ipm_miseur_ludovic.versionenligneMemoire master ipm_miseur_ludovic.versionenligne
Memoire master ipm_miseur_ludovic.versionenligne
 
Diagnostic et resolution d'un problème d'interférence dans la bande de 2.4GHz
Diagnostic et resolution d'un problème d'interférence dans la bande de 2.4GHzDiagnostic et resolution d'un problème d'interférence dans la bande de 2.4GHz
Diagnostic et resolution d'un problème d'interférence dans la bande de 2.4GHz
 
MEMOIRE-INTELLIGENCE-ARTIFICIELLE-CANCER-DU-SEIN.pdf
MEMOIRE-INTELLIGENCE-ARTIFICIELLE-CANCER-DU-SEIN.pdfMEMOIRE-INTELLIGENCE-ARTIFICIELLE-CANCER-DU-SEIN.pdf
MEMOIRE-INTELLIGENCE-ARTIFICIELLE-CANCER-DU-SEIN.pdf
 

Dernier

JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfInstitut de l'Elevage - Idele
 
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...maach1
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)Sana REFAI
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfInstitut de l'Elevage - Idele
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...Institut de l'Elevage - Idele
 
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSKennel
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfInstitut de l'Elevage - Idele
 
présentation sur la logistique (4).
présentation     sur la  logistique (4).présentation     sur la  logistique (4).
présentation sur la logistique (4).FatimaEzzahra753100
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfmia884611
 

Dernier (11)

JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdfJTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
JTC 2024 - SMARTER Retour sur les indicateurs de santé .pdf
 
CAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptxCAP2ER_GC_Presentation_Outil_20240422.pptx
CAP2ER_GC_Presentation_Outil_20240422.pptx
 
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
Cours-de-Ponts Cours de Ponts Principes généraux - Conception Méthodes de con...
 
Algo II : les piles ( cours + exercices)
Algo II :  les piles ( cours + exercices)Algo II :  les piles ( cours + exercices)
Algo II : les piles ( cours + exercices)
 
JTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdfJTC 2024 - Réglementation européenne BEA et Transport.pdf
JTC 2024 - Réglementation européenne BEA et Transport.pdf
 
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdfJTC 2024 - DeCremoux_Anomalies_génétiques.pdf
JTC 2024 - DeCremoux_Anomalies_génétiques.pdf
 
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
JTC 2024 - Leviers d’adaptation au changement climatique, qualité du lait et ...
 
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
 
JTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdfJTC 2024 La relance de la filière de la viande de chevreau.pdf
JTC 2024 La relance de la filière de la viande de chevreau.pdf
 
présentation sur la logistique (4).
présentation     sur la  logistique (4).présentation     sur la  logistique (4).
présentation sur la logistique (4).
 
Câblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdfCâblage, installation et paramétrage d’un réseau informatique.pdf
Câblage, installation et paramétrage d’un réseau informatique.pdf
 

Memoire_Fallou_Mbengue.pdf

  • 1. RÉPUBLIQUE DU SÉNÉGAL Un Peuple – Un But – Une Foi MINISTÈRE DE L’ENSEIGNEMENT SUPÉRIEUR, DE LA RECHERCHE ET DE L’INNOVATION UNIVERSITE CHEIKH ANTA DIOP DE DAKAR ********************* FACULTE DES SCIENCES ET TECHNIQUES ********************* MÉMOIRE DE MASTER INFORMATIQUE Spécialité : Réseaux et Télécommunications Option : Réseau, Systèmes et Services Présenté et soutenu publiquement par : M. Fallou Mbengue Encadré par Professeur Ibrahima NIANG Le : 28/02/2022 Jury 2 Pr. Cheikh A. Bamba GUEYE Professeur Titulaire, UCAD Président Pr. Ibrahima NIANG Professeur Titulaire, UCAD Membre Dr. Mohamed M. Ould DEYE Maître Assistant Titulaire, UCAD Membre Dr. Bassirou KASSE Assistant / Ingénieur Informaticien Membre Sujet : Etude et mise en place d’une infrastructure Datacenter privé avec OpenStack : Automatisation des déploiements et tests
  • 2. II DEDICACE Pour leur amour et soutien inconditionnel, je dédie ce mémoire : A mon cher père CHEIKH SOHIBOU MBACKE MBENGUE, ma chère mère MAME DIARRA DIAGNE. A feu mon père CHEIKH SOHIBOU MBACKE MBENGUE : votre souvenir restera à jamais dans ma mémoire. A vous qui m’as toujours appris la valeur du travail. Je vous dédié spécialement ce travail pour vous signifier ma gratitude et vous dire que jamais vous ne quitterez mon cœur .Mes pensées iront toujours vers vous qui avez su guider mes pas vers le bon chemin. Que le tout puissant vous accueille dans son paradis céleste. AMINE A mes adorables frères et sœurs particulièrement Cheikh M Mbengue, Faty Mbengue, Khadim Mbengue, Bassirou Mbengue, Matar Mbengue Serigne Mor Mbengue Fatou M Mbengue, Sokhna Mbengue ,Penda Mbengue et M Bousso Mbengue pour leur amour et assistance. A mon meilleur ami et complice Ibra Fally Mbengue qui m’a soutenu dans toute situation et toute sa famille. A ma meilleure amie, et complice Anta Thiam qui m’a soutenu dans toute situation et toute sa famille. A ma meilleure amie, et complice Aïssatou Sowé qui m’a soutenu dans toute situation et toute sa famille. A mon oncle Ouztas Diagne pour ses conseils et sa disponibilité sans limite. A mon frère : Ibra Niang, sa femme Mame Diarra Khoulé et son fils S. Saliou Niang : pour son dénouement sans limite et qui à tout moment a été à l’écoute de mes services et tous mes désirs. Vous avez toujours été un vrai frère et ami, un confident de tous les jours et vous m’avez toujours soutenu dans ma vie. Merci pour vos soutiens multiformes. Que Dieu vous donne une longue vie et une santé de fer. A tous mes amis, camarades de promotion et collègues avec qui j’ai travaillé et partagé des moments de bonheur. A la mémoire de mon père Cheikh Sohibou Mbacké Mbengue que la terre de Touba lui soit légère. AMINE.
  • 3. III REMERCIEMENTS Je tiens à remercier tous les enseignants de la section Informatique, en particulier ceux de la filière Réseaux et Télécommunications pour tous les efforts consentis afin de nous permettre de réussir. J’exprime mes sincères remerciements à Monsieur le Pr Ibrahima Niang d’avoir accepté aimablement de présider le jury, ainsi qu’aux membres du jury : Pr. Cheikh A. Bamba GUEYE, Pr. Ibrahima NIANG, Dr. Mohamed M. Ould DEYE et Dr. Bassirou KASSE Je tiens à adresser chaleureusement mes remerciements à mon encadrant, Monsieur le Professeur Ibrahima Niang pour l’attention et le temps qu’il a bien voulu me consacrer pour l’encadrement de ce mémoire, ainsi que pour son soutien, ses remarques pertinentes et son encouragement. Ses expertises et ses réflexions toujours aussi pertinentes se sont révélées particulièrement enrichissantes. Son écoute et ses conseils, m’ont permis de cibler mon objectif et de découvrir ce projet, qui correspondait à mes préoccupations. Je ne pourrais pas conclure ces remerciements sans évoquer les précieux encouragements de ma famille et surtout de mon père Cheikh Sohibou Mbacké Mbengue qui m’a toujours encouragé à poursuivre des études supérieures. Il a toujours trouvé les mots et les ressources pour me pousser à avancer et à réaliser mes études supérieures avec succès. Pour terminer, je remercié mes tantes, ainsi Anta Thiam, Mame Diarra Sylla qui ont toujours été à mes côtés jours et nuits pour m’encourager, ainsi que toutes les personnes qui ont pu m’aider de près ou de loin pendant mon parcours et dont les noms ne figurent pas sur cette page. Sachez que vous avez toute ma gratitude. Un grand merci à mes amis
  • 4. IV Résumé Face à l'augmentation continuelle des coûts de mise en place et de maintenance des systèmes informatiques, les entreprises exécutent de plus en plus leurs calculs dans le cloud. Ce dernier offre des tarifs très attractifs, grâce à la mutualisation des ressources. Pour implanter cette propriété, le cloud s'appuie sur la virtualisation. A l’heure actuelle, nos universités sont souvent confrontées à un manque de moyens, pour disposer des outils ou matériels pour réaliser certains travaux pratiques et projets de fin d’année des étudiants. Pour remédier à tous ces problèmes, la section informatique de l’Université Cheikh Anta Diop de Dakar a jugé nécessaire de mettre en place un cloud privé open source. Dans ce travail, nous proposons une étude et une implémentation de l’outil Jenkins afin d’automatisation le déploiement d’applications et de tests dans un environnement de cloud privé OpenStack. Pour atteindre cet objectif, une architecture est proposée avec un choix technologique de la solution retenue. Mots-clés : Cloud Computing, Virtualization, OpenStack, Automatisation , Jenkins
  • 5. V Abstract As the cost of setting up and maintaining IT systems continues to rise, companies are increasingly running their computations in the cloud. The latter offers very attractive prices, thanks to the pooling of resources. To implement this property, the cloud relies on virtualization. At present, our universities are often faced with a lack of means to have the tools or materials to carry out certain practical work and end-of-year projects for students. To remedy all these problems, the IT section of the Cheikh Anta Diop University in Dakar found it necessary to set up an open source private cloud. In this work, we propose a study and an implementation of the Jenkins tool in order to automate the deployment of applications and tests in an OpenStack private cloud environment. To achieve this objective, an architecture is proposed with a technological choice of the chosen solution. Keywords: Cloud Computing, Virtualization, OpenStack, Automation, Jenkins
  • 6. VI Table des matières DEDICACE .........................................................................................................................II REMERCIEMENTS......................................................................................................... III Résumé............................................................................................................................... IV Abstract ...............................................................................................................................V LISTE DES FIGURES........................................................................................................X LISTE DES TABLEAUX.................................................................................................. XI GLOSSAIRE ....................................................................................................................XII INTRODUCTION GENERALE .........................................................................................1 PREMIERE PARTIE : CADRE THEORIQUE ET METHODOLOGIQUE ..................3 1 CHAPITRE 1 : CADRE THEORIQUE.......................................................................3 1.1 Contexte..............................................................................................................................3 1.2 Problématique .....................................................................................................................3 1.3 Objectifs..............................................................................................................................4 1.3.1 Objectif général ...........................................................................................................4 1.3.2 Objectifs spécifiques....................................................................................................4 2 CHAPITRE 2 : CADRE METHODOLOGIQUE........................................................5 2.1 Délimitation du champ d’étude ............................................................................................5 2.2 Méthodologie de recherche..................................................................................................5 DEUXIEME PARTIE : ETAT DE L’ART .........................................................................6 3 CHAPITRE 3 : ETAT DE L’ART SUR LA VIRTUALISATION ET CLOUD COMPUTING ......................................................................................................................6 3.1 Virtualisation : Définition et Concepts .................................................................................6 3.1.1 Définition de la virtualisation.......................................................................................6 3.1.2 Les types de virtualisation............................................................................................6 3.1.3 Les techniques de virtualisation....................................................................................7 3.1.4 Etude détaillée entre VM et Conteneur.........................................................................8 3.2 Le cloud computing : Concepts et Défis.............................................................................11 3.2.1 Définition du cloud ....................................................................................................11
  • 7. VII 3.2.2 Les types de Cloud.....................................................................................................12 3.2.3 Solutions Cloud Computing ou les services du cloud..................................................14 3.2.4 Prestataires de solutions Cloud (AWS : Amazon Web Service, Microsoft Azure, Google Cloud) ..........................................................................................................................15 4 CHAPITRE4 : CONCEPT SUR LE DEVOPS ET L’AUTOMATISATION .........16 4.1 Définition et Notion de DevOps dans le Cloud...................................................................16 4.1.1 Comment l’approche est-elle née?..............................................................................16 4.1.2 Avantages du DevOps dans le cloud privé..................................................................17 4.1.3 Les pratiques de DevOps dans le cloud prive..............................................................19 4.2 Etude de l’Automatisation .................................................................................................19 4.2.1 Orchestration .............................................................................................................20 4.2.2 Automatisation dans le Cloud.....................................................................................20 TROISIEME PARTIE : ETUDE COMPARATIVE ET CHOIX DE LA SOLUTION ..22 5 CHAPITRE5 : ETUDE COMPARATIVE DES SOLUTIONS DE CLOUD PRIVES OPEN SOURCE..................................................................................................22 5.1 Présentation des solutions clouds privés open source.........................................................22 5.1.1 OpenStack .................................................................................................................22 5.1.2 CloudStack ................................................................................................................25 5.1.3 Eucalyptus .................................................................................................................26 5.1.4 OpenNebula...............................................................................................................27 5.2 Etude comparative des solutions clouds privés open source................................................28 5.3 Présentation détaillée de la solution retenue : OpenStack ...................................................30 5.3.1 Définition d’OpenStack .............................................................................................30 5.3.2 Les objectifs d’OpenStack: ........................................................................................30 5.3.3 Les composants d’OpenStack.....................................................................................30 5.3.4 Les avantages et inconvénients d’OpenStack..............................................................32 5.3.5 Les avantages.............................................................................................................32 5.3.6 Inconvénients.............................................................................................................32 6 CHAPITRE 6 : ETUDE COMPARATIVE DES OUTILS D’AUTOMATISATION DANS LE DEVOPS ..................................................................34 6.1 Les outils d’automatisation dans le DevOps .......................................................................34 6.1.1 Jenkins.......................................................................................................................34 6.1.2 Travis ........................................................................................................................35
  • 8. VIII 6.1.3 Circle CI....................................................................................................................35 6.1.4 Bamboo .....................................................................................................................35 6.1.5 Gitlub CI....................................................................................................................36 6.2 Etude comparative des outils d’automatisation de DevOps.................................................36 6.2.1 Architecture technique de Jenkins ..............................................................................36 6.3 Etude détaillée de la solution proposée : Jenkins ................................................................37 6.3.1 Introduction ...............................................................................................................37 6.3.2 Avantages..................................................................................................................38 6.3.3 Fonctionnement de Jenkins ........................................................................................38 QUATRIEME PARTIE : CONCEPTION ET MISE EN OEUVRE ...............................39 7 CHAPITRE 7 : CONCEPTION DE LA SOLUTION ...............................................39 7.1 Architecture : Schéma logique et composants ....................................................................39 7.2 Architecture : Fonctionnement détaillé avec Jenkins et OpenStack.....................................40 7.3 Les besoins spécifiques......................................................................................................40 7.3.1 Identification de besoins.............................................................................................40 7.3.2 Besoins fonctionnels ..................................................................................................41 7.3.3 Gestion d’images .......................................................................................................41 7.3.4 Gestion d’instances ....................................................................................................41 7.3.5 Gestion de volumes....................................................................................................41 7.3.6 Gestion de flavors......................................................................................................41 7.3.7 Gestion de projets ......................................................................................................41 7.3.8 Gestion d’utilisateurs .................................................................................................41 7.3.9 Gestion de la sécurité et de l’accès .............................................................................41 7.4 Besoins non fonctionnels ...................................................................................................41 7.4.1 Simplicité d’un service à la demande..........................................................................41 7.4.2 Extrême flexibilité .....................................................................................................42 7.4.3 Accès « léger » ..........................................................................................................42 7.4.4 Sûreté ........................................................................................................................42 7.4.5 Vivacité.....................................................................................................................42 7.5 Identifications des acteurs..................................................................................................42 7.6 Les acteurs du système ......................................................................................................42 7.7 Le cas d’utilisation de l’administrateur...............................................................................42 7.8 Le cas d’utilisateur d’un utilisateur ....................................................................................44
  • 9. IX 7.9 Diagrammes d’activités .....................................................................................................46 7.9.1 Diagramme d’activité globale ....................................................................................46 7.9.2 Diagramme d’activité pour la création d’une instance.................................................47 7.10 Diagrammes de séquences système....................................................................................48 7.10.1 Diagramme de séquences pour le scénario d’authentification......................................48 7.10.2 Diagramme de séquences pour le scenario de création d’un nouveau projet par l’administrateur.........................................................................................................................49 7.10.3 Diagramme de séquences pour le scenario de création d’une instance d’une machine virtuelle 50 8 CHAPITRE 8 : MISE EN ŒUVRE, TESTS ET VALIDATION..............................51 8.1 Maquette de test ................................................................................................................51 8.2 Mise en place de proxmox Virtual Environnement .............................................................53 8.3 Déploiement de OpenStack dans un environnement cluster ...............................................53 a. Installation et la configuration d’OpenStack en cluster...........................................................54 8.4 Installation et configuration de la solution proposée : Jenkins.............................................60 8.4.1 Intégration de Jenkins et OpenStack...........................................................................63 8.4.2 Test et validation sur la création de job.......................................................................65 CONCLUSION GENERALE ET PERSPECTIVES ........................................................68 Bibliographie ......................................................................................................................69 Webographie.......................................................................................................................70
  • 10. X LISTE DES FIGURES Figure 1: isolation [1]..........................................................................................................................7 Figure 2:virtualisation complète [1].....................................................................................................8 Figure 3:paravirtualisation [1].............................................................................................................8 Figure 4:Comparaison entre les conteneurs et les machines virtuelles [2].............................................9 Figure 5:Conteneur Docker [3]..........................................................................................................10 Figure 6:Cloud Computing [4] ..........................................................................................................12 Figure 7:Cloud privé [5]....................................................................................................................13 Figure 8:Cloud hybride [6]................................................................................................................14 Figure 9:Les services du cloud ..........................................................................................................14 Figure 10:Le DevOps [8] .................................................................................................................16 Figure 11:Architecture de Nova ........................................................................................................23 Figure 12:Architecture de Swift [9]...................................................................................................24 Figure 13:Architecture d’OpenStack [9]............................................................................................25 Figure 14:Composition architecturale de CloudStack [9]...................................................................26 Figure 15:Les composants d’OpenStack [10] ....................................................................................32 Figure 16:Explication de l’architecture Jenkins [11]..........................................................................35 Figure 17:Chaîne d’intégration continue à mettre en place.................................................................37 Figure 18:Jenkins et fonctionnement [12]..........................................................................................38 Figure 19:Architecture proposée .......................................................................................................39 Figure 20:Diagramme des cas d’utilisation pour un administrateur ....................................................43 Figure 21:Diagramme des cas d’utilisation pour un membre d’un projet............................................45 Figure 22:Diagramme d’activé globale du système............................................................................46 Figure 23:Diagramme d’activité pour la création d’une instance........................................................47 Figure 24:Diagramme de séquences pour le scenario d’authentification.............................................49 Figure 25:Diagramme de séquences pour le scenario de création un nouveau projet par l’administrateur.................................................................................................................................50 Figure 26:Diagramme de séquences pour le scenario de création un nouveau projet par l’administrateur.................................................................................................................................51 Figure 27:Architecture proposée prototype........................................................................................52 Figure 28:Interface de proxmox ........................................................................................................53 Figure 29:Interface de connexion d’OpenStack .................................................................................59 Figure 30:Creation d'instance............................................................................................................59 Figure 31:Interface de connexion de Jenkins .....................................................................................62 Figure 32:Tableau de bord de Jenkins ...............................................................................................63 Figure 33:Installation du plugin ........................................................................................................64 Figure 34:Installation et mise à jour du plugin openstack...................................................................64 Figure 35:Creation de Job .................................................................................................................65 Figure 36:Les Jobs............................................................................................................................66 Figure 37:Depot code html................................................................................................................66
  • 11. XI LISTE DES TABLEAUX Tableau 1: comparatif entre VM et Conteneur...................................................................................10 Tableau 2:Comparatif des solutions open source avec OpenStack......................................................28 Tableau 3:Comparaison des communautés et de l'activité développement pour les solutions IaaS ......29 Tableau 4:Comparaison des fonctionnalités réseaux pour les solutions IaaS ......................................29 Tableau 5:Comparatif de quelques outils d'automatisation sur DevOps..............................................36
  • 12. XII GLOSSAIRE Amazon EC2 = Amazon Elastic Compute Cloud API = Interfaces de programmation d'applications AWS = Amazon Web Services CD = Deployment Continue CI = Intégration Continu CPU = central processing unit DHCP = Dynamic Host Configuration Protocol IaaS = Infrastructure-as-a-Service ISCSI = Internet Small Computer System Interface NAS= Network Attached Storage OS = Système d'exploitation PaaS = Platform-as-a-Service PM machine physique RAM= Random Access Memory SaaS= Software-as-a-Service SDN= Software-Defined Network SOA = Service Oriented Architecture SPOF = Single Point Of Failur SSH = Secure Shell TIC= Technologies de l’Information et de la Communication UML= Unified Modeling Language VM = machine virtuel VPN = Réseaux privés virtuels
  • 13. 1 INTRODUCTION GENERALE Face à l'augmentation continuelle des coûts de mise en place et de maintenance des systèmes informatiques, les entreprises exécutent de plus en plus leurs calculs dans le cloud. Ce dernier offre des tarifs très attractifs, grâce à la mutualisation des ressources. Pour implanter cette propriété, le cloud s'appuie sur la virtualisation. Cette dernière permet d'exécuter simultanément et de façon isolée plusieurs systèmes d'exploitation (OS) appelés machines virtuelles (VM) sur une machine physique (PM). Au-delà des plates-formes de cloud, la virtualisation s'est imposée ces dernières années comme la brique de base de tout centre de données. En effet, le modèle promet un changement dans le mode d’investissement et d’exploitation des ressources. Avec le Cloud, les organisations, institutions et entreprises n’ont plus besoin d’investir lourdement dans des ressources informatiques, nécessairement limitées, et nécessitant une gestion interne lourde et coûteuse. Aujourd’hui elles ont le choix de migrer vers un modèle Cloud Computing où elles peuvent acheter ou louer des ressources en ligne. Ce modèle leur épargne les coûts de gestion interne puisque les ressources informatiques sont administrées au niveau du fournisseur du Cloud. Cependant beaucoup d’entreprises utilisent le cloud privé. Ce type de nuage offre plusieurs avantages parmi lesquels on peut citer la confidentialité, la disponibilité et l’intégrité des données au sien des entreprises. Ce cloud peut être déployé avec plusieurs solutions d’open sources mais dans ce notre choix est porté sur OpenStack. A l’heure actuelle, nos universités sont souvent confrontées à un manque de moyens, pour disposer des outils ou matériels pour réaliser certains travaux pratiques et projets de fin d’année des étudiants. Pour remédier à tous ces problèmes, la section informatique de l’Université Cheikh Anta Diop de Dakar a jugé nécessaire de mettre en place un Datacenter privé avec OpenStack. Ce projet de mise en place d’un Datacenter privé au sein de la section informatique est globale dont nous participons sur le déploiement de la plateforme de base et se focalisant sur l’automatisation des déploiements et tests. Le mémoire est organisé comme suit : La première partie présente les cadres théorique et méthodologique. Dans le chapitre 1, la présentation du contexte, de la problématique et des objectifs du sujet, est faite. Le chapitre 2 présente le cadre de l’étude, la délimitation du champ de l’étude, les techniques de recherche et les difficultés rencontrées. La deuxième partie porte sur l’état de l’art. Le chapitre 3 présente la virtualisation et le cloud computing. Le chapitre 4 propose une étude des solutions du cloud privé et la gestion de l’automatisation de dans le cloud. La troisième partie, composée des chapitres 5 et 6, présente étude comparative et choix de la solution. Le chapitre 5 présente les études comparatives des solutions et le chapitre 6 se focalise sur l’étude de la solution.
  • 14. 2 La quatrième partie, composée des chapitres 7 et 8, présente les phases de conception et de mise en œuvre. Le chapitre 7 présente les études comparatives des solutions et le chapitre 8 se focalise sur l’implémentation de la solution, les tests et la validation.
  • 15. 3 PREMIERE PARTIE : CADRE THEORIQUE ET METHODOLOGIQUE 1 CHAPITRE 1 : CADRE THEORIQUE 1.1 Contexte En 2010, l’offre Cloud commençait à faire partie du paysage des solutions et des services liés aux systèmes d’information, le marché était en cours de structuration et l’offre ne répondait que partiellement aux besoins fonctionnels au niveau des entreprises. « Faire différence, plus vite, moins cher, en optimisant les ressources », Ce qui impliquait pour l’entreprise performance, innovation, agilité et rapidité dans la conception, réalisation et distribution de nouveaux produits et services. Depuis lors, le Cloud Computing est progressivement devenu une opportunité incontournable et un vecteur de la transformation digitale. Il existe trois de clouds à savoir le cloud public le cloud privé et le cloud hybride. Cependant la sécurité et la gestion des données constituent un problème majeur aux entreprises ce qui fait que beaucoup entreprises utilisent le cloud privé. Ce type de nuage peut être déployé avec plusieurs solutions d’open sources parmi lesquels OpenStack est le plus utilisé grâce à sa confidentialité son intégrité et sa disponibilité des données. A l’heure actuelle, nos universités sont souvent confrontées à un manque de moyens, pour disposer des outils ou matériels pour réaliser certains travaux pratiques et projets de fin d’année des étudiants. Pour remédier à tous ces problèmes, la section informatique de l’Université Cheikh Anta Diop de Dakar a jugé nécessaire de mettre en place un Datacenter privé avec OpenStack. Sur ce projet global nous participons sur l’automatisation des déploiements et tests pour permettre aux étudiants de bien déployer leurs applications et de bien faire leurs travaux pratiques. 1.2 Problématique Au cours de ces années on voit que la demande des étudiants sur l’internet a considérablement augmenté. Avec toujours plus de services et des volumes de données plus grands on voit aussi les étudiants n’ont pas pu faire correctement leurs tps par manque de ressources et de capacité de stockage. Cependant nous avons proposé de mettre en place un Datacenter privé avec OpenStack en intégrant des solutions open source permettant aux étudiants de faire bien faire leurs travaux pratiques et l’automatisation des déploiements et tests. Parallèlement, elle ressent un besoin pressant de répondre à ces différentes questions:  Comment déployer une solution d’automatisation des déploiements et tests dans un cloud privé OpenStack?  Quel dispositif optimal à intégrer à OpenStack pour une gestion des applications et services conteneurisées ?  Quelle stratégie et quel dispositif à déployer dans OpenStack pour une gestion automatisée des applications et services?
  • 16. 4 1.3 Objectifs 1.3.1 Objectif général L’objectif général de ce mémoire est de faire l’étude et de mettre en place d’un Datacenter privé avec OpenStack avec l’automatisation des déploiements et Tests. 1.3.2 Objectifs spécifiques Pour être plus précis dans notre travail, nous fixons des objectifs spécifiques résultants de l’objectif général que sont :  Faire un état de l’art sur la virtualisation et le cloud  Proposer une vue d’ensemble des solutions de cloud privé open source.  Décrire les composants natifs sur OpenStack.  Faire l’état de l’art sur le concept de DevOps.  Proposer une architecture.  Proposer et mettre en œuvre des solutions performantes d’automatisation dans OpenStack.
  • 17. 5 2 CHAPITRE 2 : CADRE METHODOLOGIQUE 2.1 Délimitation du champ d’étude L'étude de notre mémoire est la mise en place d’un Datacenter privé avec OpenStack au sein de la section informatique de l’université Cheikh Anta Diop de Dakar. Notre mémoire est cadré sur l’étude et mise en place d’un cloud privé. Par conséquent nous avons mettre en place un Cluster d’OpenStack pour notre Datacenter. Sur ce projet nous avons travaillé sur la partie d’automatisation par un outil .Ce dernier permettra d’automatiser les déploiements et tests. Ce projet permettra aux étudiants de bien faire leurs travaux pratiques leur projet de fin d’année 2.2 Méthodologie de recherche Afin d’atteindre nos objectifs nous ferons une étude bibliographique et webographie (à travers des livres, des mémoires, les publications, etc.) pour acquérir des connaissances dans le domaine de mettre en place un Datacenter privé avec OpenStack mais des solutions d’implémentation qui sont proposées pour l’automatisation des déploiements et test par Jenkins.
  • 18. 6 DEUXIEME PARTIE : ETAT DE L’ART 3 CHAPITRE 3 : ETAT DE L’ART SUR LA VIRTUALISATION ET CLOUD COMPUTING 3.1 Virtualisation : Définition et Concepts 3.1.1 Définition de la virtualisation La virtualisation est un mécanisme informatique qui consiste à faire fonctionner plusieurs systèmes, serveurs ou applications, sur un même serveur physique. Elle consiste à créer plusieurs machines virtuelles (aussi appelées ordinateurs virtuels, instances virtuelles, versions virtuelles, VM ou Virtual machine) à partir d’une machine physique, à l’aide d’un logiciel appelé hyperviseur. 3.1.2 Les types de virtualisation La virtualisation est un mécanisme informatique qui consiste à faire fonctionner plusieurs systèmes, serveurs ou applications, sur un même serveur physique. Il existe différents types de virtualisation dans le domaine de l’informatique dont voici les 6 principaux :  La virtualisation de serveur Elle permet la mise en œuvre de plusieurs systèmes d’exploitation sous la forme de machines virtuelles et à l’aide d’un seul serveur physique. Elle offre aussi une rapidité de déploiement des workloads, des applications plus performantes, une hausse de la disponibilité de serveur et la suppression des problèmes liés à la gestion des serveurs ;  La virtualisation de réseau Son objectif est de calquer un réseau physique ainsi que ses composants comme les ports, les interrupteurs, les routeurs, les firewalls, etc. Cela lui permet de procéder à la mise en place d’applications sur un réseau virtuel ;  La virtualisation de stockage Elle consiste à concentrer la capacité de stockage de différents appareils en un seul (virtuel), et ce, depuis une console centrale ;  La virtualisation desktop Équivalente à la virtualisation de serveur, mais elle à un ajout qui permet la reproduction des environnements de PC. Grâce à cela, la réaction face aux changements de besoins est plus rapide.  La virtualisation de données L’abstraction de détails techniques tels que la localisation, le format, la performance permet d’accroître la résilience et d’ouvrir un accès aux données. De plus, le traitement de ces données est simplifié grâce à la Data Virtualisation qui les consolides dans une seule source ;  La virtualisation d’application
  • 19. 7 Cette virtualisation repose sur l’abstraction de la couche application de système d’exploitation. Cela permet de réaliser une application indépendante du système d’exploitation, sous forme encapsulée. 3.1.3 Les techniques de virtualisation Nous distinguons essentiellement trois techniques de virtualisation :  L’isolation  La virtualisation complète  La paravirtualisation a. L'isolation C’est une technique permettant d'emprisonner l'exécution des applications dans des contextes. Cette solution est très performante (le surcoût d'une application isolée/virtualisée est minime par rapport au temps d'exécution de la même application installée sur un système d'exploitation). La performance est donc au rendez-vous, cependant on ne peut pas parler de virtualisation de systèmes d'exploitation car l'isolation ne consiste à virtualiser que des applications. On pourrait par contre avoir plusieurs instances de Tomcat qui écoutent sur le même port, plusieurs Apaches sur le port 80 etc. Figure 1: isolation [1] b. La virtualisation est dite complète Lorsque le système d'exploitation invité n'a pas conscience d'être virtualisé. L'OS qui est virtualisé n'a aucun moyen de savoir qu'il partage le matériel avec d'autres OS. Ainsi, l'ensemble des systèmes d'exploitation virtualisés s'exécutant sur un unique ordinateur, peuvent fonctionner de manière totalement indépendante les uns des autres et être vu comme des ordinateurs à part entière sur un réseau.
  • 20. 8 Figure 2:virtualisation complète [1] c. La paravirtualisation Par opposition à la virtualisation, on parle de paravirtualisation lorsque les systèmes d'exploitation doivent être modifiés pour fonctionner sur un hyperviseur de paravirtualisation. Les modifications sont en fait des insertions de drivers permettant de rediriger les appels système au lieu de les traduire. Figure 3:paravirtualisation [1] 3.1.4 Etude détaillée entre VM et Conteneur Un conteneur est une alternative légère à la virtualisation complète de la machine qui implique d'encapsuler une application avec son propre environnement d'exploitation. Une machine virtuelle (VM) est un système d'exploitation (OS) ou un environnement d'application installé sur un logiciel, qui imite un matériel dédié.
  • 21. 9 Figure 4:Comparaison entre les conteneurs et les machines virtuelles [2]  Définition d’une VM? VM fait référence à machine virtuelle. C’est une émulation d'un système informatique. De plus, une machine virtuelle est basée sur une architecture d'ordinateur et fournit les fonctionnalités d'un ordinateur physique. Cela inclut du matériel spécialisé, des logiciels ou une combinaison des deux. Un hyperviseur ou un moniteur de machine virtuelle est utilisé pour créer et exécuter des ordinateurs virtuels. Il existe deux types de machines virtuelles en tant que machines virtuelles système et processus de machines virtuelles. Une machine virtuelle système fournit un substitut à une vraie machine. De plus, il fournit la fonctionnalité requise pour exécuter un système d'exploitation complet. Un processus machine virtuelle, d'autre part, exécute des programmes informatiques dans un environnement indépendant de la plate-forme. En outre, de nombreux services IP utilisent des machines virtuelles pour réduire les coûts et améliorer l'efficacité.  Définition d’un conteneur? Un conteneur est un package logiciel qui comprend tout le nécessaire pour exécuter des applications. Contrairement à une machine virtuelle, qui virtualise l'ordinateur sous-jacent, un conteneur virtualise le système d'exploitation. Il se trouve au sommet d'un serveur physique et son système d'exploitation hôte est généralement Windows ou Linux. Chaque conteneur partage le noyau du système d'exploitation hôte, les fichiers binaires et les bibliothèques. De plus, il est uniquement possible de lire les composants partagés dans un conteneur.
  • 22. 10 Figure 5:Conteneur Docker [3]  Tableau comparatif entre conteneur et VM Tableau 1: comparatif entre VM et Conteneur Fonctionnalité Machine virtuelle Conteneur Système d’exploitation Exécute un système d’exploitation complet incluant le noyau, ce qui requiert davantage de ressources système (processeur, mémoire et stockage). Exécute la partie mode utilisateur d’un système d’ exploitation et peut être personnalisé pour contenir uniquement les services nécessaires à votre application, en utilisant moins de ressources système. Compatibilité des invités Exécute n’importe quel système d’exploitation à l’intérieur de la machine virtuelle S’exécute sur la même version du système d’exploitation que l'hôte (l’isolation Hyper-V vous permet d’exécuter des versions antérieures du même système d’exploitation dans un environnement de machine virtuelle léger)
  • 23. 11 Déploiement Déployez des machines virtuelles individuelles à l’aide de Windows Admin Center ou du Gestionnaire Hyper-V ; déployez plusieurs machines virtuelles à l’aide de PowerShell ou de System Center Virtual Machine Manager. Déployez des conteneurs individuels à l’aide de Docker via une ligne de commande ; déployez plusieurs conteneurs à l’aide d’un orchestrateur tel qu'Azure Kubernetes Service. Tolérance de panne Les machines virtuelles peuvent basculer vers un autre serveur dans un cluster, avec redémarrage du système d’exploitation de la machine virtuelle sur le nouveau serveur. En cas de défaillance d’un nœud de cluster, tous les conteneurs en cours d’exécution sont rapidement recréés par l’orchestrateur sur un autre nœud de cluster. 3.2 Le cloud computing : Concepts et Défis 3.2.1 Définition du cloud Le Cloud Computing est un terme général employé pour désigner la livraison de ressources et de services à la demande par internet. Il désigne le stockage et l’accès aux données par l’intermédiaire d’internet plutôt que via le disque dur d’un ordinateur. Il s’oppose ainsi à la notion de stockage local, consistant à entreposer des données ou à lancer des programmes depuis le disque dur. La notion de Cloud ne doit pas non plus être confondue avec celle du Network Attached Storage (NAS), utilisée par beaucoup d’entreprises via un serveur en résidence. Ces réseaux locaux n’entrent pas dans la définition du Cloud. Cependant, certains NAS permettent d’accéder aux données à distance depuis Internet.
  • 24. 12 Figure 6:Cloud Computing [4] 3.2.2 Les types de Cloud Il existe quatre principaux types de cloud computing : clouds publics, clouds privés, clouds hybrides et multiclouds. Il existe aussi trois principaux types de services de cloud computing : IaaS (Infrastructure-as-a-Service), PaaS (Platform-as-a-Service) et SaaS (Software-as-a- Service). Clouds publics Clouds privés Clouds hybrides  Le cloud public Est généralement des environnements cloud créés à partir d’une infrastructure informatique qui n'appartient pas à l'utilisateur final. Alibaba Cloud, Microsoft Azure, Google Cloud, Amazon Web Services (AWS) et IBM Cloud sont les principaux fournisseurs de cloud public. Les clouds publics étaient habituellement exécutés hors site, mais les fournisseurs de cloud public proposent désormais des services cloud dans les Datacenter de leurs clients, ce qui rend les notions d'emplacement et de propriété obsolètes. Tous les clouds deviennent des clouds publics lorsque les environnements sont partitionnés et redistribués entre plusieurs clients. Les structures payantes ne sont plus nécessairement caractéristiques des clouds publics puisque certains fournisseurs de cloud (tel que le Massachusetts Open Cloud) autorisent les clients à utiliser leurs clouds gratuitement. Les infrastructures informatiques de systèmes nus utilisées par les fournisseurs de cloud public peuvent également être dissociées et vendues sous forme d'IaaS ou développées au sein d'une plateforme vendue sous forme de PaaS.  Le clouds privé
  • 25. 13 Est généralement définis comme des environnements cloud spécifiques à un utilisateur final ou à un groupe, et sont habituellement exécutés derrière le pare-feu de l'utilisateur ou du groupe. Tous les clouds deviennent des clouds privés lorsque l'infrastructure informatique sous-jacente est spécifique à un client unique, avec un accès entièrement isolé. Toutefois, les clouds privés ne reposent désormais plus forcément sur une infrastructure informatique sur site. Aujourd'hui, les entreprises créent des clouds privés dans des Datacenter hors site et loués à des fournisseurs, ce qui rend les règles relatives à l'emplacement et à la propriété obsolètes. Figure 7:Cloud privé [5]  Un cloud hybride Fonctionne comme un environnement informatique unique créé à partir de plusieurs environnements connectés via des réseaux locaux (LAN), des réseaux étendus (WAN), des réseaux privés virtuels (VPN) et/ou des API. Les caractéristiques des clouds hybrides sont complexes et les exigences associées peuvent varier selon l'utilisateur qui les définit. Par exemple, un cloud hybride peut inclure :  Au moins un cloud privé et au moins un cloud public  Au moins deux  clouds privés  Au moins deux clouds publics  Un environnement nu ou virtuel connecté à au moins un cloud privé ou public  Le multicloud C’est une approche du cloud qui s'appuie sur plusieurs services cloud et sur plusieurs fournisseurs de cloud, public ou privé. Tous les clouds hybrides sont des multiclouds, mais tous les multiclouds ne sont pas des clouds hybrides. Les multiclouds peuvent devenir des clouds
  • 26. 14 hybrides lorsqu'une forme d'intégration ou d'orchestration permet de connecter plusieurs clouds. Figure 8:Cloud hybride [6] 3.2.3 Solutions Cloud Computing ou les services du cloud Le Cloud Computing propose trois modèles principaux L'infrastructure (IaaS : Infrastructure as a service) La plate-forme (PaaS: Platform as a service) L’application (Saas : Software as a service).A l’heure actuelle, pour l’infrastructure en tant que service (IaaS) et la plate-forme en tant que service (PaaS), le marché est clairement dominé par 3 acteurs : AWS, Microsoft Azure et Google Cloud Platform Figure 9:Les services du cloud
  • 27. 15  IAAS (INFRASTRUCTURE AS A SERVICE) C’est le premier niveau de service cloud. Grâce à un cloud en IaaS, nous avons accès à une infrastructure informatique externe pour stocker vos données. Le fournisseur cloud met donc à votre disposition le matériel serveur, les réseaux, le stockage et les couches de virtualisation. Autrement dit, ce type de cloud vous dispense d’investir dans certains matériels informatiques. Il s’adapte également à vos besoins de stockage facilement pour que vous puissiez les réduire ou les augmenter et vous permet un gain de place certain.L’IaaS est souvent choisi par les grands groupes car il nécessite des compétences pointues en interne pour gérer tout ce dont ne s’occupe pas le fournisseur de cloud  PAAS (PLATEFORME AS A SERVICE) Avec le PaaS, nous montons d’un degré supplémentaire par rapport à l’infrastructure comme service. Les applications middlewares comme le système d’exploitation, les bases de données, les serveurs web, etc. passent sous la responsabilité du fournisseur de cloud. Nous pouvons accéder facilement à l’environnement cloud en PaaS via Internet. Les entreprises ayant besoin d’applications métiers spécifiques font souvent ce choix car le PaaS permet de garder ses propres applications.  SAAS (LOGICIEL COMME SERVICE) C’est le système le plus abouti car il dépend entièrement du fournisseur de cloud. Le logiciel est installé sur un serveur plutôt que directement sur votre ordinateur. Nous pouvons y accéder à partir d’un site web depuis n’importe quel ordinateur. Plus besoin d’acheter des logiciels et de les mettre à jour sans cesse, il suffit de payer un abonnement pour avoir accès au service. L’intérêt réside surtout dans la rapidité de déploiement et la facilité avec laquelle les entreprises peuvent s’approprier le SaaS. C’est la forme de cloud computing préférée des entreprises aujourd’hui. 3.2.4 Prestataires de solutions Cloud (AWS : Amazon Web Service, Microsoft Azure, Google Cloud) Les trois principaux fournisseurs de services cloud que sont Amazon Web Services, Microsoft Azure et Google Cloud Platform ont chacun leurs qualités et leurs défauts. Connaitre les forces et faiblesses de chacun est stratégique pour décider quelle(s) solution(s) adopter. A l’heure actuelle, pour l’infrastructure en tant que service (IaaS) et la plate-forme en tant que service (PaaS), le marché est clairement dominé par 3 acteurs : AWS, Microsoft Azure et Google Cloud Platform.
  • 28. 16 4 CHAPITRE4 : CONCEPT SUR LE DEVOPS ET L’AUTOMATISATION 4.1 Définition et Notion de DevOps dans le Cloud Dans le monde entier, l’intérêt et l’adoption de DevOps se développent rapidement. Mais qu’est-ce que DevOps? DevOps est un ensemble de pratiques qui met l’accent sur la collaboration et la communication entre les développeurs de logiciels et les professionnels des opérations informatiques, en automatisant le processus de livraison de logiciels et les changements d’infrastructure. Le terme DevOps est né de l’union du «développement» et des «opérations» dont l’objectif est favorisé une meilleure communication entre les deux équipes. DevOps vise à créer une culture et un environnement dans lesquels la conception, les tests et la diffusion de logiciels peuvent être réalisés rapidement, fréquemment et efficacement. DevOps n’est pas seulement une méthodologie, c’est une véritable philosophie de travail. Figure 10:Le DevOps [8] 4.1.1 Comment l’approche est-elle née? En 2007 Patrick Debois connu pour être le fondateur de ce mot « DevOps », était administrateur système en tant que consultant sur un projet de migration de données pour le gouvernement Belge. [25] Quelles seraient les solutions pour résoudre ce problème qui est loin d’être un cas isolé de ce projet ? C’était pour lui un véritable sujet de réflexion sur lequel il voulait trouver des solutions. Aujourd’hui, les entreprises évoluent vers une approche dynamique orientée client pour le développement et la livraison de leurs applications. Dans un environnement où les clients se tournent vers des transactions numériques à l’ère du mobile, le rôle des développeurs d’applications devient incontournable dans l’expérience client. En parallèle, la tendance à l’agilité a été une source d’inspiration pour DevOps dont l’un des points-clés agiles favorise les professionnels et leur interaction plutôt que les processus et les outils.
  • 29. 17 Au cours des dernières années, les équipes de développement et d’exploitation ont amélioré significativement leur façon de travailler. Mais aujourd’hui, le besoin de réaligner ces deux équipes se renforce. Le mouvement DevOps naît de ce besoin de réalignement. DevOps est à l’origine d’une philosophie qui transforme complètement la façon dont les professionnels de l’informatique perçoivent la stabilité et le fonctionnement du système qu’ils gèrent, ainsi que leur propre rôle dans le flux de valeur ajoutée du début à la fin. Le Cloud Computing et les réseaux logiciels SDN, Software-Defined Network) sont deux éléments qui ont accéléré la destruction des silos lesquels séparaient les équipes de développement et d’exploitation. La rivalité “development VS Operations” est en train de disparaître, quoique progressivement, car les deux services sont de plus en plus conscients de faire partie de la même équipe et d’œuvrer vers le même objectif. DevOps permet aux sociétés d’être réactif au Time to market avec célérité et donc, de satisfaire les besoins clients. 4.1.2 Avantages du DevOps dans le cloud privé Pour les entreprises qui suivent les pratiques DevOps, les avantages commerciaux et techniques sont évidents et la plupart contribuent à améliorer la satisfaction des clients. Les équipes qui adoptent la culture, les outils et les pratiques DevOps collaborent efficacement, deviennent plus productives, livrent plus rapidement de meilleurs produits et obtiennent une plus grande satisfaction des clients pour atteindre les objectifs de l’entreprise. DevOps contribue à améliorer l’agilité des entreprises en offrant un environnement productif qui favorise la collaboration mutuelle et fructueuse ainsi que l’intégration transparente entre les équipes d’une organisation, où qu’elles se trouvent dans le monde. Selon un rapport d’UpGuard, 63 % des organisations qui ont mis en œuvre DevOps ont vu leurs déploiements de logiciels s’améliorer et leurs produits sortir plus fréquemment. Voyons plus clairement comment DevOps peut vous aider et profiter à votre équipe.  Grande vitesse de développement Le modèle DevOps aide les développeurs et les équipes opérationnelles à tout automatiser afin qu’ils puissent innover plus rapidement, produire à grande vitesse des logiciels de haute qualité, s’adapter rapidement aux changements et développer efficacement leur activité.  Livraison rapide Vous pouvez augmenter la vitesse et la fréquence de vos versions, adapter des cycles courts et réduire les délais de commercialisation avec l’aide de DevOps. Lorsque vous diffusez rapidement le produit et ses fonctionnalités, vous pouvez effectuer des corrections rapides de bugs, répondre plus rapidement aux besoins des clients et obtenir un avantage concurrentiel sur le marché grâce à des produits de meilleure qualité.  Stabilité et fiabilité du système
  • 30. 18 Les pratiques et outils DevOps garantissent la qualité et la stabilité des logiciels malgré tous les changements d’infrastructure introduits. Des pratiques telles que CI/CD, la surveillance, etc. sont très utiles pour maintenir la stabilité du système. Ce qui, à son tour, augmente la fiabilité de votre logiciel aux yeux des utilisateurs.  Évolutivité La gestion et l’exploitation des processus de développement et de l’infrastructure à grande échelle sont améliorées grâce à DevOps. L’automatisation et la cohérence vous permettent de gérer efficacement des systèmes complexes et changeants avec moins de risques. Sécurité DevSecOps a été introduit dans les tuyaux afin que chaque membre de l’équipe soit responsable du maintien de la sécurité, et pas seulement votre équipe de sécurité. Il vous aide à suivre les problèmes de sécurité, à les détecter et à les résoudre avant qu’ils ne puissent causer des dommages. Vous pouvez donc rester conforme et mieux contrôler la sécurité en utilisant des méthodes de gestion de la configuration, des politiques de conformité automatisées et un contrôle granulaire.  Satisfaction accrue des clients Grâce à la livraison accélérée des logiciels, vous disposerez de suffisamment de temps pour recueillir les retours des clients, suivre l’évolution du logiciel à différentes étapes et proposer des modifications. Par conséquent, lorsque vous travaillez sur les défauts et améliorez les fonctionnalités du logiciel en fonction des demandes des utilisateurs, cela augmente leur niveau de satisfaction. Ils font davantage confiance à vos produits et deviennent des clients fidèles.  Avantage concurrentiel sur le marché La clé est de s’adapter rapidement à l’évolution des demandes du marché. La mise en œuvre de DevOps vous aide à accélérer la sortie des logiciels, la livraison rapide, les fonctionnalités haut de gamme, la sécurité renforcée et la satisfaction des clients. Vous bénéficiez d’un puissant avantage concurrentiel sur les autres entreprises qui utilisent la méthode traditionnelle. En outre, cela permet de réduire les coûts liés à l’ensemble du cycle logiciel et d’optimiser le retour sur investissement et la rentabilité.
  • 31. 19 4.1.3 Les pratiques de DevOps dans le cloud prive Les pratiques DevOps améliorent en continu et automatisent les processus. Bon nombre d'entre elles portent sur une ou plusieurs phases du cycle de développement :  Développement continu. Cette pratique couvre les phases de planification et de codage dans le cycle de vie DevOps et peut inclure des mécanismes de contrôle des versions.  Tests continus. Cette pratique prévoit des tests automatisés, planifiés et continus lors de l'écriture ou de la mise à jour du code de l'application qui accélèrent la livraison du code en production.  Intégration continue. Cette pratique rassemble des outils de gestion de la configuration, de test et de développement pour assurer le suivi de la mise en production des différentes portions du code. Elle implique une collaboration étroite entre les équipes responsables des tests et du développement pour identifier et résoudre rapidement les problèmes de code.  Livraison continue. Cette pratique automatise la publication des modifications du code après la phase de test, dans un environnement intermédiaire ou de prés production. Un membre de l'équipe peut décider de publier ces modifications dans l'environnement de production.  Déploiement continu. À l'instar de la livraison continue, cette pratique automatise la publication d'un code nouveau ou modifié dans l'environnement de production. Les entreprises peuvent être amenées à publier plusieurs fois par jour des modifications du code ou des fonctionnalités. Dans un contexte de déploiement continu, les technologies de conteneur comme Docker et Kubernetes assurent la cohérence du code entre plusieurs plateformes et environnements.  Surveillance continue. Cette pratique prévoit une surveillance continue du code exécuté et de l'infrastructure sous-jacente. Les développeurs reçoivent des retours sur les bogues ou sur les problèmes.  Infrastructure-as-code Cette pratique peut être suivie dans plusieurs phases DevOps pour automatiser le provisionnement de l'infrastructure requise pour une version logicielle. Les développeurs ajoutent le « code » de l'infrastructure à l'aide de leurs outils de développement. Par exemple, un développeur peut créer un volume de stockage à la demande via Docker, Kubernetes ou Open Shift. Cette pratique permet aussi aux équipes chargées des opérations de surveiller les configurations de l'environnement, d'effectuer le suivi des modifications et de simplifier leur restauration. 4.2 Etude de l’Automatisation DevOps est un ensemble de pratiques visant à automatiser et intégrer les processus entre les équipes de développement et informatiques, afin de leur permettre de développer, de tester et de publier des logiciels plus rapidement et de manière plus fiable. Dans l’IAAS, l'automatisation doit se jouer à deux niveaux : Orchestration des briques ; Automatisation des déploiements.
  • 32. 20 4.2.1 Orchestration Le principe d'une couche d'orchestration cloud est de créer le liant entre les différentes briques de façon à fournir une interface unifiée permettant de les administrer et de les utiliser. Outre l'interface graphique, la couche d'orchestration va exposer des API permettant de créer des infrastructures de manière programmatique. Dans la plupart des cas, les API sont voulues compatibles avec celles fournies par AWS.La couche d'orchestration agit donc comme une sorte de chef d'orchestre chargé de mettre en musique les briques d'un cloud privé. Certains mentionnent l'orchestration comme le système d'exploitation du cloud lui-même. Cette couche n'est pas essentielle, mais elle simplifie grandement les choses en centralisant tous les outils en un seul. Tout comme un système d'exploitation, elle vous apporte la gestion des utilisateurs et des rôles ainsi que la notion de zone permettant de gérer plusieurs Datacenter. 4.2.2 Automatisation dans le Cloud L'automatisation est essentielle au succès de DevOps. Au lieu d'exiger des humains qu'ils vérifient manuellement le code dans un dépôt, exécutent des tests tout au long du processus de développement et déploient le code en production, les experts DevOps simplifient ce processus en automatisant chaque étape. L’automatisation du Cloud est la capacité à fournir des ressources Cloud, y compris des serveurs et du stockage connectés par des réseaux, sans intervention manuelle. La véritable automatisation se fait également sans obstacles techniques ou de processus, comme la demande d'approbation des ressources Cloud au sein d'une organisation. Au plus haut niveau, l'automatisation dans le Cloud permet aux utilisateurs d'accéder aux ressources du Cloud et de les déployer à la demande en appuyant simplement sur le bouton proverbial. L'automatisation dans le Cloud consiste principalement en des outils logiciels qui interagissent avec les ressources matérielles. La couche logicielle remplit la fonction de mise en œuvre des politiques pour répartir et équilibrer les charges de travail, soutenir les activités et déterminer les nœuds de calcul à utiliser en fonction du matériel disponible. Les administrateurs système peuvent compter sur un logiciel d'automatisation dans le Cloud pour recevoir des alertes sur les erreurs éventuelles et pour obtenir des informations de télémétrie et au niveau du système afin d'éclairer les décisions sur le placement de la charge de travail et l'optimisation des performances. L'automatisation aide les équipes à améliorer les métriques DevOps clés. Les équipes DevOps peuvent dire adieu aux longs délais d'exécution pour les changements et aux déploiements planifiés, et embrasser l'intégration, la livraison et le déploiement continus. Elles passent d'une détection réactive des problèmes à une surveillance et une observabilité proactives, ce qui réduit le temps moyen jusqu'à la remise en route (MTTR). Nous avons rassemblé les tutoriels suivants pour vous aider tout au long de votre parcours d'adoption de DevOps. L'automatisation du Cloud est la capacité à fournir des ressources Cloud, y compris des serveurs et du stockage connectés par des réseaux, sans intervention manuelle.
  • 33. 21 Dans cette dernière étape, notre but est de simplifier encore le provisionnement des infrastructures créées via la couche d'orchestration. L'idée est donc d'automatiser le déploiement des middlewares utilisés par vos applications. Pour adresser cette problématique, il faudra se tourner vers les outils de type « infrastructure as code ». Ces outils permettent de rédiger des recettes de déploiements qui détaillent l'installation et la configuration des middlewares via des fichiers de configuration. Par exemple, pour déployer un serveur web Apache, on pourra écrire une recette Apache qui pourra être appliquée sur les serveurs retenus pour cette configuration. Dès lors, lorsqu'une nouvelle machine virtuelle taguée Apache sera démarrée sur votre infrastructure, cette dernière se verra appliquer l'installation et la configuration du serveur web Apache
  • 34. 22 TROISIEME PARTIE : ETUDE COMPARATIVE ET CHOIX DE LA SOLUTION 5 CHAPITRE5 : ETUDE COMPARATIVE DES SOLUTIONS DE CLOUD PRIVES OPEN SOURCE 5.1 Présentation des solutions clouds privés open source 5.1.1 OpenStack OpenStack est une plateforme qui permet de créer et gérer des clouds privés ou publics à partir de pools de ressources virtuelles. Les outils (ou « projets ») qui constituent la plateforme OpenStack assurent les principaux services de cloud computing, à savoir, le calcul, la mise en réseau, le stockage, la gestion des identités et la gestion des images. La dizaine de projets restants, disponibles en option, peuvent également être groupés pour créer des clouds uniques. Six services essentiels assurent la puissance de calcul, la mise en réseau, le stockage, la gestion des identités et la gestion des images. Une dizaine d'autres projets, disponibles en option, sont actuellement à un stade de développement plus ou moins avancé. Ces six services essentiels forment l'infrastructure qui permet aux projets restants de prendre en charge la création de tableaux de bord, l'orchestration, l'approvisionnement sur systèmes nus, la messagerie, les conteneurs et la gouvernance. a. Architecture d’OpenStack L'architecture d'OpenStack se compose de multiples projets Open Source. Ces projets sont utilisés pour paramétrer l'environnement undercloud pour les administrateurs système et l'environnement overcloud pour les utilisateurs du cloud. Les underclouds contiennent les composants essentiels dont les administrateurs système ont besoin pour paramétrer et gérer les overclouds, c'est-à-dire les environnements OpenStack des utilisateurs finaux. Elle s’articule autour de trois composants:  OpenStackCompute (projet Nova) Compute sert à la gestion de larges réseaux de machines virtuelles et d’une architecture redondante et évolutive. Elle fournit une interface d’administration et l’API nécessaire à l’orchestration du Cloud. Elle inclue : les gestions des instances serveurs, la gestion du réseau et les contrôle d’accès
  • 35. 23 Figure 11:Architecture de Nova  OpenStack Object Storage (projet Swift) [9] Object Storage sert à la création d’espace de stockage redondant et évolutif pour le stockage de plusieurs pétabytes de données. Il ne s’agit pas réellement d’un système de fichier mais est surtout conçut pour le stockage à long terme de gros volumes. Il utilise une architecture distribuée offrant plusieurs points d’accès pour éviter les SPOF (Single Point Of Failure)
  • 36. 24 Figure 12:Architecture de Swift [9]  OpenStack Imaging Service (projet Glance) Glance fournit les services de stockages, de découvertes, d’enregistrements et de distributions pour les images disques de machines virtuelles. Il fournit également une API compatible REST permettant d’effectuer des requêtes pour obtenir des informations sur les images hébergées par les différents magasins de stockages
  • 37. 25 Figure 13:Architecture d’OpenStack [9] 5.1.2 CloudStack Apache CloudStack est une plateforme d'administration open source qui permet la mise à la disposition d'une infrastructure à la demande, ou IaaS (Infrastructure-as-a-Service), dans des environnements informatiques Cloud. CloudStack est développée de sorte à aider les fournisseurs de services managés et les services IT des entreprises à créer et exploiter un Cloud public, un Cloud privé ou des Clouds hybrides ,au moyen de capacités équivalentes à celles d'Amazon Elastic Compute Cloud (Amazon EC2).Développée initialement par Cloud.com, la plateforme CloudStack a été acquise par Citrix en 2011 et remise à la Apache Software Fondation en 2012. Son développement est maintenant régi par l’Apache Fondation. Le code est disponible sous licence Apache 2.0.Le principal concurrent de CloudStack sur le marché de l'orchestration de Cloud est OpenStack. C’est une plateforme open source développée depuis 2008 par Cloud.com, racheté par Citrix en 2011 puis cédé en 2012 à Apache Software Foundation. Cette solution assure la création, la gestion et le déploiement des services Cloud d’infrastructures publiques, privées et hybrides (IaaS) dans les nuages. CloudStack fournit une panoplie d’outils nécessaire pour créer, déployer et gérer des applications Cloud multi-tenant à 68 travers des centres de données virtuels.
  • 38. 26 CloudStack assume les hyperviseurs les plus courants : VMware, KVM, Xen Cloud, serveur Oracle VM et Microsoft Hyper-V. Il livre une API compatible avec AWS EC2 et S3 pour les clients désirant déployer des clouds hybrides. L’architecture de CloudStack suit une structure hiérarchique, qui peut être déployé afin de gérer des milliers de serveurs physiques à partir d’une seule interface de gestion. La Figure 10 décrit les sept composants du CloudStack cités ci-dessous :  Hosts : Serveurs fournissant des services ;  Primary Storage : pour le stockage primaire de machines virtuelles ;  Cluster : association d’un ensemble d’hôte et leur stockage ;  Pod : Collection de clusters ;  Network : Réseau logique associé aux offres de services ;  Secondary Storage : Stockage secondaire d’ISO, de modèles et de captures instantanées;  Zone : Collection de pods, offres de réseau et stockage secondaire ;  Management Server Farm : Batterie de serveurs de gestion responsable de toutes les tâches de gestion et d’approvisionnement. Le modèle de déploiement de CloudStack couvre les composants de base de CloudStack, à l'aide duquel CloudStack fournit toutes les fonctionnalités. Il couvre également la séparation logique des ressources pour aider à mieux les gérer. Figure 14:Composition architecturale de CloudStack [9] 5.1.3 Eucalyptus Cloud Computing Eucalyptus System est un logiciel informatique open-source et payant. Il s'agit d'une infrastructure pour appliquer le cloud computing sur les clusters. Eucalyptus permet aux utilisateurs de configurer les ressources de calcul et de stockage à la demande au moyen d'un produit d'infrastructure en tant que service (IaaS). Les entreprises utilisent les logiciels d'Eucalyptus pour construire des clouds privés, publics ou hybrides. Nous pouvons utiliser le logiciel Eucalyptus en plus des ressources informatiques telles que les serveurs, les réseaux, le stockage pour transformer notre propre centre de données en un cloud privé. De nombreuses entreprises qui construisent des clouds privés s'inquiètent de l'absence de valeurs dans ce domaine en développement. Ils n'ont pas besoin de créer un choix
  • 39. 27 maintenant. Cela les enfermerait dans un fournisseur exact et les rendrait difficiles à changer à l'avenir. L'eucalyptus est né d'un projet de recherche du département d'informatique de l'Université de Californie à Santa Barbara. Elle a développé un commerce à but lucratif nommé Eucalyptus Systems en 2009. Eucalyptus fournit un ensemble combiné d'interfaces de programmation d'applications (API). Cela correspond bien à Amazon Web Services. Eucalyptus Systems a proclamé un contrat officiel avec Amazon Web Services (AWS) en mars 2012. Il s'agit d'un accord sur les demandes de déplacement des administrateurs entre un cloud privé Eucalyptus et Amazon Elastic Compute Cloud (EC2) pour créer un cloud hybride. 5.1.4 OpenNebula OpenNebula voit le jour en 2005 à l'université Complutense de Madrid dans le cadre du projet européen open source RESERVOIR. Son objectif, dans le cadre de ce projet, est l'administration des IaaS virtualisés. Autrement dit, il fournit des services permettant de déployer et d'exécuter dans un environnement matériel virtualisé des VM. [12] Depuis sa version 5.6, OpenNebula peut gérer simultanément dans l’IaaS les hyperviseurs Xen, KVM et VMware. OpenNebula présente l'IaaS sous forme de clusters (ensemble de machines physiques) et de VLAN (ensemble de VMs). Au moment de la création d'une VM, l’utilisateur choisit la machine physique et le réseau virtuel dans lequel il souhaite l'exécuter. L’architecture d’OpenNebula est fortement centralisée autour d’une unique machine de l’IaaS nommée Frontend qui assure la coordination et la supervision de toutes les opérations d’administration. OpenNebula est un logiciel libre et ouvert sous licence Apache qui fournit un ensemble de fonctionnalités permettant de gérer un nuage informatique. OpenNebula organise le fonctionnement d'un ensemble de serveurs physiques, fournissant des ressources à des machines virtuelles. Il orchestre et gère le cycle de vie de toutes ces machines virtuelles. OpenNebula permet entre autres : La virtualisation de réseaux ; La virtualisation de serveurs ; L’intégration de nœuds supplémentaires (cluster de virtualisation) ; Propose une interface graphique d'administration d'un nœud ou d'un cluster ; Le déploiement de plusieurs machines virtuelles dépendantes entre elles. OpenNebula orchestre le stockage, le réseau, la virtualisation, la surveillance et la sécurité permettant de déployer des services multi-tiers (par exemple, des grappes de calcul en tant que machines virtuelles sur des infrastructures distribuées, combinant à la fois des ressources du centre de données et des ressources distantes dans le nuage informatique. Le tout selon des politiques d'allocation. OpenNebula est une boîte à outils comprenant des fonctionnalités d'intégration, de gestion, d'évolutivité, de sécurité et de comptabilité. L'outil propose également la standardisation,
  • 40. 28 l'interopérabilité et la portabilité, offrant aux utilisateurs et aux administrateurs l’interfaçage avec un ou des nuages existants (Amazon EC2 Query, OGF Open Cloud Computing Interface et vCloud) et des hyperviseurs (Xen, KVM et VMware).  Les composants d'Open Nebula peuvent être divisés en trois couches :  Tools : c'est l'ensemble des outils de gestion pour OpenNebula ;  Core: il se compose d'un ensemble de composants pour contrôler les machines virtuelles, le stockage et le réseau virtuel ; Drivers : l'interaction entre OpenNebula et l'infrastructure de Cloud est effectuée par des pilotes spécifiques qui sont les drivers. Les machines Front end et Node sont reliés entre eux à travers un réseau privé. 5.2 Etude comparative des solutions clouds privés open source  Hyperviseurs et Instances Un hyperviseur est une plateforme de virtualisation, il permet de faire fonctionner plusieurs systèmes d’exploitation sur une même machine physique. Dans notre cas, il permet de créer des instances dans le cloud. Le tableau 2 liste les différents hyperviseurs disponibles pour les différentes solutions de cloud computing considérées. Certaines solutions IaaS proposent également la possibilité de détecter l’indisponibilité d’une instance et de proposer une stratégie de restauration comme la re-création sur un autre hôte ; cette fonction est couramment appelée la haute-disponibilité des instances. Il est également parfois proposé de créer des groupes d’approvisionnement dynamique d’instance en fonction de la charge globale du groupe de plages horaires. C’est à dire que l’IaaS est capable de générer des instances ou d’en supprimer selon un certain gabarit. Tableau 2:Comparatif des solutions open source avec OpenStack OpenStack Eucalyptus CloudStack OpenNebula KVM     XenServer    Xen     EMU   LXC   VMware     Hyper-V   Docker  PowerKVM  Haute- disponibilité d’instances    Auto-Scaling d’instances    
  • 41. 29  Communauté, Développement, Documentation Outre les fonctionnalités et spécificités techniques des solutions, il ne faut pas négliger la communauté qui encourage deux autres éléments importants : le développement et la documentation. Choisir une solution dont la communauté est trop faible, dont le développement est presque nul ou dont la documentation serait proche du néant pourrait mener le projet a l’échec avant la production ou imposer d’importantes difficultés pouvant aller de l’instabilité de la plateforme jusqu’à l’obligation de changer l’infrastructure complète en production. Il s’impose alors d’analyser ces caractéristiques. Le tableau 3 résume la situation Tableau 3:Comparaison des communautés et de l'activité développement pour les solutions IaaS OpenStack Eucalyptus CloudStack OpenNebula Documentation Forte Moyenne Faible Moyenne Communauté Grande Faible Moyenne Faible Activité dev Très Elevé Faible Moyenne Communauté  Réseaux Un ensemble d’instance virtuelles sans connectivité est une instrastructure morte et une ce meme ensemble avec des possibilites de connectivité limitées est au mieux ,une infrastructure non securité.Certaines solutions IaaS actuelles proposent l’utilisation de SDN(Software- Defined-Networking) qui permet de créer un tres grand nombre de scenarios reseaux virtuels à l’aide notamment de riuteurs virtuels. Tableau 4:Comparaison des fonctionnalités réseaux pour les solutions IaaS OpenStack Eucalyptus CloudStack OpenNebula Isolation Simple (type VLAN)       SDN(OpenFlow /Open Vswitch) Support solutions matériels Qos  Intrusion détection system  Load Balancing   Firewalls    VNP  
  • 42. 30 5.3 Présentation détaillée de la solution retenue : OpenStack 5.3.1 Définition d’OpenStack OpenStack est un logiciel open source pour la mise en œuvre d’infrastructure de cloud (publique et privé). Il était un projet démarré depuis 2010 par Rackspace (Prestataire de service en cloud) et la NASA. Il est supporté par des distributions Linux dont Ubuntu et Red hat, conçu pour gérer les plateformes à grande échelle et à faible coût. Il est Compatible à la plateforme cloud Amazon Web services .Une forte communauté réactive qui maintient le projet visant à une standardisation du cloud (exportation des schémas et templates) sous licence Apache version2. OpenStack est un ensemble de logiciels open source qui permet le contrôle de systèmes de larges pools d’ordinateurs, d’espaces de stockage et de ressources réseaux à travers d’un Datacenter; tout en étant accessible au moyen d’une interface graphique web. 5.3.2 Les objectifs d’OpenStack:  Répondre au cloud privé et au cloud public  Offrir une architecture modulaire et riche  Offrir des outils robustes et longuement testés  Proposer un standard pour le cloud  Une solution participative et transparente  Offrir une plateforme de test (trystack.com) 5.3.3 Les composants d’OpenStack Le logiciel OpenStack regroupe tous les composants nécessaires à la création d’un environnement Cloud. OpenStack se compose de plusieurs éléments, dont les principaux sont les suivants :  Nova (Compute Service)  Keystone (Identité Service)  Glance (Image Service)  Neutron (Networking)  Cinder (Block Storage)  Swift (Object Storage)  Horizon (Dashboard) 5.3.3.1 Nova Nova est le service qui s’occupe de la gestion des machines virtuelles et de leur cycle de vie. Il sert aussi de liant avec les autres services pour ajouter, aux machines virtuelles qu’il gère, de la connectivité réseau et le support des images. Nova est le composant de calcul du Cloud OpenStack et le premier composant à avoir été intégré à OpenStack en 2010. C’est en quelque sorte la colonne vertébrale du Cloud et il se charge d’une tâche essentielle : la gestion des ordinateurs virtuels. Sur la durée, Nova s’est
  • 43. 31 améliorée et permet désormais de gérer des groupes entiers d’ordinateurs. Les ordinateurs virtuels sont reliés entre eux par une connexion synaptique. Le nombre de nœuds (aussi appelés synapses) est variable. Nova utilise principalement les hyperviseurs sans licence KVM intégrés dans le noyau Linux et XEN développé par l’Université de Cambridge comme base des machines virtuelles utilisées. 5.3.3.2 Keystone Keystone est responsable de l’autorisation et de l’authentification des utilisateurs (Identity). Le Cloud computing ne se contente pas de gérer des ordinateurs virtuels, il met en place des réseaux entiers. Dans ce contexte, l’identification des utilisateurs et la compartimentation des activités sont indispensables. Keystone accorde à chaque utilisateur du Cloud (appelé « mandant ») un accès individualisé. Cet accès recense également les droits du mandant. 5.3.3.3 Glance Glance met à disposition les « images », c’est-à-dire les images des supports de données des machines virtuelles. En outre, Glance peut également sauvegarder et restaurer les images. Il est possible de créer une sorte de bibliothèque avec les modèles des systèmes requis. Ceux-ci peuvent être recréés ultérieurement dans le réseau aussi souvent que nécessaire. Par ailleurs, Glance garantit la disponibilité, car les machines nécessaires peuvent être recréées à tout moment. 5.3.3.4 Neutron Neutron (anciennement Quantum) constitue l’infrastructure réseau virtuelle d’OpenStack. Il est ainsi possible de répartir des sous-réseaux, de gérer les adresses IP et de générer des réseaux virtuels (VLAN). Les VPN (Virtual Private Networking) sont également pris en charge par Neutron. Ce composant permet avant tout l’échange de données entre les éléments d’OpenStack, par exemple entre les machines virtuelles individuelles. Le pare-feu du réseau est également mis en place par Neutron. 5.3.3.5 Cinder Cinder est responsable de la mise à disposition d’un stockage permanent sous forme de stockage en bloc, un disque dur par exemple. Celui-ci est créé via Cinder grâce à la virtualisation. Il est ainsi possible d’adapter les volumes aux besoins (évolutivité). Le stockage en bloc Cinder se comporte comme un disque dur physique dans un ordinateur. La sécurisation des données est simple, car l’utilisateur peut accéder au disque dur via une interface centrale qui possède également une fonction snapshot (instantané). 5.3.3.6 Swift Swift est le stockage objet. Il peut connecter les stockages dans différents endroits afin de pouvoir utiliser des objets de données répartis aléatoirement sur des stockages adjacents. Cela crée, si nécessaire, de manière transparente une redondance puisque les objets peuvent être stockés physiquement plusieurs fois. En outre, les stockages mis à disposition par Swift peuvent être utilisés par Cinder ou Glance. Il est également possible, grâce à Ceph ou GlusterFS, d’utiliser la mémoire d’objet distribuée comme sous-structure.
  • 44. 32 5.3.3.7 Horizon Horizon est un tableau de bord. Autrement dit, Horizon est l’interface utilisateur graphique qui permet de gérer les composants regroupés dans OpenStack. Il est également utilisé pour gérer les utilisateurs. Le design et les fonctionnalités d’Horizon sont adaptables Figure 15:Les composants d’OpenStack [10] 5.3.4 Les avantages et inconvénients d’OpenStack Le Cloud OpenStack offre les avantages et inconvénients suivants : 5.3.5 Les avantages  Aucun coût de licence, « scalable » à souhait  Une utilisation qui nécessite peu de matériel, les services du cloud peuvent  généralement être utilisés avec n’importe quel appareil compatible avec Internet  Haute sécurité et fiabilité des données  Évolutivité du volume de stockage et de la puissance  Les services Cloud permettent un travail collaboratif  L’accès n’est pas limité géographiquement  Distribution et acceptation élevées  Normes unifiées[27] iuu 5.3.6 Inconvénients  Une gamme de fonctions très dynamique : OpenStack est une solution de Cloud computing ouverte et donc très dynamique. De nouvelles fonctions sont ajoutées régulièrement et certaines fonctions peuvent être supprimées.  Les logiciels en open source ne proposent en général pas d’assistance centralisée. Il existe de la documentation et une aide en ligne, mais la recherche peut être longue et fastidieuse. Contrairement aux solutions commerciales, il n’existe pas d’interlocuteur central.  KVM et XEN sont les principaux hyperviseurs pris en charge. Cela peut occasionner des problèmes lors de l’intégration d’autres solutions de virtualisation comme VMWare.
  • 45. 33 Les utilisateurs rapportent par exemple des problèmes lors de l’utilisation de VMWare avec OpenStack.[27]
  • 46. 34 6 CHAPITRE 6 : ETUDE COMPARATIVE DES OUTILS D’AUTOMATISATION DANS LE DEVOPS 6.1 Les outils d’automatisation dans le DevOps Aujourd’hui, le DevOps est une pratique incontournable pour les organisations. Ce mouvement est le résultat d’une étroite collaboration entre les équipes de développement et des opérations système. La culture DevOps n’a de cesse de prendre en importance. Mais pour atteindre une telle performance, il faut savoir se doter des outils DevOps appropriés. Pour vous aider à y voir plus clair, Gologic a regroupé les outils DevOps sous 9 grandes catégories. Il s’agit là d’un portrait à haut niveau. Chacune des catégories dans le présent texte mérite à elle seule un article complet. Pour configurer les logiciels, les équipes peuvent compter sur des outils fiables afin d’automatiser les actions sur les serveurs et gérer efficacement l’infrastructure des systèmes. Ces outils garantissent l’intégrité du développement et un meilleur contrôle des informations dans un environnement automatisé : 6.1.1 Jenkins C’est un logiciel open source d’intégration continue. Conçu pour réduire le temps nécessaire pour le développement logiciel, Jenkins automatise les tests et déploiements de nouveaux builds, ce qui rend plus rapide l’intégration de nouvelles fonctionnalités et mises à jour. Jenkins est compatible avec plusieurs autres outils DevOps et ses fonctionnalités peuvent être enrichies avec des plugins spécifiques. Jenkins est un serveur d'automatisation open source populaire pour une intégration continue, avec des centaines de plugins et une interface utilisateur conviviale. Il est destiné à automatiser toutes les tâches de construction et de déploiement pour les projets de développement logiciel de toute taille. Jenkins présente plusieurs avantages. Il s’agit d’un outil open source fédérant une vaste communauté proposant sans cesse de nouvelles améliorations et autres perfectionnements. Le logiciel est facile à installer, et plus de 1000 plugins sont disponibles. Si un plugin correspondant à vos besoins n’existe pas, vous pouvez le créer vous-même et le partager avec la communauté. Autre avantage : Jenkins est également gratuit. Enfin, en tant qu’outil développé avec Java, il peut être porté sur toutes les principales plateformes logicielles. Par ailleurs, Jenkins se distingue de la plupart des autres outils d’intégration continue par plusieurs points. Tout d’abord, Jenkins est adopté de manière bien plus large que ses concurrents. Au total, on dénombre 147 000 installations actives et plus d’un million d’utilisateurs autour du monde. L’autre force de Jenkins est son interconnexion avec plus de 1000 plugins permettant de l’intégrer à la plupart des outils de développement, de test et de déploiement. Jenkins est un outil open-source pour effectuer l'intégration continue et l'automatisation de la construction, il est écrit en Java. Il fournit des services d'intégration continue pour le développement de logiciels, qui peuvent être démarrés via une ligne de commande ou un serveur d'applications Web. Jenkins est distribué en tant qu'archive WAR et en tant que
  • 47. 35 packages d'installation pour les principaux systèmes d'exploitation, en tant que package Homebrew, en tant qu'image Docker et en tant que code source. Figure 16:Explication de l’architecture Jenkins [11] 6.1.2 Travis Travis est un service d'intégration continue hébergé utilisé pour créer et tester des projets logiciels hébergés sur GitHub et Bitbucket. Travis CI est l'un des outils d'intégration continue les plus puissants et les plus faciles à utiliser. Travis prend en charge de nombreux langages de programmation, il fournit donc des versions par défaut pour chaque langue. Il est également largement utilisé pour la livraison et l'automatisation. Travis peut tout gérer, des notifications à l'intégration avec Docker. Travis CI détecte automatiquement quand la validation a été faite et poussée vers un référentiel GitHub qui utilise Travis CI, et chaque fois que cela se produit, il essaiera de construire le projet et d'exécuter des tests. 6.1.3 Circle CI Circle CI est un outil basé sur le cloud qui automatise le processus d'intégration et de déploiement. Il se concentre également sur le test de chaque modification du code avant son déploiement, en utilisant un certain nombre de méthodes telles que les tests unitaires, les tests d'intégration et les tests fonctionnels. L'outil prend en charge les conteneurs, OSX, Linux et peut s'exécuter dans un cloud privé ou dans votre propre centre de données. 6.1.4 Bamboo Bamboo est un serveur d’intégration continue qui effectue tout au même endroit : construction automatique, test et versions. Il fonctionne très bien avec les logiciels JIRA et Bitbucket et supporte de nombreux langages et technologies tels que CodeDeply, Ducker, Git, SVN, Mercurial, AWS.
  • 48. 36 6.1.5 Gitlub CI GitLab CI est une composante du célèbre système de gestion des versions GitLab. En plus de l’intégration continue, GitLab offre un déploiement et une livraison continus. Tout comme pour Travis CI, la configuration de GitLab CI s’effectue via un fichier YAML. Par rapport à d’autres outils, le travail avec ce logiciel est également plus facile à d’autres égards. Jenkins, travis CI, Bamboo,Circle CI et Gitlab CI sont des outils d’automatisation et integration continu bien connu sur le marché, chacun d’entre eux présente ses avantages et inconvénients. Le tableau 2.2 permet de comparer entre ces outils, la comparaison se base sur :  le nombre de plugins,  la licence  prix de l’offre  Deploiement de cloud  Architecture  Haute disponibilite Tableau 5:Comparatif de quelques outils d'automatisation sur DevOps Jenkins Gitlub CI Bamboo Travis CI Circle CI déploiement continu supporte supporte supporte Ne supporte pas supporte licence MIT MIT gratuite MIT MIT Déploiement cloud Via plugins Via SDK Via SDK Via SDK Via SDK prix pour l’offre payante gratuite payant payant Payant payant Architecture Client-Only Client/Server Client/Server Client-Only Client Server Haute disponibilité oui non non Non Non 6.2 Etude comparative des outils d’automatisation de DevOps 6.2.1 Architecture technique de Jenkins Architecture de Jenkins-CI configurée en plate-forme informatique scientifique. Une installation typique de Jenkins-CI (illustrée au centre) intègre des ressources de calcul (rectangles bleus) et des données locales et distantes (dossiers de fichiers verts) et les rend accessibles aux utilisateurs finaux via un portail Web standard. Un modèle de configuration de projet Jenkins-CI définit les paramètres, l'environnement et les actions exécutées par une génération de projet et pilote la génération de l'interface utilisateur. Les plugins Jenkins-CI installés et les scripts et applications locaux s'exécutent sur le serveur Jenkins-CI et fournissent
  • 49. 37 un ensemble extensible de fonctions de gestion et de traitement des données. Les tâches de calcul parallèle hautes performances (telles que le traitement d'images) peuvent être facilement intégrées dans les projets Jenkins-CI à l'aide d'un accès SSH standard fourni par le plug-in SSH. Les magasins d'historique de construction des projets créent des métadonnées, des données d'analyse transitoires et des composants réutilisables tels que des pipelines et des listes d'images. Les partages de données des instruments stockent de grands ensembles de données/images, partagés entre plusieurs systèmes d'exploitation (Windows/Linux). Les partages de données d'instrument agissent comme le référentiel sécurisé final pour les données d'analyse importantes. Figure 17:Chaîne d’intégration continue à mettre en place 6.3 Etude détaillée de la solution proposée : Jenkins 6.3.1 Introduction C’est un logiciel open source d’intégration continue. Conçu pour réduire le temps nécessaire pour le développement logiciel, Jenkins automatise les tests et déploiements de nouveaux builds, ce qui rend plus rapide l’intégration de nouvelles fonctionnalités et mises à jour. Jenkins est compatible avec plusieurs autres outils DevOps et ses fonctionnalités peuvent être enrichies avec des plugins spécifiques.
  • 50. 38 6.3.2 Avantages C'est un outil open source avec un grand soutien de la communauté.  C'est facile d'installer.  Il dispose de plus de 1000 plugins pour faciliter votre travail. Si un plugin n'existe pas, vous pouvez le coder et le partager avec la communauté.  C'est gratuit.  Il est construit avec Java et, par conséquent, il est portable sur toutes les principales plates-formes  Option d'hébergement multiple  Plug-in et intégration  Soutien communautaire  Facile à déboguer 6.3.3 Fonctionnement de Jenkins Voici comment se déroule généralement le fonctionnement de Jenkins. Un développeur insère son morceau de code dans le répertoire du code source. Jenkins, de son côté, vérifie régulièrement le répertoire pour détecter d’éventuels changements. Lorsqu’un changement est détecté, Jenkins prépare un nouveau build. Si le build rencontre une erreur, l’équipe concernée est notifiée. Dans le cas contraire, le build est déployé sur le serveur test. Une fois le test effectué, Jenkins génère un feedback et notifie les développeurs au sujet du build et des résultats du test. Figure 18:Jenkins et fonctionnement [12]
  • 51. 39 QUATRIEME PARTIE : CONCEPTION ET MISE EN OEUVRE 7 CHAPITRE 7 : CONCEPTION DE LA SOLUTION 7.1 Architecture : Schéma logique et composants D’après le dimensionnement, nous proposons l’architecture suivante : Figure 19:Architecture proposée L’architecture de notre solution est composée de sept nœuds :  Nœud de contrôle (Controller node) et chaque nœud est composé des services suivants : service d’identité (keystone), service d’image (glance), service de télémétrie (ceilometer), service d’orchestration (Heat), service de stockage d’objet (swift), service de stockage en bloc (cinder) et tableau de bord qui s’appelle Horizon. Ce nœud est l’endroit où s’exécute la plupart des services OpenStack partagé et d’autres outils.  Douze (12) nœuds de calcul (compute node) dont quatre (4) nœuds de base et 8 pour la réplication. Chaque nœud est composé des services suivants : Nova-compute et Neutron. Ce nœud est l’endroit où les instances de VM (instance de calcul nova) sont installées. Ces dernières utilisent les cibles ISCSI provisionnées par le service de volume Cinder.  Un nœud de réseau (Network node) qui est composé des services suivants : Neutron server, Neutron DHCP Agent, Neutron open switch agent et neutron L3 agent. Il fournit des services de mise en réseau virtuels aux instances nova à l’aide des services réseau Neutron Layer 3 et DHCP.  Nœud Jenkins qui est composé de plugins et d’API pour gérer l’automatisation des déploiements et tests Dans un environnement OpenStack, le trafic réseau peut être divisé en trois réseaux.
  • 52. 40  Réseau de gestion / API (Management network) : Ce réseau est un réseau interne privé utilisé pour la communication entre tous les services OpenStack et pour la haute disponibilité. Tous les nœuds du déploiement doivent avoir une adresse IPv4 sur ce réseau.  Réseau de machine virtuelle (VM network) : Ce réseau est un interne, utilisé pour la communication entre les instances OpenStack (machines virtuelles), ainsi qu’entre les instances et les nœuds de réseau pour fournir des connexions entrantes et sortantes au réseau public.  Réseau externe : le nœud de réseau connecte la machine virtuelle au monde externe à l’aide externe. Le nœud de contrôleur expose l’OpenStack-Dashboard sur le réseau externe. 7.2 Architecture : Fonctionnement détaillé avec Jenkins et OpenStack Un développeur insère son morceau de code dans le répertoire du code source. Jenkins, de son côté, vérifie régulièrement le répertoire pour détecter d’éventuels changements. Lorsqu’un changement est détecté, Jenkins prépare un nouveau build. Si le build rencontre une erreur, l’équipe concernée est notifiée. Dans le cas contraire, le build est déployé sur le serveur test qui est dans l’OpenStack. Une fois le test effectué, Jenkins génère un feedback et notifie les développeurs au sujet du build et des résultats du test. 7.3 Les besoins spécifiques 7.3.1 Identification de besoins Notre nuage privé s’adresse essentiellement à deux types d’utilisateurs : l’administrateur et les membres des projets. Cette première partie, sera pour énoncer et analyser les différents besoins fonctionnels et non fonctionnels du nuage.