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.
41
7.3.2 Besoins fonctionnels
Cette partie, est pour détailler l’ensemble des fonctionnalités que le nuage, à travers son portail,
doit offrir aux utilisateurs. En effet, le système à réaliser doit répondre aux besoins fonctionnels
suivants.
7.3.3 Gestion d’images
On parle d’images disques stockées par le service Glance. L’utilisateur pourrait consulter la
liste des images autorisées pour les projets, les éditer. Aussi il sera possible de lancer de
nouvelles instances de cette image, créer une nouvelle ou supprimer une existante.
7.3.4 Gestion d’instances
Une instance est une machine virtuelle en cours d’exécution ou dans un état connu comme «
suspendue » qui peut être utilisé comme un serveur matériel. L’utilisateur pourrait consulter la
liste d’instances de machines virtuelles actuelles plus quelques informations globales comme
le projet auquel elles appartiennent, le serveur hôte, l’adresse IP, la taille, le statut et les actions
en cours. Il aurait aussi les possibilités d’éditer, mettre fin, pause, redémarrer ou supprimer une
instance. Aussi Il pourrait se connecter à la console VNC de l’instance ou créer une nouvelle.
7.3.5 Gestion de volumes
Le nuage permettrait à l’utilisateur de consulter la liste des volumes disques virtuels existants,
la création d’un nouveau volume et la modification d’un ancien.
7.3.6 Gestion de flavors
Un flavors est une configuration de matériel disponible dans un serveur. Chaque Flavor
possède une combinaison unique d’espace disque et la capacité de mémoire. L’utilisateur
pourrait consulter la liste des types d’instances disponibles, leurs spécifications en nombre de
CPUs, mémoire, espace disque et créer de nouvelles définitions d’instance.
7.3.7 Gestion de projets
Un projet est un groupement logique des utilisateurs au sein de Nova, utilisé pour définir les
limites des ressources pour ce projet et l’accès aux images des machines virtuelles. Il serait
possible de consulter les projets existants et leur statut et de créer de nouveaux projets.
7.3.8 Gestion d’utilisateurs
L’utilisateur aurait la possibilité de consulter la liste d’utilisateurs enregistrés, avec la possibilité
d’ajouter ou d’éditer les détails mais pas d’ajouter l’utilisateur à plusieurs projets.
7.3.9 Gestion de la sécurité et de l’accès
L’utilisateur pourrait consulter les adresses IP disponibles pour connecter les instances au
réseau public avec la possibilité de création, les groupes de règles de pare-feu et leur interface
d’édition et enfin la liste des clés SSH avec l’import ou la création de certificat.
7.4 Besoins non fonctionnels
7.4.1 Simplicité d’un service à la demande
Un utilisateur peut de manière unilatérale, immédiatement et généralement sans intervention
humaine, avoir à sa disposition les ressources informatiques dont il a besoin (temps de calcul
de serveurs, capacité de stockage, etc.)
42
7.4.2 Extrême flexibilité
Les ressources mises à disposition ont une capacité d’adaptation forte et rapide à une demande
d’évolution, généralement de manière transparente pour l’utilisateur.
7.4.3 Accès « léger »
L’accès aux ressources ne nécessite pas d’équipement ou de logiciel propriétaire. Ilse fait au
travers d’applications facilement disponibles (parfois libres), généralement depuis un simple
navigateur Internet.
7.4.4 Sûreté
Un évènement indésirable ne devrait pas se produire pendant l’accès d’une machine virtuelle
aux ressources informatiques.
7.4.5 Vivacité
Une action souhaitée par une machine virtuelle arrivera nécessairement à être réalisée pour
garantir la progression du programme.
7.5 Identifications des acteurs
Cette phase a pour objectif de décrire le comportement attendu de l’application. Pour cela
l’utilisation du diagramme des cas d’utilisation qui représente un élément essentiel de la
modélisation orientée objet assure des bonnes résultats .Elle permet de modéliser les
fonctionnalités de l’application de point de vue besoins utilisateur. Elle sert aussi à définir
et à modéliser le produit à développer.
7.6 Les acteurs du système
Les acteurs qui manipuleront notre application sont :
– L’administrateur : Il possèderait les droits administratifs qui lui permettrait de
contrôler tout le nuage et lui permettrait d’accéder à l’interface d’administration sur le
portail «Dashboard» ainsi qu’à tous les autres projets.
– Membre du projet du «Membre»: C’est un membre d’un ou de plusieurs projets qui
sont propres au Membre. Il n’aurait accès qu’à son (ses) projet(s).Par la suite les
principaux cas d’utilisations qui assurent toutes les tâches exécutées par le système
seront mis en place
Authentification
Avant l’accès au nuage, l’utilisateur (administrateur, membre) doit s’authentifier avec la saisie
de son login, et son mot de passe. Après vérification, si l’utilisateur est accepté, il aura accès au
nuage et selon son rôle des projets et des fonctionnalités s’activeront sinon on aura un message
d’erreur.
7.7 Le cas d’utilisation de l’administrateur
La figure 3.1 présente le diagramme de cas d’utilisation de l’administrateur du nuage
43
Figure 20:Diagramme des cas d’utilisation pour un administrateur
Etant donné que l’administrateur a le droit de consulter et de gérer la totalité du nuage, il serait
possible pour lui de :
Consulter l’état du nuage
L’administrateur pourrait consulter usage des serveurs par projet, utilisation actuelle en nombre
de CPU virtuels, RAM et Disques puis compteur en CPU et espace disque(GB) par heures.
Gérer les instances
L’administrateur pourrait gérer les instances existantes sur le nuage, il aurait la possibilité de :
- Consulter la liste des instances existantes et leurs détails.sjh
- Editer les détails d’une instance
- La Supprimer
- La suspendre
- La redémarrer
- Connecter à sa console VNC
Consulter la liste des services et leurs détails
Liste des services (Volume, Glance, Nova, Keystone...) activés, le serveur hôte et leurs statut
(activé/désactivé).
Gérer les Flavors
L’administrateur pourrait :
- Consulter la liste de Flavors actuellement disponibles qui pourraient être utilisés pour
lancer une instance.
44
- Créer des Flavors personnalisées
- Editer des Flavors.
- Supprimer des Flavors existants.
Gérer les images
L’administrateur aurait la possibilité de :
- Consulter la liste des images disponibles.
- Editer les détails d’une image (nom, noyau ID, Ramdisk ID, architecture, format, public
ou privé).
- Supprimer des images si elles ne sont plus nécessaires
Gérer les projets
L’administrateur aurait la possibilité de gérer les projets existants sur le nuage, ainsi il pourrait :
- Consulter la liste des projets disponibles (locataires) qui ont été créés, leurs détails et
leurs utilisations.
- Créer de nouveaux projets.
- Affecter des utilisateurs à un projet
- Modifier les détails d’un projet
- Supprimer un projet
Gérer les utilisateurs
L’administrateur pourrait gérer les comptes utilisateurs existants sur le nuage, ainsi il pourrait:
- Consulter la liste des utilisateurs qui ont été créés et leurs détails.
- Créer de nouveaux utilisateurs.
- Supprimer des utilisateurs existants.
7.8 Le cas d’utilisateur d’un utilisateur
La figure qui suivant présente le diagramme de cas d’utilisation d’un utilisateur d’un projet
existant dans le nuage.
45
Figure 21:Diagramme des cas d’utilisation pour un membre d’un projet
Un Utilisateur ne pourrait consulter et gérer que les ressources des projets auxquels il appartient,
ainsi il serait possible pour lui de :
 Authentification
L’utilisateur doit se connecter avec la saisie de son login et son mot de passe. Apres
vérification si l’utilisateur est accepté il aura accès au cloud et son rôle, des projets et
des fonctionnalités s’activeront sinon il aura un message d’erreur.
 Gérer les instances d’un projet :
 Instancier des machines virtuelles
