Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
EPIGRAPHE
« En gestion ce que l’on contrôle à outrance nous contrôle et ce que nous ne gérons nous
gère ».
Sylvain tourangeau
2
DEDICACE
A notre père POLOMBWE KALENGA qui grâce à ses efforts soutenus nous a offert la
meilleure formation que l’on puisse espérer en tant que passionné de l’informatique
A notre mère NYUNDU MUSAO pour tant d’exonération et dont l’attention soutenue
ainsi que les conseils ont marqués notre itinéraire ainsi que pour tous les moments passés à
nous prodiguer des conseils avisés grâce auxquels nous avons pu atteindre le bout de notre
formation. Vous êtes pour nous le modèle parfait d’une bonne mère.
3
REMERCIEMENT
La réalisation de ce mémoire a été possible grâce au concours de plusieurs personnes
à qui nous voudrions témoigner toute notre gratitude.
Nous souhaitons avant tout remercier notre Dieu tout puissant pour la force et la grâce
qu’il nous a offerte enfin d’aboutir à la réalisation de ce mémoire.
Nous adressons nos sincères remerciements à Monsieur ZAGABE Yannick Directeur
du mémoire pour son suivi, ses conseils judicieux et ses discussions qui nous ont beaucoup aidé
au cours de nos recherches.
Nous tenons aussi à remercier Mr LWAPULA KULAILA Bob co-directeur du
mémoire, pour son aide dans la réalisation de ce modeste travail.
Nous exprimons nos vives reconnaissances à notre père BERTIN POLOMBWE et à
notre mère NICOLE NYUNDU pour leur soutien constant et leurs encouragements.
Enfin je remercie tous mes amis et compagnons de route, LIONNEL MWAMBA,
JEAN PAUL KABIMBA, ISRAEL MWAMBA, BENJAMIN TAKOBAJIRA, DANIEL
KESONGO, CLEMENT SHABANI, PRUDENCIANE MBAYO, ARISTOTE
KABASUBABU pour les encouragements qu’ils m’ont apportés.
AVANT-PROPOS
TABLE DE TABLEAU
Tableau 1: PLAN D'ADRESSAGE LAN .................................................................... 22
Figure 35: Details d’installation des switches Nexus pour la démonstration ................. 87
Figure 47:Vérification de vlan disponible dans les switchs se trouvant dans Host
inventory Ansible avec les playbooks ................................................................................. 101
8
Figure 56: Le fichier inventaire avec deux nexus enregistré ....................................... 105
Figure 62: PLAYBOOK pour le déploiement des VLANs sur le nexus ..................... 107
Figure 63:Etat initial des VALNS sur les nexus ......................................................... 108
3. Intérêt Social................................................................................................ 15
Introduction. ............................................................................................................ 17
1. Inventaire.....................................................................................................44
3. Modules .......................................................................................................44
4. Template......................................................................................................44
5. Hôtes ........................................................................................................... 44
7. Operateur .....................................................................................................44
Dans près de 70% d’entreprises, nous rencontrons des projets de migrations et de gestion
optimal des infrastructures informatiques, de quoi découlent les taches d’administration des
équipements inter-réseaux ainsi que des serveurs, des logiciels selon les besoins des entreprises.
Dans des réseaux évolutifs, les administrateurs ont plusieurs serveurs à gérer et du coup ces
tâches deviennent de plus en plus complexe
Dans cette optique que faire pour effectuer ces taches d’administration de façon efficace,
éliminer les contraintes géographiques, gagner du temps en gérant plusieurs serveurs en même
temps c’est-à-dire de façon parallèle.
Partant de ce fait, quelles technologies peut-on adopter pour subvenir à notre besoin de gagner
du temps dans des taches d’administration dans un réseau en général ?
0.2 Hypothèses :
production nécessaire à une organisation pour répondre aux demandes changeantes de ses produits.
14
Pour répondre à toutes ces questions, nous allons utiliser un outil de pilotage systèmes
sans agent faisant partie de la famille des outils DevOps 2, qui nous permettra de simplifier des
opérations d’orchestration complexes, de faire du management de configuration centralisé sur
un grand nombre de machines.
Les résultats de notre automatisation seront une organisation agile, un déploiement rapide
des services, des modifications et des mises hors service sans erreur de configuration. Nous
savons que le niveau élevé des contrats de niveau de service et le temps nécessaire au service
sont essentiels dans toutes les activités.
2
Le devops est un mouvement en ingénierie informatique et une pratique technique visant à l'unification
du développement logiciel (dev) et de l'administration des infrastructures informatiques (ops), notamment
l'administration système [14].
3
Le directeur des systèmes d'information (DSI est responsable de l'ensemble des composants matériels
(postes de travail, serveurs, équipements de réseau, systèmes de stockage, de sauvegarde et d'impression, etc.)
15
0.4 Méthodologie :
Dans le but de mieux appréhender les problèmes posés et proposer des solutions
effectives, une approche méthodique du travail est indispensable.
Nous allons donc dans notre travail utiliser le Top Down Design en utilisant le langage
de modélisation « SysML ». SysML est un langage de modélisation faisant la spécification des
systèmes, l’Analyse structurelle, la description et la conception des systèmes modulaires ainsi
que la vérification et la validation de leurs faisabilités avant leurs réalisations.
Notre travail s'est étendu de la période allant du mois de janvier 2019 jusqu'à la fin du
mois de juillet 2019. Période pendant laquelle nous avons rédigé notre travail.
16
Notre travail va se limiter sur la gestion unifiée unique qui permet de surveiller et
d'administrer de manière centralisée toutes les applications sur des zones géographiques
physiques, des infrastructures hétérogènes.
Le sujet est complexe, dans ce travail il sera question d’un « proof of concept » qui va
illustrer la solution a une petite échelle. Dans un projet réel, ce travail pourra être utilisé pour
étendre la solution à toute l’entreprise.
Ce travail vise à mettre en place une solution d’automatisation et de gestion unifiée d’un
réseau Datacenter comme l’indique le sujet. De ce fait seront exposées différentes étapes qu’il
nous faudrait franchir afin de présenter nos contributions dans le cadre du dit sujet.
Nous proposons, dans le chapitre 3, un cadre basé sur la CONCEPTION PHYSIQUE. C’est
dans ce dernier que nous amorceront l’implémentation de notre système.
Afin de bien poursuivre notre travail et de fournir le système souhaité par l’entreprise, nous
allons d’écrire L’entreprise en général. Et puisque notre solution est informatique, nous
mettrons un accent particulier sur l’infrastructure réseaux.
Nous traiterons aussi de la manière dont les tâches administratives sont gérées
actuellement pour y ressortir les points forts et faibles, lesquels nous permettrons d’établir les
besoins fonctionnels, non fonctionnels, les exigences et les contraintes.
Pour des raisons de sécurités nous ne pouvons pas divulguer le nom de la société pour
laquelle on travail, c’est pourquoi certaines informations seront anonymes.
A sa tête il y a le Président Directeur Général, suivi des Directeurs généraux qui supervisent les
Directeurs généraux chargés des opérations, les chargés de l’administration et finances, de
l’environnement, de la santé et de la sécurité au travail.
Puis les Managers qui sont gérés par les directeurs généraux, voici quelques
Manager :
Manager de la mine
Manager de l’exploitation minière
18
Les Managers chapotent les super intendants généraux, à leurs tours ils chapotent les
super intendants.
PDG
Directeurs généraux
Directeur général chargé des opérations et les Chargés de l’administration et
finance
Directeur général chargé de l’environnement, de la santé et de la sécurité su
travail
Manager de la mine
Manager de l’exploitation minière
Manager des usines de traitement rapporte au directeur général des opérations.
Les super intendants
Les super intendants.
1.2.1 Contexte.
Une société minière en RDC intègre en son sein un département informatique qui gère
son système d’information. Celui-ci est basé sur le produit SAP, mais possède également
plusieurs systèmes informatiques qui gèrent les différents domaines de production minière et la
productivité de l’entreprise.
19
Un système de contrôle de processus industriel qui est séparé du réseau business par un
firewall.
Un ensemble d’applications minières pour gérer les différents aspects de la stabilité du
terrain, de la flotte des engins (Dispatch informatisé), de la planification minière etc.
Un ensemble d’applications de gestion administrative telle que le pointage automatique,
le contrôle d’accès pour la sécurité physique etc.
Un ensemble d’applications qui regroupe les communications unifiées, la messagerie,
les services d’infrastructure système et réseaux etc.
Tous ces systèmes (plus de 100 serveurs) sont hébergés sur des serveurs virtuels pour la
plus part. Le Système SAP est géré dans un Datacenter éloigné en dehors du pays alors que le
reste se trouve localisé principalement dans un Datacenter construit sur une infrastructure
VSAN (VMware hyper-convergée).
Un réseau d’entreprise reliant les sites éloignés par MPLS permet de couvrir tous les
bureaux et opérations de la société.
Ces systèmes sont gérés traditionnellement par une équipe IT avec une structure très
minimale. Cette gestion traditionnelle non basée sur la modélisation d’entreprise donne tout de
même des résultats plus ou moins satisfaisants.
A court terme, les choses semblent bien marcher, mais la gouvernance IT n’est pas
optimale. La gestion opérationnelle des systèmes est manuelle et complexe. L’ingénierie et le
développement sont négligés dans le département.
La société est implantée dans 4 villes de la RDC et dans 3 villes internationales, parmi
lesquels nous nommons :
Kolwezi
20
Kambove
Lubumbashi
Kinshasa
Johannesburg
Hongkong
Londres
Il n’y a que deux villes qui comportes des sites miniers, les autres villes ont des bureaux
administratifs.
a. Kolwezi :
Un site minier qui comporte une usine hydro métallurgique avec 5 mines à ciel ouvert.
L’autre site comprend une mine souterraine et deux mines à ciel ouvert.
Un site se trouve à Kolwezi et un autre site à Kambove.
Dans le camp il y a un bâtiment pour le Datacenter, c’est là qu’il y a tous les serveurs de
l’entreprise.
Un dispatch informatisé gère la flotte des engins miniers, il est situé à une distance de 30
km par rapport au centre-ville, l’usine possède aussi des bureaux techniques pour la gestion des
opérations métallurgiques. Site des bureaux pour les opérations de la mine. Il est éloigné des
bureaux des opérations minières de 1km, c’est un petit bureau avec un access switch de 24 ports
rélié au distribution de ops.
Dans cette partie nous illustrerons les différents types de réseaux que possède l’entreprise,
nous allons faire un « proof of concept ». Ainsi nous décrirons le réseau WAN avec MPLS, les
LAN détaillés des quelques sites.
La Société possède plusieurs Serveurs dans son Datacenter, parmi lesquels nous pouvons
cités :
Nous pouvons dire qu’administrer c’est gérer, comme dans toutes entreprises,
Points forts
L’entreprise est bien organisée en ce qui concerne la partie infrastructure réseau du fait
qu’elle possède une liaison MPLS pour connecter ses sites WAN et utilise le routage par EIGRP
pour connecter ses sites LAN.
Points faibles
Le parc informatique se gère manuellement, ainsi cela réduit la productivité car le temps
investis pour la gestion du système est énorme.
33
1.4.1 Besoins
Dans le cadre du sujet ; Ayant eu à mainte reprise l’occasion de discuter avec les
responsables des services (systèmes et réseaux) de « Anonymous », il en résulte les besoins
suivants :
Il s'agit des besoins qui caractérisent le système. Ce sont des besoins en matière de
performance, de type de matériel ou le type de conception, contraintes internes et externe
auxquelles le système doit répondre, c'est ainsi ; Afin d’obtenir un système qui convienne le
mieux à l’entreprise ; notre système devra répondre à ces exigences :
Disponibilité
Facilité d'installation
Gestion aisée
Evolutivité
Interopérabilité
35
Coût réduit
L’entreprise « Anonymous » est une entreprise évoluant dans le secteur minier et produit
généralement du cobalt et du cuivre, elle a pour objectif de devenir le premier producteur du
cuivre en Afrique donc au monde par conséquent.
Afin d’y parvenir l’entreprise s’est muni d’un Datacenter (centre des données) pour
améliorer sa productivité en échangeant les informations de ses différentes succursales sur
l’évolution de ses mines ainsi que des transactions faites.
Pour conclure ce chapitre, nous dirons qu’il a été l’occasion pour nous de d’écrire
l’entreprise bénéficiaire de notre future solution en générale. L'étude que nous avons menée
nous a permis de mettre un accent sur les problèmes réels que rencontre « Anonymous » afin
d'y ressortir le maximum d'idées qui nous ont mené à la détermination des objectifs que nous
devrons atteindre dans ce présent travail. C'est pour cela que nous aurons à proposer un système
qui apporte des solutions aux différents problèmes liés à la gestion des configurations de
l'infrastructure.
38
Chapitre 2
CONCEPTION LOGIQUE DU SYSTEME
2.1 Introduction
Ensuite, se référant au diagramme ci-haut nous pouvons en tirer les principales fonctionnalités du système que nous approfondirons dans la
conception logique et plus en détail, dans la conception logique détaillée.
Dans le but d’intégrer toutes les fonctionnalités principales précitées, l’architecture ci-
dessous nous servira de base de conception du système. Nous décrirons ensuite chacune des
fonctions pour en déduire l’architecture physique.
43
1. Inventaire
Le fichier d’Inventaire est un fichier dans lequel on renseigne les serveurs sur lesquels on
effectue nos actions. Le fichier d'inventaire peut être dans l'un des nombreux formats, en
fonction des plugins d'inventaire que vous avez [1].
2. Fichier de configuration
3. Modules
Cette fonction permet l’utilisation facile du système par une tierce personne n’ayant pas
une connaissance avancée dans le domaine en incorporant certains scripts de base permettant
de réaliser des tâches très diverses.
4. Template
Les Template permettent de générer le fichier de configuration pour exécuter des tâches
particulières.
5. Hôtes
7. Operateur
Il s’agit là d’un ingénieur système ou réseau qui aura la tâche de configurer le système.
Dans cette partie nous verrons avec plus de détail chaque module précité ci-haut et nous
décortiquerons les différents comportements de ceux-ci.
45
Ici, Il est question du fonctionnement intrinsèque de chaque module ainsi que son
fonctionnement par rapport aux autres modules du système.
1. Le fichier d’Inventaire :
Le fichier d’Inventaire est un fichier dans lequel on renseigne les serveurs sur lesquels on
effectue nos actions. Le fichier d'inventaire peut être dans l'un des nombreux formats, en
fonction des plugins d'inventaire que vous avez [3].
En général, on travaille sur plusieurs serveurs. On définit ces machines dans notre fichier
d’inventaire et en principe, on regroupe ces hôtes par groupe. Par exemple, imaginons le
scénario où l’on veut installer nginx4 sur la moitié de nos serveurs. On créera alors un groupe
appelé nginx et on y rajoutera tous les serveurs où l’on veut l’installer :
4
NGNIX, prononcé comme « engine-ex » est un logiciel libre de serveur Web (ou HTTP) ainsi qu'un proxy
inverse écrit par Igor Sysoev, dont le développement a débuté en 2002 pour les besoins d'un site russe à très fort
trafic.
46
2. Fichier de configuration :
Définition :
La prise en compte de modifications de ces réglages peut être (quasi) immédiate, comme
il est généralement nécessaire pour les systèmes et les services rendus par un serveur ou différée
jusqu'à la prochaine exécution, comme il est généralement suffisant pour une application.
47
Structure
La structure des fichiers de configuration est variable : elle peut se conformer aux
conventions mises en place par l'éditeur du système d'exploitation, dépendre des outils de
développement utilisés pour programmer une application ou être entièrement propriétaire, ce
qui la rend souvent difficile à interpréter.
Une grande partie des fichiers de configuration est néanmoins écrite au format ASCII
(sous forme textuelle) et formatée en lignes terminées par des caractères « nouvelle ligne » ou
« CR/LF » (carriage return/line feed)5 selon le système d'exploitation. Leur contenu peut alors
être examiné à l'aide d'un éditeur de texte.
Dans d'autres cas, il faut recourir à des applications spéciales pour créer, modifier et tester
la syntaxe des fichiers de configuration. Pour les services et les systèmes d'exploitation, le code
source est parfois la seule documentation disponible. En général, les pages de manuel ou d'aide
rendent partiellement compte de la syntaxe à utiliser dans ces fichiers.
Les formats XML6 et YAML7 tendent à se généraliser dans l'écriture des fichiers de
configuration. Ils ont l'avantage d'avoir une syntaxe déjà bien définie et de disposer d'outils de
vérification et de validation connus.
5
CRLF (ou CR+LF), est une séquence de deux octets qui indique une fin de ligne (et surtout une nouvelle
ligne) dans un texte. Le sigle CRLF provient de la juxtaposition du sigle de Carriage Return (retour chariot) et de
Line Feed (saut de ligne).
6
Le XML ou eXtensible Markup Language est un langage informatique de balisage générique. Sa syntaxe
est dite « extensible » car elle permet de définir différents langages avec chacun leur vocabulaire et leur grammaire,
comme XHTML, XSLT, RSS, SVG… Elle est reconnaissable par son usage des chevrons (<, >) encadrant les
noms des balises.
7
Le nom YAML veut dire “YAML Ain’t Markup Language”, soit “YAML n’est pas un langage de balises”.
Si cela met d’emblée des distances avec XML, cela ne nous dit pas ce qu’est YAML. YAML est, d’après sa
spécification, un langage de sérialisation de données conçu pour être lisible par des humains et travaillant bien
avec les langage de programmation modernes pour les tâches de tous les jours.
48
Syntaxe
Pour plus de clarté, les fichiers de configuration respectent en général une syntaxe qui
associe des directives (ou mots clés) à des valeurs.
Cette syntaxe peut adopter des formes et des niveaux de complexité différents selon
l'ampleur et la précision des fonctionnalités de l'application.
Les paramètres peuvent être organisés linéairement (par ex. rs_vitesse=9400), en tableau
(comme fstab8) ou encore en « objets », ce qui est le cas avec le XML, délimités par un début
et une fin, et caractérisés par des propriétés et des options propres à chaque type d'objet.
8
Le fichier fstab (file systems table) est la table des différents systèmes de fichiers sur un ordinateur sous
Unix/Linux : il contient une liste des disques utilisés au démarrage et des partitions de ces disques. Pour chaque
partition, il indique comment elle sera utilisée et intégrée à l’arborescence du système de fichiers global (c'est-à-
dire le point de montage). Il se trouve généralement à /etc/fstab.
49
3. Les modules
Les modules sont généralement autonomes et peuvent être écrits dans un langage de script
standard (tel que Python, Perl, Ruby, Bash, etc.). L'une des propriétés directrices des modules
est l'idempotency, ce qui signifie que même si une opération est répétée plusieurs fois (par
exemple, après une panne), le système sera toujours placé dans le même état.
Les modules sont mis en correspondance avec les ressources et leurs états respectifs,
représentés dans des fichiers. Ils permettent de gérer pratiquement tout ce qui contient une API,
une interface de ligne de commande ou un fichier de configuration avec lequel vous pouvez
interagir, y compris les périphériques réseau tels que les équilibreurs de charge, les
commutateurs, les pare-feu, les orchestrateurs de conteneurs, les conteneurs eux-mêmes et
même les instances de machine virtuelle dans un hyperviseur ou une machine virtuelle. Cloud
public (AWS, GCE, Azure) et / ou privé (OpenStack, CloudStack, par exemple), ainsi que
dispositifs de stockage et de sécurité, et configuration système.
4. Api système
Certaines API de système de fichiers peuvent également inclure des interfaces pour des
opérations de maintenance, telles que la création ou l'initialisation d'un système de fichiers, la
vérification de l'intégrité du système de fichiers et la défragmentation.
Après ce tour d’horizon qui nous a permis d’avoir un aperçu détaillé sur les modules du
système. Un diagramme qui résume de manière succincte et plus ou moins précise toutes les
parties du système s’avère être nécessaire pour sa bonne compréhension en somme.
51
Les choix des différentes solutions technologiques ne seront pas faits de façon
arbitraire, nous allons recourir au premier chapitre de notre travail et plus précisément au niveau
des exigences non fonctionnels, ces dernières constitueront nos critères de choix pour
différentes solutions technologiques, chaque critère vaut 5 points, étant donné le nombre
d’exigences non fonctionnelles du système (7), nos critères vaudront au total 35 points. Les
solutions qui seront retenues seront celles qui auront les plus grandes cotes sur 35.
Critère 2 (C2) : Facilité d'installation, Elle représente la qualité du système à être facile à
implémenter ;
Critère 3 (C3) : Gestion aisée, représente la capacité pour un utilisateur d’exécuter une
tâche dans un temps donné après une formation d’une durée déterminée ;
Critère 7 (C7) : Coût réduit, Solution efficace pouvant être implémentée avec un budget
minimum ;
Disponibilité ✔ ✔ ✔ ✔
Interopérabilit
Haute Haute Haute Haute
é
Disponibilité
Il est question de comparer Chef, Puppet, Ansible et Saltstack sur la base des
disponibilités. Tous ces outils sont hautement disponibles, ce qui signifie qu'il existe plusieurs
serveurs ou plusieurs instances. Disons que si votre maître principal ou votre serveur tombe en
panne, il y a toujours un serveur de sauvegarde ou un autre maître pour le remplacer.
Puppet - Il a une architecture multi-maîtres, si le maître actif tombe en panne, l’autre maître
prend la place du maître actif.
Ansible - Il s'exécute avec un seul nœud actif, appelé instance principale. Si primaire tombe
en panne, une instance secondaire doit prendre sa place.
Saltstack - Plusieurs maîtres peuvent être configurés. Si un maître est en panne, les agents se
connectent à l'autre maître de la liste. Par conséquent, il a plusieurs maîtres pour configurer les
serviteurs [6].
Facilité d'installation
Chef - Chef a une architecture d'agent maître. Le serveur Chef s'exécute sur l'ordinateur
maître et le client Chef s'exécute en tant qu'agent sur chaque ordinateur client. En outre, il existe
un composant supplémentaire appelé poste de travail, qui contient toutes les configurations qui
sont testées puis transférées vers le serveur chef central. Par conséquent, ce n'est pas si facile.
Ansible - Seul le maître s'exécute sur la machine serveur, mais aucun agent ne s'exécute
sur la machine cliente. Il utilise la connexion ssh pour se connecter aux systèmes clients ou aux
nœuds que vous souhaitez configurer. La machine virtuelle cliente ne nécessite aucune
configuration particulière, elle est donc plus rapide à configurer !
56
Saltstack - Ici, le serveur est appelé maître du sel et les clients sont appelés minions du
sel, lesquels s'exécutent en tant qu'agents sur la machine cliente.
La gestion aisée
Pour entamer cette partie, il sied important de dire que Puppet et Chefs suivent les
configurations par tirage & Ansible et Saltstack suivent les réglages push.
Dans la configuration push, toutes les configurations présentes dans le serveur central
seront poussées vers les nœuds, tandis que dans la configuration par extraction, les nœuds
esclaves extrairont automatiquement toutes les configurations du serveur central sans aucune
commande.
Chef - Vous devez être un programmeur pour gérer les configurations car il offre des
configurations dans Ruby DSL. Le client extrait les configurations du serveur.
Puppet - Il est difficile de gérer les configurations car il utilise son propre langage appelé
Puppet DSL (Domain Specific Language). Le client extrait les configurations du serveur. Il est
plutôt orienté administrateur système et l'exécution à distance n'est pas immédiate.
Ansible - Facile à apprendre à gérer les configurations car il utilise YAML, c’est-à-dire
un autre langage de balisage qui ressemble beaucoup à l’anglais. Le serveur envoie les
configurations à tous les nœuds. Bon pour les applications en temps réel et il y a une exécution
à distance immédiate.
Saltstack - Facile à apprendre à gérer les configurations car il utilise également YAML.
Le serveur envoie les configurations à tous les clients. Exécution à distance immédiate.
L'évolutivité
Les quatre outils sont hautement évolutifs. Supposons que si vous avez besoin de
configurer environ 70 nœuds aujourd'hui et demain 500, cela ne pose aucun problème. Ce n'est
pas un problème avec ces outils. Ils peuvent gérer une infrastructure importante, il vous suffit
de spécifier l'adresse IP et le nom d'hôte des nœuds que vous souhaitez configurer. Le reste de
la tâche sera géré par ces outils. Par conséquent, tous ces outils sont hautement évolutifs.
Langue de configuration
Chef - Chef utilise le langage Ruby Domain Specific Language (Ruby DSL). Il a une
courbe d'apprentissage abrupte et orientée développeur.
57
Ansible - Ansible utilise YAML, c’est-à-dire un autre langage de balisage (Python). Il est
assez facile à apprendre et orienté administrateur. De nos jours, Python est intégré à la plupart
des déploiements Unix et Linux. Par conséquent, la configuration et l’utilisation de l’outil sont
plus rapides.
Saltstack - Saltstack utilise également YAML (Python). Il est encore facile à apprendre
et orienté administrateur.
L'interopérabilité
Dans ces outils, maître ou serveur principal ou vous pouvez aussi dire machine de
contrôle, doit être sous Linux / Unix mais leurs esclaves ou les nœuds qu’ils doivent configurer
peuvent être sous Windows. Décortiquons chaque outil un à un :
Chef - Chef Server ne fonctionne que sous Linux / Unix, mais Chef Client et Workstation
peuvent également fonctionner sous Windows.
Puppet - Puppet Master ne fonctionne que sous Linux / Unix, mais Puppet Agent
fonctionne également sous Windows.
Ansible - Ansible prend également en charge les machines Windows, mais le serveur
Ansible doit être installé sur une machine Linux / Unix.
Saltstack - Salt Master ne fonctionne que sous Linux / Unix, mais les sbires de sel peuvent
aussi fonctionner sous Windows.
Coût réduit
Les coûts d’entreprise pour les outils de configuration sont les suivants :
Chef - Chef Automate vous donne tout ce dont vous avez besoin pour construire, déployer
en 137$ par nœud / annuel.
Puppet - Les prix de Puppet vont de 112 USD par nœud / an avec un plan de support
standard à 199 USD par nœud / an avec le plan premium.
Ansible - Le prix pour Ansible Tower pour les opérations informatiques standard jusqu'à
100 nœuds est de 10 000 USD / an. Cela inclut une assistance 8 * 5, tandis que premium offre
une assistance 24 * 7 pour 14 000 USD / an.
58
Saltstack - Le coût pour Saltstack Enterprise par nœuds est de 150 $ / an (environ). Vous
pouvez contacter le support pour le prix actuel de l'abonnement annuel.
La figure ci-dessus montre la domination de Ansible (au vu de sa surface qui est la plus
grande) sur une représentation radar.
59
L’image donnée ci-dessous, montre comment ces outils ont dominé le secteur
informatique au cours des 5 dernières années.
Comme vous pouvez le voir ci-dessus, Puppet et Chefs sont les anciens dans ce domaine,
tandis qu'Ansible et le Saltstack en sont de nouveaux. Et Ansible semble très prometteur avec
la tendance croissante.
Partant de cette étude et vu le total des critères rempli, Il serait judicieux d’opté pour la
solution Ansible.
Une ansible est un dispositif théorique permettant de réaliser des communications à une
vitesse supraluminique. Elle peut envoyer et recevoir des messages en provenance et en
direction du périphérique correspondant sur n’importe quelle distance sans aucun délai. Les
ansibles sont une composante emblématique de la littérature de science-fiction [7].
Ansible se démarque de la plupart des outils de ce type, car il ne fonctionne pas en mode
client-serveur ou maître-esclave. Il utilise les technologies SSH (Secure Socket sHell) et JSON
(JavaScript Object Notation) pour distribuer les modules sur les nœuds distants, et utilise donc
les ressources uniquement pour des tâches utiles. Tant que le nœud n’est pas modifié, aucun
agent ni daemon ne fonctionne en arrière-plan. Cette configuration tient compte des contextes
des différents systèmes d’un environnement IT multiniveau [8].
Ansible est :
Simple :
Automatisation facile
Pas besoin d’être programmeur
Les tâches sont exécutées en ordre
60
Puissant :
Déploiement d’application
Gestion de configuration
Orchestration de workflow
Automatisation des réseaux
Orchestrer le cycle de vie complet
Sans agents :
Sans agent
Utilise OpenSSH & WinRM
Pas d’agent à exploiter ou
maintenir
Démarrer immédiatement
Plus efficace, plus sécure
Dans les prochains paragraphes, nous allons découvrir l’architecture d’Ansible et son
fonctionnement. Puis nous montrons la gestion de configuration des environnements et le
déploiement des hôtes.
[9]
1. Host Inventory
Ansible permet à l’heure actuelle de manipuler des inventaires statiques et des inventaires
dynamiques. Le modèle statique fonctionne bien avec des environnements figés, n’évoluant pas
souvent. Par contre il devient vite limitant dans le cadre d’environnements en cours de
développement sujets à des reconstructions ou en évolutions permanentes.
Les inventaires Ansible peuvent contenir des variables relatives aux instances mais pour
gagner en clarté, les variables sont placées dans des group_vars et des host_vars
L’inventaire fournit la liste des hôtes (routeurs managés, switchs managés serveurs
managés) sur lesquels Ansible exécutera les tâches. Il peut également être utilisé pour regrouper
les hôtes et configurer les variables pour les hôtes et les groupes.
62
2.Playbooks
Les Playbooks sont une manière complètement différente d’utiliser Ansible que dans le
mode d’exécution de tâches ad hoc, et sont particulièrement puissants.
Les Playbooks peuvent déclarer des configurations, mais ils peuvent également orchestrer les
étapes de tout processus de commande manuelle, même si différentes étapes doivent rebondir
entre des ensembles de machines dans des ordres particuliers. Ils peuvent lancer des tâches de
manière synchrone ou asynchrone.
Le Playbook est le langage de configuration d’Ansible utilisé pour effectuer l’ensemble des
tâches et d’étapes de configuration ou pour faire appliquer une politique sur les nœuds distants.
Les modules Ansible sont utilisés dans le Playbook pour exécuter une opération.
Le Playbook est écrit en YAML qui est un langage simple, lisible par l’homme et
développé dans un anglais de base comme la langue du texte. Les Playbooks sont plus
susceptibles d’être conservés dans le système de contrôle de version et utilisés pour assurer les
configurations des systèmes distants.
63
3. Ssh trust
Par défaut, Ansible essaiera d'utiliser OpenSSH en natif pour les communications à
distance lorsque cela est possible. Cela active ControlPersist (une fonctionnalité performante),
Kerberos et des options dans ~ / .ssh / config, telles que la configuration de l'hôte sauté.
Quand nous parlons avec des machines distantes, Ansible suppose par défaut que nous
utilisons des clés SSH.
1.Modules
Ansible est livré avec un certain nombre de modules (appelés "bibliothèque de modules")
qui peuvent être exécutés directement sur des hôtes distants ou via Playbooks.
Les utilisateurs peuvent également écrire leurs propres modules. Ces modules peuvent
contrôler des ressources système, telles que des services, des packages ou des fichiers (quelque
chose de vraiment), ou gérer l'exécution de commandes système.
Les modules Ansible sont tous écrit en Python et PowerShell, mais les modules
peuvent être écrits en n’importe quel langage.
Inventory Modules
list
list
added in 2.4
Default:
"all"
Network Modules :
Les modules Ansible Network étendent les avantages d'une automatisation simple,
puissante et sans agent aux administrateurs et aux équipes réseau. Les modules réseau
Ansible peuvent configurer votre pile réseau, tester et valider l'état du réseau existant, et
détecter et corriger la dérive de la configuration réseau [11].
ACI :
Les modules Ansible ACI fournissent une interface conviviale pour la gestion d’un
environnement ACI à l'aide de playbooks Ansible.
Par exemple, s’assurer qu’une instance spécifique existe, à l’aide de la tâche Ansible suivante
utilisant le module aci_tenant.
CHEKPOINT :
Gère les objets hôtes sur les périphériques Checkpoint, notamment la création, la mise à
jour et la suppression des objets de règles d'accès. Toutes les opérations sont effectuées sur
l'API de services Web.
string
string / required
67
Database Modules :
Ce module gère et déploie les bases des données, sans trop tarder là-dessus, passons à
quelques exemples :
mysql_db - Ajoute ou supprime des bases de données MySQL d'un hôte distant.
Exigences
Les exigences ci-dessous sont nécessaires sur l'hôte qui exécute ce module.
python> = 2,7
pymssql
-
68
-
present ←
absent
import
target
MISC :
-
present
absent
- "1m"
Valable uniquement pour Elasticsearch
<5.0. Cette option est ignorée pour Elasticsearch>
5.0.
Exemple :
Implémenter une solution complète basée sur Ansible est un travail de grande envergure
qui ne saurait être contenu dans le cadre limite du présent travail. C’est pourquoi il sera ici
question de vérifier seulement quelques scenarios afin de vérifier l’hypothèse qui peut être
confirmé par extension a un plus grand projet relatif a tout un datacenter et a un réseau
d’entreprise a grande échelle.
Dans ce scénario réaliste, vous allez créer un livre de lecture pour sauvegarder les
configurations de routeur Cisco. Dans les laboratoires suivants, nous utiliserons cette
configuration sauvegardée pour restaurer les périphériques dans leur état correct connu.
72
Si des modifications hors bande ont été apportées à l'appareil et qu'il doit être restauré à
la dernière configuration correcte connue, nous pourrions adopter l'approche suivante :
Figure 28: DIAGRAMME DE SEQUENCE RESTAURER UNE SAUVEGARDE SUR UN PERIPHERIQUE RESEAU
75
L'objectif est de fournir un module déclaratif pour la gestion des VLAN sur les
périphériques IOS. En cela, il serait judicieux d’utiliser des images IOSv-L2 [12].
Le module a plusieurs paramètres mais les plus importants sont les suivants :
delay: 10 secondes par défaut, combien de temps attendre pour voir l'état
déclaratif.
état: présent / absent / actif / suspendre - l'état dans lequel il devrait être
vlan_id: ID du VLAN
76
Le diagramme ci-après illustre les séquences des configurations des serveurs linux en
serveurs web.
78
Le diagramme ci-après illustre les séquences des mises à jours automatiques sur des
serveurs Windows.
80
Ce diagramme physique est une capture du système implémenté dans EVE pour une émulation de la solution Ansible
82
Nous avons relié nos différents LAN par une liaison WAN Mpls VPN, nous nous sommes
basés sur les trois principales villes de la société.
4 routeurs du côté fournisseur dont 2 se trouvant dans le backbone Mpls et 2 autres pour
se connecter à nos LAN.
Câbles Ethernet.
c. La couche distribution.
En fonction de notre topologie ; Voici les exigences requises pour la couche distribution :
Le composant Datacenter est ici représenté par deux switches Nexus 9000. Le choix de la
technologie Cisco Nexus n’a pas été fait parce que ces switches sont déjà sur la liste des
équipements standards de la société (Contrainte politique).
Cisco NX-OS est le système d'exploitation réseau (OS) qui alimente les commutateurs Cisco
Nexus dans des milliers d'environnements clients. Il s'agit du premier système d'exploitation de
réseau de centre de données à être construit avec Linux. Le logiciel Cisco NX-OS est le système
d’exploitation réseau le plus extensible, ouvert et programmable, appelé Open NX-OS. La suite
logicielle riche Open NX-OS construite sur une fondation Linux expose les API, les modèles
de données et les constructions programmatiques
Avant l’automatisation :
Pour déployer plusieurs équipements, cette approche était réalisable. Toutefois, pour un
centre de données avec des centaines de périphériques, cette approche n’aurait pas bien évolué.
Lors de leur démarrage initial, ces périphériques téléchargent leurs images de disque et
leurs fichiers de configuration à partir d’un serveur préconfiguré.
Les commutateurs Cisco Nexus disposent de deux technologies pour ce faire : le POAP
(Power-On Auto Provisioning) et l'environnement PXE (Preboot Execution Environment).
Le POAP se produit lorsque, lors du démarrage, le commutateur ne trouve pas son fichier
de configuration de démarrage. À ce stade, le périphérique recherche un service DHCP
(Domain Host Configuration Protocol) sur le réseau. DHCP attribue au périphérique l'adresse
IP, la passerelle par défaut et l'adresse IP suivies par le serveur DNS (Domain Name System).
Ensuite, POAP obtient l'adresse IP d'un serveur de script, télécharge le script approprié
pour le commutateur et l'exécute sur le périphérique.
Figure 33:Nexus
Un autre chargeur d'amorçage avancé disponible sur les commutateurs de la gamme Cisco
Nexus est l'outil de démarrage PXE (Preboot Execution Environment). PXE est un framework
commun bien compris par les administrateurs systèmes. Il récupère également une image du
réseau et permet une installation et un démarrage automatisés.
Un diagramme simple a été choisi en tenant aussi compte des ressources limitées à la
disposition de ce travail. Nexus exige beaucoup de mémoire RAM. Il est recommandé de
travailler avec 8GB de RAM par switch Nexus pour simuler son comportement. A cause de
cette exigence, le Datacenter a été simulé à part.
Une fois installé, Ansible n’ajoutera aucune base de données et il n’y aura plus de
démons pour démarrer ou continuer à fonctionner. Vous n'avez besoin de l'installer que sur une
seule machine (qui pourrait facilement être un ordinateur portable) et il peut gérer un parc entier
de machines distantes à partir de ce point central. Lorsque Ansible gère des ordinateurs distants,
les logiciels ne sont ni installés ni exécutés. Il n’y a donc pas de vraie question sur la mise à
niveau d’Ansible lors du passage à une nouvelle version.
Sur les nœuds gérés, nous aurons besoin d’un moyen de communication, qui est
normalement ssh. Par défaut, cela utilise sftp. Si cela n’est pas disponible, nous
pouvons passer à scp dans ansible.cfg. Nous aurons également besoin de Python
2 (version 2.6 ou ultérieure) ou de Python 3 (version 3.5 ou ultérieure).
Procédure d’installation :
Sur Fedora :
Sur Ubuntu :
Sur Debian :
Sur Gentoo :
Sur FreeBSD :
Bien qu'Ansible fonctionne avec les versions Python 2 et 3, FreeBSD propose différents
packages pour chaque version Python. Donc, pour installer, nous pouvons utiliser :
Où :
Il s’agira ici des grandes étapes pour l’élaboration du réseau WAN MPLS qui
interconnectera les différentes villes.
Procédure de configuration :
Procédure de configuration :
Procédure de configuration :
Procédure de configuration :
Exigences :
Configurer au minimum les 2 switches pour qu’ils soient joignable via leurs
interfaces de management
Configurer le switch de distribution qui les alimentent en connexion pour
qu’Ansible puisse les contacter
91
Procédures de configuration
Seul le provisionning des VLAN sera illustré dans la démonstration par manque
d’espace et de temps.
[all:vars]
ansible_network_os=nxos
ansible_connection=network_cli
ansible_user=cisco
ansible_ssh_pass=cisco
[N9000v-Leaf]
10.10.80.3 ansible_host=nx-9k-01.anonymous.com
10.10.80.4 ansible_host=nx-9k-02.anonymous.com
Activer le module ‘nxos_nxapi’dans Nexus pour pouvoir déclarer des taches dont les
détails seront masqués par cette abstraction.
92
---
- name: Enable NX-API
hosts: N9000v-All
gather_facts: no
tasks:
- name: Module to enable NX-API on switch is "nxos_nxapi"
nxos_nxapi:
state: present
http: yes
https: yes
-
f. Ansible TOWER.
Procédures de configuration :
- hosts : switch
connection: local
tasks:
- name: Show VLAN
ios_command:
commands: show vlan brief
register: show_vlan
- debug: var=show_vlan.stdout_lines
Déploiement de la configuration des VLANs 20, 21, 22 et 23 sur les distributions
switch de Kambove afin de faire le routage inter-VLANs :
Nous allons créer un groupe inventaire qui va répertorier les distributions
switch de Kambove.
[kambove_distributions_switch]
10.20.5.1 ansible_network_os=ios
10.20.6.1 ansible_network_os=ios
Nous allons ensuite créer un playbook en respectant les indemptations
pour la création des VLANs.
---
- hosts: kambove_distributions_switch
connection: network_cli
gather_facts: no
become_method: enable
become: yes
tasks:
- name: Create vlan 20
ios_vlan:
vlan_id: 20
name: Grand_kam_1
state: present
- name: Create vlan 21
ios_vlan:
94
vlan_id: 21
name: Grand_kam_2
state: present
- name: Create vlan 22
ios_vlan:
vlan_id: 22
name: Petit_kam_1
state: present
- name: Create vlan 23
ios_vlan:
vlan_id: 23
name: Petit_kam_2
state: present
- name: Add interfaces to VLAN
ios_vlan:
vlan_id: 20
interfaces:
- Ethernet0/0
- Ethernet0/1
Nous allons ensuite créer un playbook en respectant les indemptations pour la
vérification des VLANs 20, 21, 22 et 23.
---
- hosts: kambove_distributions_switch
connection: local
tasks:
- name: Show VLAN
ios_command:
commands: show vlan brief
register: show_vlan
- debug: var=show_vlan.stdout_lines
Le plan d’implémentation a pour but d’ordonnancer les taches dont l’objectif de réaliser
le projet dans un temps optimal. Dans ce cadre, on distingue trois méthodes pouvant nous servir
parfaitement : il s’agit des plus connus comme GANTT, PERT et parmi les moins connus le
diagramme MPM. PERTT et MPM sont les plus expressif visuellement.
Dans la méthode MPM que nous utiliserons les taches représentées par des sommets,
chaque tâche est renseignée par la date au plus tôt et la date au plus tard, à chaque arc
est associé une valeur numérique qui représente la durée de la tâche.
Durant ce chapitre nous avons choisi les différents modules ansible qui implémentent les
fonctions logiques. Nous avons aussi décrit l’architecture physique. Enfin nous avons élaborer
un des diagrammes de séquences illustrant le comportement des différents modules puis nous
avons décrit le plan d’installation, de configuration et d’implémentation.
96
4.2 Etape 2. Configuration de base des Provider (Juste les grandes lignes).
4.3 Etape 3. Configuration des VRFs sur les Provider (Juste les grandes lignes).
4.7 Etape 6. Vérification de vlan disponible dans les switchs se trouvant dans
Host inventory Ansible avec les playbooks (Juste les grandes lignes).
Figure 47:Vérification de vlan disponible dans les switchs se trouvant dans Host inventory Ansible avec les playbooks
Bon fichier inventaire prenant en charge les 2 switches Nexus. Celui qui a été planifié
dans la conception physique n’a pas marché.
La commande : « ansible N9000-All -m ping permet de tester la connectivite de Ansible sur les
switches Nexus : L’ecran ci-dessous confirme que tout passe.
106
Le respect de l’identation dans les fichier .yml est tres importante sous peine d’avoir des erreurs.
Le fichier planifieee n’a pas marchee, le suivant est celui qu’il fallait pour activer l’API NX-
API.
Les captures ci-apres montre que les 2 switches du datacenter ont été modifiees a distance par
Ansible.
La configuration distante des VLAN sur les Nexus s’est faite par le fichier suivant (celui de la
planification a été légèrement modifié.
CONCLUSION GENERALE
Ce travail a traité sur la gestion des configurations d’un Datacenter basée
sur un gestionnaire des configurations (Ansible), il s’agissait de concevoir et implémenter une
simulation d’un système centralisant toutes les configurations du parc des serveurs du centre de
données de Notre entreprise.
L’objectif poursuivi était celui de permettre aux administrateurs systèmes de s’affranchir
des commandes propres à chaque système d’exploitation utilisé dans le réseau cible.
Pour y arriver, nous avons utilisé les grands principes de l’ingénierie des systèmes qui
consistaient à diviser les tâches, a employer l’abstraction afin de partir du général au particulier.
Voilà pourquoi notre travail a été structuré en quatre parties.
Dans un premier temps, nous avons décrit l’infrastructure système existante dont il était
question dans notre travail et critiquer l’existant dans le but de ressortir les spécifications
fonctionnelles du futur système.
Sur base des spécifications fonctionnelles recueillies dans la première partie, nous
nous sommes appuyés dessus dans le but de concevoir logiquement le système qui devait
répondre aux différents besoins exprimés par L’entreprise; cette conception consistait en la mise
en place d’une architecture générale du dit système et une
conception détaillée logique qui montrait les détails sur la façon dont les différents modules
constituant l’architecture générale interagissaient entre eux.
Après avoir ainsi conçu une solution logique répondant aux besoins, nous avons
réalisé cette dernière dans les technologies disponibles en opérant des choix technologiques des
composants pouvant réaliser les fonctionnalités de chaque module ce qui a
conduit à la mise en place de l’architecture du système sur le plan physique. Du reste,
nous avons également planifié l’implémentation du système en partant des procédures
d’installation, des configurations ainsi que des tests unitaires et ceux globaux du système.
La simulation (ou plutôt l’émulation) du système a en fait mis un terme à ce travail, c’est-
à-dire concrétiser tout ce qui a été développé dans l’abstraction. En d’autres termes réaliser tout
ce qui a été planifié en appliquant les procédures d’installation données auparavant pour la
mise en place du système ainsi que leurs tests unitaires et globaux.
110
Il était aussi question d’appliquer les configurations prévues pour les différents nœuds et
enfin procéder aux tests des objectifs fixés dans ce travail afin de prouver l’hypothèse de
ce travail.
Il serait prétentieux de dire que l’on a épuisé le sujet car beaucoup reste encore à faire. Il
y a certainement des choses à améliorer à l’issue de ce travail. Celui-ci ouvre néanmoins
d’autres perspectives qui pourront être élucidés par d’autres travaux.
Bibliographie
[5] J. zilk, Puppet vs. Chef vs. Ansible vs. SaltStack, 2018.
[6] intigua, Puppet vs. Chef vs. Ansible vs. SaltStack, 2019/05.