L’utilisateur aura la possibilité de lancer une instance après avoir consulter la
liste des machines disponible.
 Redémarrer une instance, suspendre une VM, stocker les données et
exécuter les instances
Il aura aussi la possibilité de redémarrer l’instance créé
 Se connecter à la console VNC d’une instance
L’utilisateur peut accéder à sa machine virtuelle lancée et pourra travailler.
 Consulter les caractéristiques d’une VM
Apres authentification l’utilisateur aura les spécifications des VM (image, taille
disque, CPU etc.).
46
7.9 Diagrammes d’activités
Le diagramme d'activité UML est un cas particulier d'un diagramme d'états dans lequel
tous les états sont des États d'action et les transitions sont déclenchées par l'achèvement
des actions dans l'état de la source. Il permet de décrire le comportement interne d'une
méthode et de représenter un flux entraîné par actions générées en interne.
Ce paragraphe sera consacré à la présentation de quelques diagrammes d’activités les
plus significatifs.
7.9.1 Diagramme d’activité globale
Figure 22:Diagramme d’activé globale du système
Dans notre cas, Nous allons d’abord vérifier le type d’utilisateur au niveau de Keystone.
Si c’est un membre, il va accéder au Dashboard membre et il va pouvoir consulter les
caractéristiques d’une VM. De plus il va gérer ses instances :
 Redémarrer ou suspendre une instance
 Lancer une instance à l’aide du service nova
 Stocker les données d’une VM
 Se connecter à la console VNC d’une instance
47
Et si c’est un administrateur, il va pouvoir ajouter des utilisateurs et gérer les instances grâce
au service compute.
Si ce n’est ni membre ni administrateur il ne pourra pas se connecter
7.9.2 Diagramme d’activité pour la création d’une instance
Figure 23:Diagramme d’activité pour la création d’une instance
Nous allons vérifier le type d’utilisateur au niveau de Keystone, s’il s’agit d’un administrateur,
il se connectera au Dashboard administrateur et garce au système Nova, il va pouvoir :
 Ajouter des images.
o Démarrer une instance
 Connecter à la console VNC
 Configurer l’instance
48
7.10 Diagrammes de séquences système
Avec les diagrammes de séquences système, l’UML fournit un moyen graphique pour
représenter les interactions entre un acteur et le système au cours de l’exécution du cas
d’utilisation.
Ce paragraphe, sera consacré pour présenter quelques diagrammes de séquences les plus
significatifs.
7.10.1 Diagramme de séquences pour le scénario d’authentification
Acteur : Un membre.
Pré conditions : Le membre, doit avoir un compte valide dans le système.
Déclencheur : Un membre veut consulter l’état du projet auquel il appartient.
Description : Ce cas d’utilisation permet à un membre du projet de s’identifier pour
accéder au nuage à travers le Dashboard.
Scénario principal :
– Un membre accède au Dashboard
– Une interface d’authentification s’affiche.
– Le membre entre ses données (login, mot de passe) et tape le bouton « valider ».
– Les différents services propres au nuage s’affichent Scénario alternatif :
– Les données saisies sont erronées
– Un message d’erreur s’affiche
49
Figure 24:Diagramme de séquences pour le scenario d’authentification
7.10.2 Diagramme de séquences pour le scenario de création d’un nouveau projet par
l’administrateur
Acteur : Administrateur.
Pré conditions : L’administrateur a passé l’étape d’authentification avec succès.
Déclencheur : L’administrateur veut créer un nouveau projet.
Description : Ce cas d’utilisation permet à l’administrateur de créer un nouveau projet dans le
nuage et l’accorder aux utilisateurs.
Scénario principal :
– Connecter au nuage en tant qu’administrateur.
– Sélectionner le lien Projets dans le menu.
– Choisir de créer un nouveau projet en cliquant sur un bouton « créer ».
– Remplir tous les champs et affecter des membres au projet.
– Valider l’opération.
– Le nouveau projet est ajouté à la liste des projets Scénario alternatif :
– Des champs obligatoires ne sont pas été remplis
50
– Un message d’erreur s’affiche
Figure 25:Diagramme de séquences pour le scenario de création un nouveau projet par
l’administrateur
7.10.3 Diagramme de séquences pour le scenario de création d’une instance d’une machine
virtuelle
Acteur : Membre.
Pré conditions : Le membre a passé l’étape d’authentification avec succès.
Déclencheur : Un membre d’un projet veut créer une nouvelle instance d‟une machine virtuelle
déjà existante dans le nuage.
Description : Ce cas d’utilisation permet à un membre d’un projet de créer une nouvelle instance
d’une machine virtuelle du nuage.
Scénario principal :
– Connecter au nuage en tant que membre.
– Choisir le projet dans lequel la machine existe.
51
– Sélectionner le lien « Images et snapshots » dans le menu.
– Choisir la machine cible et choisir de créer une nouvelle instance.
– Remplir tous les champs.
– Valider l’opération.
– Une nouvelle instance est ajoutée à la liste des instances.
Scénario alternatif :
– Des champs obligatoires ne sont pas été remplis
– Un message d’erreur s’affiche.
Figure 26:Diagramme de séquences pour le scenario de création un nouveau projet par
l’administrateur
8 CHAPITRE 8 : MISE EN ŒUVRE, TESTS ET VALIDATION
8.1 Maquette de test
52
Figure 27:Architecture proposée prototype
Dans la maquette de test nous avons :
 Un serveur de contrôle (node-controller)
 Deux serveurs de calcul (node-compute)
 Un serveur de réseau (node-network)
 Une VM contenant Jenkins
 Switch pour l’accès réseau au réseau
Tous ces serveurs sont virtualisés au niveau de l’environnement de virtualisation Proxmox VE.
Le cluster d’OpenStack est constitué de trois (3) nœuds de base : Controller, Compute et
network.
Pour la mise en place de l’environnement virtualisé, nous avons utilisé deux (2) serveurs
physiques dont les caractéristiques sont les suivantes :
 Serveur physique 1:
 Processeurs : 16 CPU(s)
 Mémoire (RAM) :44 GiB
 Disque (Storage) :67 GiB
 Iso proxmox Virtual Environnement (PVE) : version 5.4-1
 Système d’exploitation : CentOS 7
 Serveur physique 2 :
 Processeurs : 24 CPU(s)
 Mémoire (RAM) :98 GiB
 Disque (storage) :16 GiB
 Iso proxmox Virtual Environnement (PVE) : version 5.4-1
 Système d’exploitation : CentOS 7
53
8.2 Mise en place de proxmox Virtual Environnement
Dans cette partie nous procéderons à l’installation de notre outil de virtualisation (Proxmox VE)
sur nos deux serveurs physiques. Ces deux serveurs proxmox seront mis en cluster dans le but
d’augmenter les ressources. Sur l’interface Web, on peut directement charger les iso dont on
aura besoin pour la virtualisation complète et les Template pour les conteneurs. Pour notre cas
nous avons ajoute l’image centos 7
Apres installation nous avons cette interface :
Figure 28:Interface de proxmox
8.3 Déploiement de OpenStack dans un environnement cluster
Dans cette mise en œuvre nous avons créé trois (3) machines virtuelles :
VM1 : c'est sur cette machine que sera installé le contrôleur OpenStack. Ses caractéristiques
sont les suivantes :
 Mémoire RAM : 4Go ;
 Nombre de processeurs : 2 ;
 Disque dur : 30Go ;
 Nom d’hôte = Controller ;
 Interface réseau : eth0 ;
 Adresse IP = 10.153.4.134 ;
 Système d’exploitation = CentOS 7.x ;
Les services suivants seront installés dans le nœud Controller :
1. Keystone
2. Glance
3. Swift
4. Cinder
5. Horizon
6. Nova shcheduler
54
7. Nova-conductor
8. Neutron
9. Nova novncproxy
10. Novnc
11. Nova api
VM2 et VM3 : c'est sur ces machines que seront installés les nœuds de calcul OpenStack.
Ses caractéristiques sont les suivantes :
 Mémoire RAM : 4Go ;
 Nombre de processeurs : 2 ;
 Disque dur : 50Go ;
 Nom d’hôte = compute01 et compute02 ;
 Interface réseau : eth0 ;
 Adresse IP = 10.153.4.135, 10.153.4.136 ;
 Système d’exploitation = CentOS 7.x ;
Les services suivants seront installés dans le nœud compute
1. Nova Compute
2. Neutron – Openvswitch Agent
VM4 : c'est sur cette machine que sera installé le nœud de réseau OpenStack. Ses
caractéristiques sont les suivantes :
 Mémoire RAM : 4Go ;
 Nombre de processeurs : 2 ;
 Disque dur : 20Go ;
 Nom d’hôte = network ;
 Interface réseau : eth0 ;
 Adresse IP = 10.153.4.134 ;
 Système d’exploitation = CentOS 7.x ;
Les services suivants seront installés dans le nœud network :
1. Neutron Server
2. Neutron DHCP agent
3. Neutron- Openswitch agent
4. Neutron L3 agent
a. Installation et la configuration d’OpenStack en cluster.
55
Mettez à jour les nœuds à l’aide de la commande ci-dessous.
 Etape 1
Utilisez la commande ci-dessous sur les trois nœuds pour mettre à jour tous les packages
installés.
 Étape : 2
Mettre à jour le fichier /etc/hosts et le nom d’hôte
Définissez le nom d’hôte sur les trois nœuds à l’aide de la commande ci-dessous :
ET voilà pour tous les trois hostname
Mettez à jour le fichier /etc/hosts si votre DNS local n’est pas configuré.
 Étape : 3 Désactivez SELinux et Network Manager sur les trois nœuds.
Utilisez la commande ci-dessous pour désactiver SELinux sur les trois nœuds.
Désactivé SELinux définitivement en changeant le paramètre 'SELINUX=permissive' dans le
fichier '/etc/sysconfig/selinux'
Autoriser l’accès ssh sur tous les nœuds en éditant le fichier /etc/ssh/sshd_config
# yum -y update & reboot
# hostnamectl set-name « new_hostname »
10.153.4 .134 controller
10.153.4 .134 compute
10.153.4. 134 network
computee
# setenforce 0
56
Redémarrer le service avec la commande
Utilisez les commandes ci-dessous pour désactiver Network Manager sur les trois nœuds.
 Étape : 4 Définissez l’authentification sans mot de passe du nœud du contrôleur au nœud
de calcul et de réseau
Exécutez les commandes ci-dessous à partir du nœud Contrôleur.
Nous copions la clé ssh sur tous les autres nœuds pour pouvoir permettre l’authentification sans
mot de passe
Maintenant vous pouvais vérifier
 Étape : 5 Activer le référentiel RDO et installer l’utilitaire packtack
57
 Étape : 6 Générer et personnaliser le fichier de réponses
Utilisez la commande ci-dessous pour générer un fichier de réponses.
Modifiez le fichier de réponses et spécifiez l’adresse IP du contrôleur, du calcul et du nœud
réseau. En dehors de cela, spécifiez également les mots de passe de différents services et
désactivez les composants tels que la version de démonstration et Ceilometer. En éditant le
fichier /root/answer.txt
 Étape : 7 Démarrez l’installation à l’aide de la commande packstack.
Une fois l’installation terminée avec succès, nous obtiendrons ci-dessous :
CONFIG_CONTROLLER_HOST=10.153.4.134
CONFIG_COMPUTE_HOSTS=10.153.4.135, 10.153.4.136
CONFIG_NETWORK_HOSTS=10.153.4.137
CONFIG_PROVISION_DEMO=n
CONFIG_CEILOMETER_INSTALL=n
CONFIG_HORIZON_SSL=y
CONFIG_KEYSTONE_ADMIN_PW=passer
CONFIG_NEUTRON_OVS_BRIDGE_IFACES==br-ex:eth0
computee
58
Après installation et configuration des services, voici le tableau de bord auquel nous allons nous
connecter.
Pour accéder sur cette interface nous allons mettre https://10.153.4.134/dashboard et une fois
sur l’interface nous avons comme login admin et mot de pass passer
59
Figure 29:Interface de connexion d’OpenStack
Apres l’installation d’OpenStack nous avons crée une instance
Dr. Bassirou KASSE
Figure 30:Creation d'instance
Après l’installation, une nouvelle interface 'br-ex' sera créée dans le nœud réseau.
A l’aide de la commande ifconfig -a vous pouvez voir l’interface générer
60
Ajoutez une interface réseau (enp0s3 ou eth0 ou peut être un autre nom) au pont Open vSwitch
'br-ex' en tant que port et attribuez l’adresse IP de 'enp0s3' à 'br-ex'
Dans le fichier /etc/sysconfig/network-scripts/ nous copions ifcfg-eth0 dans ifcfg-br-ex, après
nous éditons le fichier ifcfg-eth0 en ajoutant ce qui suit :
Vous ferez de même avec le fichier ifcfg-br-ex en ajoutant ce qui suis :
Redémarrez le service réseau à l’aide de la commande ci-dessous.
8.4 Installation et configuration de la solution proposée : Jenkins
a. Prérequis
 Mémoire RAM : 4Go ;
 Nombre de processeurs : 2 ;
 Disque dur : 50Go ;
 Nom d’hôte = Jenkins ;
 Interface réseau : eth0 ;
 Adresse IP = 10.153.4.29 ;
 Système d’exploitation = CentOS 7.x ;
DEVICE=br-ex
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=static
IPADDR=10.153.4.182
NETMASK=255.255.255.0
GATEWAY=10.153.4.254
ONBOOT=yes
# systemectl restart network
61
b. Installation Java
yum install java-11-openjdk.x86_64 -y
Pour vérifier la version du java
c. Installation Jenkins
62
Après installation et configuration des services, voici le tableau de bord auquel nous allons nous
connecter.
Pour accéder sur cette interface nous allons mettre http://10.153.4.29:8080 et une fois sur
l’interface nous avons comme login user et mot de pass passer
Figure 31:Interface de connexion de Jenkins
63
Figure 32:Tableau de bord de Jenkins
8.4.1 Intégration de Jenkins et OpenStack
Openstack Heat est un plugin Jenkins qui permet d'interagir avec OpenStack en utilisant l'API
Heat.
Lorsque vous configurez un projet, vous pouvez ajouter un lecteur HOT de génération par
étapes. À ce stade, vous pouvez choisir un fichier tenant/yaml/env dans différentes listes.
Lorsqu'une sélection est faite, le plugin génère automatiquement l'interface à partir des
différents paramètres (fichier yaml, fichier env...) et vous pouvez paramétrer les interactions
thermiques. Vous pouvez créer différentes étapes de lecteur HOT et échanger des données entre
elles.
Lorsque le travail est lancé, le plugin appelle OpenStack via l'API Heat avec la configuration
et la console Jenkins affiche les sorties de l'interaction.
8.4.1.1 Etape1 : Téléchargement du plugin Openstack Heat
Pour cette partie nous allons télécharger le plugin OpenStack Heat sur Jenkins
64
Figure 33:Installation du plugin
8.4.1.2 Etape2 : Installation du plugin
Apres avoir téléchargé le plugin nous allons l’installer pour assurer la connexion entre le
Jenkins et l’OpenStack
Figure 34:Installation et mise à jour du plugin openstack
8.4.1.3 Configuration de OpenStack et Jenkins
Dans cette étape nous allons configurer l’OpenStack en mettant l’utilisateur de OpenStack, le
mot de pass de OpenStack et son l’url pour assurer la connexion
65
8.4.2 Test et validation sur la création de job
Pour la première fois nous devons créer un job qui permet d’accéder au répertoire du serveur
git
Figure 35:Creation de Job
66
Figure 36:Les Jobs
8.4.2.1 Test sur le dépôt de code dans git
Pour cette partie nous avons mis un morceau de code sur git et après nous essayons de changer
ou faire une modification sur code
Figure 37:Depot code html
8.4.2.2 Test sur l’automatisation
Apres avoir fait des modifications sur le code nous avons vu que le Jenkins réalise des builds
automatiquement.
Voici les builds
67
68
CONCLUSION GENERALE ET PERSPECTIVES
Le Cloud Computing est un domaine en plein essor qui répond à un grand nombre de besoins
des entreprises. L’investissement dans ce domaine attire donc de plus en plus les ingénieurs
réseaux qui ne cessent de proposer des solutions de Cloud variés en qualité de service variable
et rentable.
La Section Informatique de la Faculté des Sciences et Techniques, de l’Université Cheikh Anta
Diop de Dakar, forme des étudiants pour des masters en informatiques. Cependant les étudiants
sont confrontés à des problèmes de ressources pour faire leurs TP et projets. Ils utilisent des
simulateurs et émulateurs et ces derniers fournis des ressources, performances et fonctionnalité
limitées. Pour résoudre les problèmes de manque de ressources la section informatique met en
place une infrastructure de Datacenter privée avec OpenStack. Cette dernière offre une
architecture riche, modulaire et extensible. OpenStack prend également plusieurs types
d’hyperviseurs. Il permet aussi d’assurer l’interopérabilité coté réseau.
Ce projet est global dont nous participons au déploiement de la plateforme de base et se
focalisant sur l’automatisation des déploiements et tests.
Dans ce mémoire nous avons mis en place une infrastructure de Datacenter privé avec
OpenStack suivi d’une automatisation des déploiements et tests.
Après avoir fait un état de l’art sur la virtualisations le cloud le DevOps l’automatisation et
donner les différents outils d’automatisation, nous avons proposé une solution. Ensuite, nous
avons proposé une nouvelle architecture intégrant la solution. Nous terminons par
l’automatisation sur la nouvelle architecture proposée.
Nous envisagerons de déployer notre solution à la section informatique et faire une étude de
performance de notre modèle en fonction des critères d’optimisations, pour la continuité de ce
travail.
Nous prévoyons d’intégrer une interface frontale accessible via le navigateur, permettant aux
étudiants d’accéder faire leur déploiement, à travers une interface web.
69
Bibliographie
[1] Renaud Bonnet, Livre blanc Orchestration Définitions, Cas d’usage, Choix et déploiement,
Sécurité, Retours d’Expérience Réalisé par le Groupe de Travail Orchestration Automatisation
du CRiP Pilote : Hugues Fondeux Assistance éditoriale, Juin 2013
[2] Noelle Merle, Thèse : Architecture pour les systèmes de déploiement logiciel à grande
échelle : prise en compte des concepts d’entreprise et de stratégie, Jan 2006
[3] Achraf Labidi, Mémoire : Partage Efficace Des Ressources De Calcul Dans Le Nuage
Informatique, Montréal Le 11 Juillet 2017
[4] Mme Mame Fatou NIANG, mémoire : Etude et mise en place d’un cloud privé à l’ADIE,
Université Cheikh Anta Diop, Mars 2018
[5] Hannachi Slim, Rapport de stage : Etude et Mise en Place d’une Solution Cloud Computing
Privé, au sein de Tunisie Télécom
[6] Antoine LE MORVAN, Mémoire : Conception et réalisation d’une plateforme de cloud
privé, au profit de la formation des administrateurs systèmes de l’École des Transmissions
(ETRS)
70
Webographie
[1] https://www-igm.univ-mlv.fr/~dr/XPOSE2008/virtualisation/techniques.html consulté le
12/09/2021
[2] https://openclassrooms.com/fr/courses/2035766-optimisez-votre-deploiement-en-creant-des-
conteneurs-avec-docker/6211306-decouvrez-les-conteneurs consulté le 12/09/2021
[3] https://itsocial.fr/enjeux-it/enjeux-cloud-computing/cloud-public-prive-hybride/docker-
conteneurs-larme-fatale%E2%80%89/
[4] https://www.socialnetlink.org/2016/04/09/le-cloud-computing-avantages-et-inconvenients/
consulté le 12/10/2021
[5] https://www.hebergeurcloud.com/cloud-prive/ consulté le 12/10/2021
[6] https://www.alibabacloud.com/fr/knowledge/what-is-hybrid-cloud consulté le 12/10/2021
[7]
[8] https://www.syloe.com/expert-devops-automatisation-deploiements/ consulté le 12/10/2021
[9] https://fr.slideshare.net/AhmedSlim4/mise-en-place-dune-infrastructure-base-sur-openstack
consulté le 12/10/2021
[10 ] https://www.syloe.com/les-avantages-et-les-topologies-du-cloud-computing/ consulté le
12/10/2021
[11] https://www.devopsschool.com/blog/jenkins-architecture-explained/ consulté le
12/10/2021
[12] https://www.disko.fr/reflexions/technique/integration-continue-dun-projet-php-avec-
jenkinssonarqube/ consulté le 12/10/2021
[13]https://www.lemagit.fr/conseil/OpenStack-des-avantages-mais-il-manque-encore-
lautomatisation consulté le 12/10/2021
[14]https://www.itnation.lu/educloud-un-cloud-prive-pour-leducation/ consulté le 12/10/2021
[15]https://www.syloe.com/glossaire/automatisation-des-deploiements/ consulté le 12/01/2022
[16]https://www.letslearntech.com/how-to-install-jenkins-in-centos-7-8/consultéle 12/02/2022
[17]https://www.looklinux.com/install-jenkins-centos-7/ consulté le 12/02/2022
[18]https://getc.com.tn/le-cloud-une-opportunite-pour-les-entreprises-tunisiennes/ consulté le
12/10/2021
[19]https://fr.wikipedia.org/wiki/OpenStack consulté le 12/10/2021
[20]https://www.researchgate.net/figure/META-pipe-deployment-End-users-run-analyses-
using-the-META-pipe-web-app-The-web-app-is_fig2_321370814 consulté le 12/10/2021
71
[21]https://www.slideshare.net/emaganap/openstack-opencontrail-in-production consulté le
12/10/2021
[22]https://www.ibm.com/blogs/cloud-computing/2014/09/23/creating-continuous-
integration-environment-openstack/ consulté le 12/10/2021
[23]https://docplayer.fr/82876003-Mise-en-place-d-un-pipeline-d-integration-et-de-
deploiement-continus-a-base-de-docker.html consulté le 12/10/2021
[24]https://docplayer.fr/155435317-Tp-devops-chaine-de-deploiement-docker-jenkins-etc-
introduction-une-chaine-de-deploiement-automatise-pour-les-developpeurs.html consulté le
12/02/2022
[25]https://ichi.pro/fr/jenkins-cas-d-utilisation-164429940932150 consulté le 12/02/2022
[24] https://d3vpasha.wordpress.com/2019/01/05/jenkins-les-pipelines-4-6/
[26] https://blog.myagilepartner.fr/index.php/2019/01/23/il-etait-une-fois-devops-origines-du-
devops/
[27] https://www.ionos.fr/digitalguide/serveur/outils/quest-openstack/

Memoire_Fallou_Mbengue.pdf

  • 1.
    RÉPUBLIQUE DU SÉNÉGAL UnPeuple – 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 amouret 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'augmentationcontinuelle 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 costof 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 typesde 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.4Bamboo .....................................................................................................................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 Figure1: 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 Tableau1: 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 Objectifgé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 reposesur 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 entreles 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 virtuellesindividuelles à 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éfiniscomme 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 formed'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 (INFRASTRUCTUREAS 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 desderniè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 etoutils 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 pratiquesde 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 principed'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 deNova  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 deSwift [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 leshyperviseurs 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 lesenfermerait 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 laportabilité, 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éede 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 permetdé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 estun 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 rapportentpar 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 pourles 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 GitLabCI 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 extensiblede 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 unoutil 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 degestion / 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.
  • 53.
    41 7.3.2 Besoins fonctionnels Cettepartie, est pour détailler l’ensemble des fonctionnalités que le nuage, à travers son portail, doit offrir aux utilisateurs. En effet, le système à réaliser doit répondre aux besoins fonctionnels suivants. 7.3.3 Gestion d’images On parle d’images disques stockées par le service Glance. L’utilisateur pourrait consulter la liste des images autorisées pour les projets, les éditer. Aussi il sera possible de lancer de nouvelles instances de cette image, créer une nouvelle ou supprimer une existante. 7.3.4 Gestion d’instances Une instance est une machine virtuelle en cours d’exécution ou dans un état connu comme « suspendue » qui peut être utilisé comme un serveur matériel. L’utilisateur pourrait consulter la liste d’instances de machines virtuelles actuelles plus quelques informations globales comme le projet auquel elles appartiennent, le serveur hôte, l’adresse IP, la taille, le statut et les actions en cours. Il aurait aussi les possibilités d’éditer, mettre fin, pause, redémarrer ou supprimer une instance. Aussi Il pourrait se connecter à la console VNC de l’instance ou créer une nouvelle. 7.3.5 Gestion de volumes Le nuage permettrait à l’utilisateur de consulter la liste des volumes disques virtuels existants, la création d’un nouveau volume et la modification d’un ancien. 7.3.6 Gestion de flavors Un flavors est une configuration de matériel disponible dans un serveur. Chaque Flavor possède une combinaison unique d’espace disque et la capacité de mémoire. L’utilisateur pourrait consulter la liste des types d’instances disponibles, leurs spécifications en nombre de CPUs, mémoire, espace disque et créer de nouvelles définitions d’instance. 7.3.7 Gestion de projets Un projet est un groupement logique des utilisateurs au sein de Nova, utilisé pour définir les limites des ressources pour ce projet et l’accès aux images des machines virtuelles. Il serait possible de consulter les projets existants et leur statut et de créer de nouveaux projets. 7.3.8 Gestion d’utilisateurs L’utilisateur aurait la possibilité de consulter la liste d’utilisateurs enregistrés, avec la possibilité d’ajouter ou d’éditer les détails mais pas d’ajouter l’utilisateur à plusieurs projets. 7.3.9 Gestion de la sécurité et de l’accès L’utilisateur pourrait consulter les adresses IP disponibles pour connecter les instances au réseau public avec la possibilité de création, les groupes de règles de pare-feu et leur interface d’édition et enfin la liste des clés SSH avec l’import ou la création de certificat. 7.4 Besoins non fonctionnels 7.4.1 Simplicité d’un service à la demande Un utilisateur peut de manière unilatérale, immédiatement et généralement sans intervention humaine, avoir à sa disposition les ressources informatiques dont il a besoin (temps de calcul de serveurs, capacité de stockage, etc.)
  • 54.
    42 7.4.2 Extrême flexibilité Lesressources mises à disposition ont une capacité d’adaptation forte et rapide à une demande d’évolution, généralement de manière transparente pour l’utilisateur. 7.4.3 Accès « léger » L’accès aux ressources ne nécessite pas d’équipement ou de logiciel propriétaire. Ilse fait au travers d’applications facilement disponibles (parfois libres), généralement depuis un simple navigateur Internet. 7.4.4 Sûreté Un évènement indésirable ne devrait pas se produire pendant l’accès d’une machine virtuelle aux ressources informatiques. 7.4.5 Vivacité Une action souhaitée par une machine virtuelle arrivera nécessairement à être réalisée pour garantir la progression du programme. 7.5 Identifications des acteurs Cette phase a pour objectif de décrire le comportement attendu de l’application. Pour cela l’utilisation du diagramme des cas d’utilisation qui représente un élément essentiel de la modélisation orientée objet assure des bonnes résultats .Elle permet de modéliser les fonctionnalités de l’application de point de vue besoins utilisateur. Elle sert aussi à définir et à modéliser le produit à développer. 7.6 Les acteurs du système Les acteurs qui manipuleront notre application sont : – L’administrateur : Il possèderait les droits administratifs qui lui permettrait de contrôler tout le nuage et lui permettrait d’accéder à l’interface d’administration sur le portail «Dashboard» ainsi qu’à tous les autres projets. – Membre du projet du «Membre»: C’est un membre d’un ou de plusieurs projets qui sont propres au Membre. Il n’aurait accès qu’à son (ses) projet(s).Par la suite les principaux cas d’utilisations qui assurent toutes les tâches exécutées par le système seront mis en place Authentification Avant l’accès au nuage, l’utilisateur (administrateur, membre) doit s’authentifier avec la saisie de son login, et son mot de passe. Après vérification, si l’utilisateur est accepté, il aura accès au nuage et selon son rôle des projets et des fonctionnalités s’activeront sinon on aura un message d’erreur. 7.7 Le cas d’utilisation de l’administrateur La figure 3.1 présente le diagramme de cas d’utilisation de l’administrateur du nuage
  • 55.
    43 Figure 20:Diagramme descas d’utilisation pour un administrateur Etant donné que l’administrateur a le droit de consulter et de gérer la totalité du nuage, il serait possible pour lui de : Consulter l’état du nuage L’administrateur pourrait consulter usage des serveurs par projet, utilisation actuelle en nombre de CPU virtuels, RAM et Disques puis compteur en CPU et espace disque(GB) par heures. Gérer les instances L’administrateur pourrait gérer les instances existantes sur le nuage, il aurait la possibilité de : - Consulter la liste des instances existantes et leurs détails.sjh - Editer les détails d’une instance - La Supprimer - La suspendre - La redémarrer - Connecter à sa console VNC Consulter la liste des services et leurs détails Liste des services (Volume, Glance, Nova, Keystone...) activés, le serveur hôte et leurs statut (activé/désactivé). Gérer les Flavors L’administrateur pourrait : - Consulter la liste de Flavors actuellement disponibles qui pourraient être utilisés pour lancer une instance.
  • 56.
    44 - Créer desFlavors personnalisées - Editer des Flavors. - Supprimer des Flavors existants. Gérer les images L’administrateur aurait la possibilité de : - Consulter la liste des images disponibles. - Editer les détails d’une image (nom, noyau ID, Ramdisk ID, architecture, format, public ou privé). - Supprimer des images si elles ne sont plus nécessaires Gérer les projets L’administrateur aurait la possibilité de gérer les projets existants sur le nuage, ainsi il pourrait : - Consulter la liste des projets disponibles (locataires) qui ont été créés, leurs détails et leurs utilisations. - Créer de nouveaux projets. - Affecter des utilisateurs à un projet - Modifier les détails d’un projet - Supprimer un projet Gérer les utilisateurs L’administrateur pourrait gérer les comptes utilisateurs existants sur le nuage, ainsi il pourrait: - Consulter la liste des utilisateurs qui ont été créés et leurs détails. - Créer de nouveaux utilisateurs. - Supprimer des utilisateurs existants. 7.8 Le cas d’utilisateur d’un utilisateur La figure qui suivant présente le diagramme de cas d’utilisation d’un utilisateur d’un projet existant dans le nuage.
  • 57.
    45 Figure 21:Diagramme descas d’utilisation pour un membre d’un projet Un Utilisateur ne pourrait consulter et gérer que les ressources des projets auxquels il appartient, ainsi il serait possible pour lui de :  Authentification L’utilisateur doit se connecter avec la saisie de son login et son mot de passe. Apres vérification si l’utilisateur est accepté il aura accès au cloud et son rôle, des projets et des fonctionnalités s’activeront sinon il aura un message d’erreur.  Gérer les instances d’un projet :  Instancier des machines virtuelles L’utilisateur aura la possibilité de lancer une instance après avoir consulter la liste des machines disponible.  Redémarrer une instance, suspendre une VM, stocker les données et exécuter les instances Il aura aussi la possibilité de redémarrer l’instance créé  Se connecter à la console VNC d’une instance L’utilisateur peut accéder à sa machine virtuelle lancée et pourra travailler.  Consulter les caractéristiques d’une VM Apres authentification l’utilisateur aura les spécifications des VM (image, taille disque, CPU etc.).
  • 58.
    46 7.9 Diagrammes d’activités Lediagramme d'activité UML est un cas particulier d'un diagramme d'états dans lequel tous les états sont des États d'action et les transitions sont déclenchées par l'achèvement des actions dans l'état de la source. Il permet de décrire le comportement interne d'une méthode et de représenter un flux entraîné par actions générées en interne. Ce paragraphe sera consacré à la présentation de quelques diagrammes d’activités les plus significatifs. 7.9.1 Diagramme d’activité globale Figure 22:Diagramme d’activé globale du système Dans notre cas, Nous allons d’abord vérifier le type d’utilisateur au niveau de Keystone. Si c’est un membre, il va accéder au Dashboard membre et il va pouvoir consulter les caractéristiques d’une VM. De plus il va gérer ses instances :  Redémarrer ou suspendre une instance  Lancer une instance à l’aide du service nova  Stocker les données d’une VM  Se connecter à la console VNC d’une instance
  • 59.
    47 Et si c’estun administrateur, il va pouvoir ajouter des utilisateurs et gérer les instances grâce au service compute. Si ce n’est ni membre ni administrateur il ne pourra pas se connecter 7.9.2 Diagramme d’activité pour la création d’une instance Figure 23:Diagramme d’activité pour la création d’une instance Nous allons vérifier le type d’utilisateur au niveau de Keystone, s’il s’agit d’un administrateur, il se connectera au Dashboard administrateur et garce au système Nova, il va pouvoir :  Ajouter des images. o Démarrer une instance  Connecter à la console VNC  Configurer l’instance
  • 60.
    48 7.10 Diagrammes deséquences système Avec les diagrammes de séquences système, l’UML fournit un moyen graphique pour représenter les interactions entre un acteur et le système au cours de l’exécution du cas d’utilisation. Ce paragraphe, sera consacré pour présenter quelques diagrammes de séquences les plus significatifs. 7.10.1 Diagramme de séquences pour le scénario d’authentification Acteur : Un membre. Pré conditions : Le membre, doit avoir un compte valide dans le système. Déclencheur : Un membre veut consulter l’état du projet auquel il appartient. Description : Ce cas d’utilisation permet à un membre du projet de s’identifier pour accéder au nuage à travers le Dashboard. Scénario principal : – Un membre accède au Dashboard – Une interface d’authentification s’affiche. – Le membre entre ses données (login, mot de passe) et tape le bouton « valider ». – Les différents services propres au nuage s’affichent Scénario alternatif : – Les données saisies sont erronées – Un message d’erreur s’affiche
  • 61.
    49 Figure 24:Diagramme deséquences pour le scenario d’authentification 7.10.2 Diagramme de séquences pour le scenario de création d’un nouveau projet par l’administrateur Acteur : Administrateur. Pré conditions : L’administrateur a passé l’étape d’authentification avec succès. Déclencheur : L’administrateur veut créer un nouveau projet. Description : Ce cas d’utilisation permet à l’administrateur de créer un nouveau projet dans le nuage et l’accorder aux utilisateurs. Scénario principal : – Connecter au nuage en tant qu’administrateur. – Sélectionner le lien Projets dans le menu. – Choisir de créer un nouveau projet en cliquant sur un bouton « créer ». – Remplir tous les champs et affecter des membres au projet. – Valider l’opération. – Le nouveau projet est ajouté à la liste des projets Scénario alternatif : – Des champs obligatoires ne sont pas été remplis
  • 62.
    50 – Un messaged’erreur s’affiche Figure 25:Diagramme de séquences pour le scenario de création un nouveau projet par l’administrateur 7.10.3 Diagramme de séquences pour le scenario de création d’une instance d’une machine virtuelle Acteur : Membre. Pré conditions : Le membre a passé l’étape d’authentification avec succès. Déclencheur : Un membre d’un projet veut créer une nouvelle instance d‟une machine virtuelle déjà existante dans le nuage. Description : Ce cas d’utilisation permet à un membre d’un projet de créer une nouvelle instance d’une machine virtuelle du nuage. Scénario principal : – Connecter au nuage en tant que membre. – Choisir le projet dans lequel la machine existe.
  • 63.
    51 – Sélectionner lelien « Images et snapshots » dans le menu. – Choisir la machine cible et choisir de créer une nouvelle instance. – Remplir tous les champs. – Valider l’opération. – Une nouvelle instance est ajoutée à la liste des instances. Scénario alternatif : – Des champs obligatoires ne sont pas été remplis – Un message d’erreur s’affiche. Figure 26:Diagramme de séquences pour le scenario de création un nouveau projet par l’administrateur 8 CHAPITRE 8 : MISE EN ŒUVRE, TESTS ET VALIDATION 8.1 Maquette de test
  • 64.
    52 Figure 27:Architecture proposéeprototype Dans la maquette de test nous avons :  Un serveur de contrôle (node-controller)  Deux serveurs de calcul (node-compute)  Un serveur de réseau (node-network)  Une VM contenant Jenkins  Switch pour l’accès réseau au réseau Tous ces serveurs sont virtualisés au niveau de l’environnement de virtualisation Proxmox VE. Le cluster d’OpenStack est constitué de trois (3) nœuds de base : Controller, Compute et network. Pour la mise en place de l’environnement virtualisé, nous avons utilisé deux (2) serveurs physiques dont les caractéristiques sont les suivantes :  Serveur physique 1:  Processeurs : 16 CPU(s)  Mémoire (RAM) :44 GiB  Disque (Storage) :67 GiB  Iso proxmox Virtual Environnement (PVE) : version 5.4-1  Système d’exploitation : CentOS 7  Serveur physique 2 :  Processeurs : 24 CPU(s)  Mémoire (RAM) :98 GiB  Disque (storage) :16 GiB  Iso proxmox Virtual Environnement (PVE) : version 5.4-1  Système d’exploitation : CentOS 7
  • 65.
    53 8.2 Mise enplace de proxmox Virtual Environnement Dans cette partie nous procéderons à l’installation de notre outil de virtualisation (Proxmox VE) sur nos deux serveurs physiques. Ces deux serveurs proxmox seront mis en cluster dans le but d’augmenter les ressources. Sur l’interface Web, on peut directement charger les iso dont on aura besoin pour la virtualisation complète et les Template pour les conteneurs. Pour notre cas nous avons ajoute l’image centos 7 Apres installation nous avons cette interface : Figure 28:Interface de proxmox 8.3 Déploiement de OpenStack dans un environnement cluster Dans cette mise en œuvre nous avons créé trois (3) machines virtuelles : VM1 : c'est sur cette machine que sera installé le contrôleur OpenStack. Ses caractéristiques sont les suivantes :  Mémoire RAM : 4Go ;  Nombre de processeurs : 2 ;  Disque dur : 30Go ;  Nom d’hôte = Controller ;  Interface réseau : eth0 ;  Adresse IP = 10.153.4.134 ;  Système d’exploitation = CentOS 7.x ; Les services suivants seront installés dans le nœud Controller : 1. Keystone 2. Glance 3. Swift 4. Cinder 5. Horizon 6. Nova shcheduler
  • 66.
    54 7. Nova-conductor 8. Neutron 9.Nova novncproxy 10. Novnc 11. Nova api VM2 et VM3 : c'est sur ces machines que seront installés les nœuds de calcul OpenStack. Ses caractéristiques sont les suivantes :  Mémoire RAM : 4Go ;  Nombre de processeurs : 2 ;  Disque dur : 50Go ;  Nom d’hôte = compute01 et compute02 ;  Interface réseau : eth0 ;  Adresse IP = 10.153.4.135, 10.153.4.136 ;  Système d’exploitation = CentOS 7.x ; Les services suivants seront installés dans le nœud compute 1. Nova Compute 2. Neutron – Openvswitch Agent VM4 : c'est sur cette machine que sera installé le nœud de réseau OpenStack. Ses caractéristiques sont les suivantes :  Mémoire RAM : 4Go ;  Nombre de processeurs : 2 ;  Disque dur : 20Go ;  Nom d’hôte = network ;  Interface réseau : eth0 ;  Adresse IP = 10.153.4.134 ;  Système d’exploitation = CentOS 7.x ; Les services suivants seront installés dans le nœud network : 1. Neutron Server 2. Neutron DHCP agent 3. Neutron- Openswitch agent 4. Neutron L3 agent a. Installation et la configuration d’OpenStack en cluster.
  • 67.
    55 Mettez à jourles nœuds à l’aide de la commande ci-dessous.  Etape 1 Utilisez la commande ci-dessous sur les trois nœuds pour mettre à jour tous les packages installés.  Étape : 2 Mettre à jour le fichier /etc/hosts et le nom d’hôte Définissez le nom d’hôte sur les trois nœuds à l’aide de la commande ci-dessous : ET voilà pour tous les trois hostname Mettez à jour le fichier /etc/hosts si votre DNS local n’est pas configuré.  Étape : 3 Désactivez SELinux et Network Manager sur les trois nœuds. Utilisez la commande ci-dessous pour désactiver SELinux sur les trois nœuds. Désactivé SELinux définitivement en changeant le paramètre 'SELINUX=permissive' dans le fichier '/etc/sysconfig/selinux' Autoriser l’accès ssh sur tous les nœuds en éditant le fichier /etc/ssh/sshd_config # yum -y update & reboot # hostnamectl set-name « new_hostname » 10.153.4 .134 controller 10.153.4 .134 compute 10.153.4. 134 network computee # setenforce 0
  • 68.
    56 Redémarrer le serviceavec la commande Utilisez les commandes ci-dessous pour désactiver Network Manager sur les trois nœuds.  Étape : 4 Définissez l’authentification sans mot de passe du nœud du contrôleur au nœud de calcul et de réseau Exécutez les commandes ci-dessous à partir du nœud Contrôleur. Nous copions la clé ssh sur tous les autres nœuds pour pouvoir permettre l’authentification sans mot de passe Maintenant vous pouvais vérifier  Étape : 5 Activer le référentiel RDO et installer l’utilitaire packtack
  • 69.
    57  Étape :6 Générer et personnaliser le fichier de réponses Utilisez la commande ci-dessous pour générer un fichier de réponses. Modifiez le fichier de réponses et spécifiez l’adresse IP du contrôleur, du calcul et du nœud réseau. En dehors de cela, spécifiez également les mots de passe de différents services et désactivez les composants tels que la version de démonstration et Ceilometer. En éditant le fichier /root/answer.txt  Étape : 7 Démarrez l’installation à l’aide de la commande packstack. Une fois l’installation terminée avec succès, nous obtiendrons ci-dessous : CONFIG_CONTROLLER_HOST=10.153.4.134 CONFIG_COMPUTE_HOSTS=10.153.4.135, 10.153.4.136 CONFIG_NETWORK_HOSTS=10.153.4.137 CONFIG_PROVISION_DEMO=n CONFIG_CEILOMETER_INSTALL=n CONFIG_HORIZON_SSL=y CONFIG_KEYSTONE_ADMIN_PW=passer CONFIG_NEUTRON_OVS_BRIDGE_IFACES==br-ex:eth0 computee
  • 70.
    58 Après installation etconfiguration des services, voici le tableau de bord auquel nous allons nous connecter. Pour accéder sur cette interface nous allons mettre https://10.153.4.134/dashboard et une fois sur l’interface nous avons comme login admin et mot de pass passer
  • 71.
    59 Figure 29:Interface deconnexion d’OpenStack Apres l’installation d’OpenStack nous avons crée une instance Dr. Bassirou KASSE Figure 30:Creation d'instance Après l’installation, une nouvelle interface 'br-ex' sera créée dans le nœud réseau. A l’aide de la commande ifconfig -a vous pouvez voir l’interface générer
  • 72.
    60 Ajoutez une interfaceréseau (enp0s3 ou eth0 ou peut être un autre nom) au pont Open vSwitch 'br-ex' en tant que port et attribuez l’adresse IP de 'enp0s3' à 'br-ex' Dans le fichier /etc/sysconfig/network-scripts/ nous copions ifcfg-eth0 dans ifcfg-br-ex, après nous éditons le fichier ifcfg-eth0 en ajoutant ce qui suit : Vous ferez de même avec le fichier ifcfg-br-ex en ajoutant ce qui suis : Redémarrez le service réseau à l’aide de la commande ci-dessous. 8.4 Installation et configuration de la solution proposée : Jenkins a. Prérequis  Mémoire RAM : 4Go ;  Nombre de processeurs : 2 ;  Disque dur : 50Go ;  Nom d’hôte = Jenkins ;  Interface réseau : eth0 ;  Adresse IP = 10.153.4.29 ;  Système d’exploitation = CentOS 7.x ; DEVICE=br-ex DEVICETYPE=ovs TYPE=OVSBridge BOOTPROTO=static IPADDR=10.153.4.182 NETMASK=255.255.255.0 GATEWAY=10.153.4.254 ONBOOT=yes # systemectl restart network
  • 73.
    61 b. Installation Java yuminstall java-11-openjdk.x86_64 -y Pour vérifier la version du java c. Installation Jenkins
  • 74.
    62 Après installation etconfiguration des services, voici le tableau de bord auquel nous allons nous connecter. Pour accéder sur cette interface nous allons mettre http://10.153.4.29:8080 et une fois sur l’interface nous avons comme login user et mot de pass passer Figure 31:Interface de connexion de Jenkins
  • 75.
    63 Figure 32:Tableau debord de Jenkins 8.4.1 Intégration de Jenkins et OpenStack Openstack Heat est un plugin Jenkins qui permet d'interagir avec OpenStack en utilisant l'API Heat. Lorsque vous configurez un projet, vous pouvez ajouter un lecteur HOT de génération par étapes. À ce stade, vous pouvez choisir un fichier tenant/yaml/env dans différentes listes. Lorsqu'une sélection est faite, le plugin génère automatiquement l'interface à partir des différents paramètres (fichier yaml, fichier env...) et vous pouvez paramétrer les interactions thermiques. Vous pouvez créer différentes étapes de lecteur HOT et échanger des données entre elles. Lorsque le travail est lancé, le plugin appelle OpenStack via l'API Heat avec la configuration et la console Jenkins affiche les sorties de l'interaction. 8.4.1.1 Etape1 : Téléchargement du plugin Openstack Heat Pour cette partie nous allons télécharger le plugin OpenStack Heat sur Jenkins
  • 76.
    64 Figure 33:Installation duplugin 8.4.1.2 Etape2 : Installation du plugin Apres avoir téléchargé le plugin nous allons l’installer pour assurer la connexion entre le Jenkins et l’OpenStack Figure 34:Installation et mise à jour du plugin openstack 8.4.1.3 Configuration de OpenStack et Jenkins Dans cette étape nous allons configurer l’OpenStack en mettant l’utilisateur de OpenStack, le mot de pass de OpenStack et son l’url pour assurer la connexion
  • 77.
    65 8.4.2 Test etvalidation sur la création de job Pour la première fois nous devons créer un job qui permet d’accéder au répertoire du serveur git Figure 35:Creation de Job
  • 78.
    66 Figure 36:Les Jobs 8.4.2.1Test sur le dépôt de code dans git Pour cette partie nous avons mis un morceau de code sur git et après nous essayons de changer ou faire une modification sur code Figure 37:Depot code html 8.4.2.2 Test sur l’automatisation Apres avoir fait des modifications sur le code nous avons vu que le Jenkins réalise des builds automatiquement. Voici les builds
  • 79.
  • 80.
    68 CONCLUSION GENERALE ETPERSPECTIVES Le Cloud Computing est un domaine en plein essor qui répond à un grand nombre de besoins des entreprises. L’investissement dans ce domaine attire donc de plus en plus les ingénieurs réseaux qui ne cessent de proposer des solutions de Cloud variés en qualité de service variable et rentable. La Section Informatique de la Faculté des Sciences et Techniques, de l’Université Cheikh Anta Diop de Dakar, forme des étudiants pour des masters en informatiques. Cependant les étudiants sont confrontés à des problèmes de ressources pour faire leurs TP et projets. Ils utilisent des simulateurs et émulateurs et ces derniers fournis des ressources, performances et fonctionnalité limitées. Pour résoudre les problèmes de manque de ressources la section informatique met en place une infrastructure de Datacenter privée avec OpenStack. Cette dernière offre une architecture riche, modulaire et extensible. OpenStack prend également plusieurs types d’hyperviseurs. Il permet aussi d’assurer l’interopérabilité coté réseau. Ce projet est global dont nous participons au déploiement de la plateforme de base et se focalisant sur l’automatisation des déploiements et tests. Dans ce mémoire nous avons mis en place une infrastructure de Datacenter privé avec OpenStack suivi d’une automatisation des déploiements et tests. Après avoir fait un état de l’art sur la virtualisations le cloud le DevOps l’automatisation et donner les différents outils d’automatisation, nous avons proposé une solution. Ensuite, nous avons proposé une nouvelle architecture intégrant la solution. Nous terminons par l’automatisation sur la nouvelle architecture proposée. Nous envisagerons de déployer notre solution à la section informatique et faire une étude de performance de notre modèle en fonction des critères d’optimisations, pour la continuité de ce travail. Nous prévoyons d’intégrer une interface frontale accessible via le navigateur, permettant aux étudiants d’accéder faire leur déploiement, à travers une interface web.
  • 81.
    69 Bibliographie [1] Renaud Bonnet,Livre blanc Orchestration Définitions, Cas d’usage, Choix et déploiement, Sécurité, Retours d’Expérience Réalisé par le Groupe de Travail Orchestration Automatisation du CRiP Pilote : Hugues Fondeux Assistance éditoriale, Juin 2013 [2] Noelle Merle, Thèse : Architecture pour les systèmes de déploiement logiciel à grande échelle : prise en compte des concepts d’entreprise et de stratégie, Jan 2006 [3] Achraf Labidi, Mémoire : Partage Efficace Des Ressources De Calcul Dans Le Nuage Informatique, Montréal Le 11 Juillet 2017 [4] Mme Mame Fatou NIANG, mémoire : Etude et mise en place d’un cloud privé à l’ADIE, Université Cheikh Anta Diop, Mars 2018 [5] Hannachi Slim, Rapport de stage : Etude et Mise en Place d’une Solution Cloud Computing Privé, au sein de Tunisie Télécom [6] Antoine LE MORVAN, Mémoire : Conception et réalisation d’une plateforme de cloud privé, au profit de la formation des administrateurs systèmes de l’École des Transmissions (ETRS)
  • 82.
    70 Webographie [1] https://www-igm.univ-mlv.fr/~dr/XPOSE2008/virtualisation/techniques.html consultéle 12/09/2021 [2] https://openclassrooms.com/fr/courses/2035766-optimisez-votre-deploiement-en-creant-des- conteneurs-avec-docker/6211306-decouvrez-les-conteneurs consulté le 12/09/2021 [3] https://itsocial.fr/enjeux-it/enjeux-cloud-computing/cloud-public-prive-hybride/docker- conteneurs-larme-fatale%E2%80%89/ [4] https://www.socialnetlink.org/2016/04/09/le-cloud-computing-avantages-et-inconvenients/ consulté le 12/10/2021 [5] https://www.hebergeurcloud.com/cloud-prive/ consulté le 12/10/2021 [6] https://www.alibabacloud.com/fr/knowledge/what-is-hybrid-cloud consulté le 12/10/2021 [7] [8] https://www.syloe.com/expert-devops-automatisation-deploiements/ consulté le 12/10/2021 [9] https://fr.slideshare.net/AhmedSlim4/mise-en-place-dune-infrastructure-base-sur-openstack consulté le 12/10/2021 [10 ] https://www.syloe.com/les-avantages-et-les-topologies-du-cloud-computing/ consulté le 12/10/2021 [11] https://www.devopsschool.com/blog/jenkins-architecture-explained/ consulté le 12/10/2021 [12] https://www.disko.fr/reflexions/technique/integration-continue-dun-projet-php-avec- jenkinssonarqube/ consulté le 12/10/2021 [13]https://www.lemagit.fr/conseil/OpenStack-des-avantages-mais-il-manque-encore- lautomatisation consulté le 12/10/2021 [14]https://www.itnation.lu/educloud-un-cloud-prive-pour-leducation/ consulté le 12/10/2021 [15]https://www.syloe.com/glossaire/automatisation-des-deploiements/ consulté le 12/01/2022 [16]https://www.letslearntech.com/how-to-install-jenkins-in-centos-7-8/consultéle 12/02/2022 [17]https://www.looklinux.com/install-jenkins-centos-7/ consulté le 12/02/2022 [18]https://getc.com.tn/le-cloud-une-opportunite-pour-les-entreprises-tunisiennes/ consulté le 12/10/2021 [19]https://fr.wikipedia.org/wiki/OpenStack consulté le 12/10/2021 [20]https://www.researchgate.net/figure/META-pipe-deployment-End-users-run-analyses- using-the-META-pipe-web-app-The-web-app-is_fig2_321370814 consulté le 12/10/2021
  • 83.
    71 [21]https://www.slideshare.net/emaganap/openstack-opencontrail-in-production consulté le 12/10/2021 [22]https://www.ibm.com/blogs/cloud-computing/2014/09/23/creating-continuous- integration-environment-openstack/consulté le 12/10/2021 [23]https://docplayer.fr/82876003-Mise-en-place-d-un-pipeline-d-integration-et-de- deploiement-continus-a-base-de-docker.html consulté le 12/10/2021 [24]https://docplayer.fr/155435317-Tp-devops-chaine-de-deploiement-docker-jenkins-etc- introduction-une-chaine-de-deploiement-automatise-pour-les-developpeurs.html consulté le 12/02/2022 [25]https://ichi.pro/fr/jenkins-cas-d-utilisation-164429940932150 consulté le 12/02/2022 [24] https://d3vpasha.wordpress.com/2019/01/05/jenkins-les-pipelines-4-6/ [26] https://blog.myagilepartner.fr/index.php/2019/01/23/il-etait-une-fois-devops-origines-du- devops/ [27] https://www.ionos.fr/digitalguide/serveur/outils/quest-openstack/