Vous êtes sur la page 1sur 34

INSTITUT SUPERIEUR DES TECHNIQUES ECONOMIQUES

COMPTABLES ET COMMERCIALES

PROJET DE FIN D’ETUDES POUR L’OBTENTION DU DIPLOME DE LA


LICENCE
SOUS LE THEME

AUTOMATISATION DES CONFIGURATIONS DES


NŒUDS RESEAU AVEC ANSIBLE

Présenté et soutenu par:


M. Abdoul Aziz OUEDRAOGO et M. Lamine CAMARA

Spécialité: Réseaux et Télécommunications


Directeur de Mémoire: Membres du Jury :
M. Souleymane COULIBALY 1………………………
2………………………

Date de Soutenance:
Septembre 2023
Promotion: 2020-2023

ANNEE UNIVERSITAIRE 2022-2023


DEDICACE
Nous dédions ce mémoire de fin d’étude à nos parents pour l’éducation et le grand
amour dont ils nous ont entouré.
Encore une fois, merci du fond du cœur pour leur soutien inestimable.
Remerciements
Tout d’abord nous tenons à remercier Allah le tout miséricordieux, le très
miséricordieux de nous avoir donné la santé, la volonté, le courage et la patience
pour mener à terme notre formation et pouvoir réaliser ce travail de fin d’étude.
Nos remerciements vont à l’endroit de tous ceux qui ont contribué de près ou de loin,
à la réalisation de ce mémoire, particulièrement à :
Notre encadrant monsieur Souleymane COULIBALLY, pour son soutien et sa
disponibilité.
L’ensemble du corps professoral, l’administration de l’intec-sup ACI 2000 pour les
efforts déployés à la réussite et la qualité de formation de ses étudiants.
Tous les camarades de notre promotion pour leurs bonnes collaborations,
Nos parents, nos amis pour leurs encouragements et leurs esprits de partage.
Nous ne saurons terminer sans adresser nos sincères remerciements à toutes les
personnes qui, de près ou de loin nous apporté leurs soutiens matériels, moraux et
financiers.
Résumé:
L'automatisation des configurations des Nœuds réseau avec Ansible est un sujet
complexe mais passionnant. Cette méthode permet de simplifier et d'accélérer la
gestion des infrastructures réseau, en automatisant les tâches répétitives et en évitant
les erreurs humaines.
En effet elle offre une solution élégante et puissante pour simplifier la gestion des
infrastructures réseau. Grâce à son approche déclarative et sa flexibilité, elle permet
aux administrateurs système d'économiser du temps tout en assurant une cohésion
totale dans leur environnement informatique.
Abstract:

Automating network node configurations with Ansible is a complex but exciting

subject. This method simplifies and accelerates the management of network

infrastructures, by automating repetitive tasks and avoiding human errors.

Indeed, it offers an elegant and powerful solution to simplify the management of

network infrastructures. Thanks to its declarative approach and its flexibility, it

allows system administrators to save time while ensuring total cohesion in their IT

environment.
INTRODUCTION GENERALE :
L’évolution fulgurante des réseaux informatiques a fait accroitre la charge de travail
des administrateurs réseaux, occasionnant ainsi un accroissement des ressources
humaines consacrées à leur gestion. Les capacités de gestion de réseau ont été
poussées à leurs limites et sont donc devenues plus complexes et source d’erreurs.

En effet, avec la croissance exponentielle du nombre d'appareils connectés et des


demandes toujours plus complexes en matière de performance et de sécurité réseau,
il devient impératif d'adopter des méthodes automatisées pour gérer efficacement ces
configurations.

L'automatisation permet avant tout d'améliorer l'efficacité opérationnelle en réduisant


considérablement le temps nécessaire à la configuration manuelle individuelle des
nœuds réseau, les administrateurs peuvent consacrer davantage de temps aux tâches à
plus forte valeur ajoutée telles que la planification stratégique ou le dépannage
avancé.

De plus, elle offre une cohérence sans faille dans les configurations. Les erreurs
humaines sont inévitables lorsqu'il s'agit de configurer manuellement chaque nœud
réseau. L'utilisation d'une approche automatisée garantit que toutes les configurations
sont appliquées uniformément sur tous les appareils concernés.

Par ailleurs, la gestion et la configuration efficaces des réseaux sont essentielles pour
assurer le bon fonctionnement d'une infrastructure informatique. Cependant, cette
tâche peut s'avérer complexe et fastidieuse, nécessitant souvent une intervention
manuelle de la part des administrateurs réseau. Dans ce contexte, l'utilisation d'outils
d'automatisation devient cruciale pour simplifier ces processus.

Dans ce document nous utiliserons Ansible qui est une plate-forme logicielle libre
pour effectuer les tâches d’administration à distance à travers le protocole sécurisé
SSH. Ce document est structuré de deux parties donc 4 quatre chapitres

 Dans le premier chapitre nous allons faire une description du projet


 Dans le deuxième chapitre nous étudierons le fonctionnement d’Ansible
 Dans le troisième chapitre nous allons parler sur la gestion de configuration
 Et enfin dans le quatrième chapitre nous ferons une réalisation pratique
(installation, configuration et test …)
Partie I : CONTEXTE- JUSTIFIGATION- DESCRIPTION DU PROJET

SECTION1 :

Introduction :

L'évolution vers une infrastructure programmable constitue un pilier essentiel pour


répondre aux besoins futurs du secteur informatique.

En automatisant les configurations des nœuds réseau, nous préparons notre


infrastructure à s'adapter rapidement et efficacement aux évolutions technologiques.
Cela permet également de faciliter l'intégration de nouvelles fonctionnalités ou
services sans perturber le fonctionnement global du réseau.

1- Contexte et Justification :

Automatiser les configurations des nœuds réseau est une décision stratégique
incontournable pour rester compétitif dans un monde en perpétuelle évolution.
L'automatisation constitue le premier pas vers une gestion plus agile et efficiente de
nos infrastructures.

Ce thème se propose donc d'étudier le contexte dans lequel l'utilisation Ansible peut
être bénéfique pour automatiser les configurations des nœuds réseau. Nous
chercherons également à justifier pourquoi il est important de développer cette
approche afin de répondre aux besoins croissants en matière de flexibilité, sécurité et
évolutivité dans les infrastructures informatiques actuelles.

Dans cet esprit, cette recherche vise non seulement à fournir une analyse
approfondie du potentiel offert par l'utilisation d'Ansible pour automatiser les
configurations des nœuds réseau mais aussi à proposer des recommandations
pratiques pour sa mise en œuvre efficace dans les environnements réels.

a Objectif :

L'objectif principal de cette étude est d'examiner comment Ansible peut simplifier et
accélérer le processus fastidieux de configuration manuelle des nœuds réseau. En
utilisant Ansible, il devient possible d'éliminer les erreurs humaines potentielles tout
en améliorant l'efficacité opérationnelle globale.
Le thème explore également différentes techniques et bonnes pratiques pour mettre
en œuvre efficacement l'automatisation des configurations à grande échelle.
b Problématique :

Le problème qui se pose est de trouver une solution pour effectuer les tâches
d’administration de façon efficace, gagner du temps en gérant plusieurs nœuds en
même temps c’est-à-dire de manière optimale.

Section2 : Analyse du Projet

1- C’est quoi Ansible :

Le concept Ansible est un outil de pilotage de système, sans agent, faisant partie de
la famille des outils Devops. Il permet de simplifier des opérations d’orchestrations
complexes, de faire du management de configuration centralisé sur un grand nombre
de machines. Il permet également le pilotage de plateformes cloud telles qu’Amazon
Web Services ou OpenStack. Il est un moteur d’automatisation informatique
radicalement simple qui automatise la gestion de configuration, le déploiement
d’application, intra-orchestration de services. Il utilise YAML qui est un langage très
simple permettant de décrire les travaux d’automatisation d’une manière simple.

a Pourquoi Ansible :

Ansible a plusieurs avantages dont nous citons quelques-uns :

 Gagner du temps et être plus productif


 Eliminer les tâches répétitives
 Moins d’erreurs
 Améliorer la collaboration et la satisfaction professionnelle
 Surmonter la complexité
 Plus de pour l’innovation…
CHAPITRE 2 :  EXPLICATION DU FONCTIONNEMENT D'ANSIBLE 

Section 1
I- Description et Structure des concepts clés
Pour comprendre le fonctionnement d'Ansible, il est essentiel de connaître les
concepts clés qui sous-tendent cette technologie.

1) Explication des concepts


a) Notion du Fichier inventaire

Il s'agit d'un fichier où sont répertoriés tous les nœuds gérés par Ansible. Ces nœuds
peuvent être des serveurs physiques ou virtuels sur lesquels nous souhaitons effectuer
des opérations via Ansible. L'inventaire permet donc de regrouper ces machines et de
spécifier différentes informations telles que leurs adresses IP, leurs utilisateurs SSH
ou encore leur groupe d'appartenance.

Pour cette opération de création d’inventaire sur le contrôleur, on utilisera le module


ansible.builtin.copy avec l’argument content qui crée le fichier en ajoutant du
contenu. La séquence \n réalise des retours charriot dans le texte.
L’option -e ou --extra-vars dans le format "user=${user}" permet de passer le
contenu des variables Bash dans des variables Jinja2 que les arguments des modules
peuvent comprendre.
Ici,la cible est “localhost” et n’a pas besoin d’être défini dans l’inventaire.

user="root"
ansible-mansible.builtin.copy-e"user=${user}"-a"dest=~/lab/inventory
content='[nodes]\nnode0\nnode1\nnode2\n\n[all:vars]\nansible_connection=ssh\
nansible_user={{ user }}\nansible_ssh_pass=testtest\n'"localhost
cat ~/lab/inventory
[nodes]
node0
node1
node2

[all:vars]
ansible_connection=ssh
ansible_user=root
ansible_ssh_pass=testtest
Image 1 : Ficher d’inventaire
Cet inventaire désigne trois hôtes :
• node0
• node1
• node2
Il désigne explicitement aussi deux groupes :
• nodes qui comprend les hôtes node0, node1 et node2.
• all avec des variables qui portent sur tous les hôtes de l’inventaire.
On sera attentif aux variables d’inventaire du groupe all :
• Le type de connexion en SSH : ansible_connection=ssh
• Le nom d’utilisateur pour se connecter ansible_user=root
• Le mot de passe de l’utilisateur de connexion : ansible_ssh_pass=testtest
b) Les variables
Les variables dans Ansible sont exactement les mêmes que dans les autres systèmes.
Considérez une variable comme un 'nom' attaché à un 'objet' spécifique. Vous pouvez
définir ces variables dans vos playbooks, ainsi que dans votre inventaire. Pour créer
une variable, il vous suffit de lui attribuer une valeur, par exemple,
router_ip=10.10.5.20. Vous pouvez ensuite vous référer à l'adresse IP n'importe où
dans Ansible en utilisant la clé router_ip plutôt que l'adresse IP.

Dans cet exemple, nous allons vous montrer comment définir des variables
directement dans le fichier d'inventaire. L'exemple suivant montre comment définir
des variables à l'aide de group_vars. Les variables configurées dans [routers:vars] ne
s'appliquent à aucun autre groupe.
Image 2 : liste des variables

- Variables d'inventaire communes

Les variables suivantes sont requises pour créer une connexion SSH réussie aux
périphériques réseau.

ansible_connection - Ansible utilise le paramètre ansible-connection pour déterminer


comment se connecter à un appareil distant. Lorsque vous travaillez avec Ansible
Networking, définissez cette option sur une option de connexion réseau appropriée,
telle que network_cli, afin qu'Ansible traite le nœud distant comme un périphérique
réseau avec un environnement d'exécution limité. Sans ce paramètre, Ansible
tenterait d'utiliser ssh pour se connecter à la télécommande et exécuter le script
Python sur le périphérique réseau, ce qui échouerait car Python n'est généralement
pas disponible sur les périphériques réseau.

ansible_network_os - Pour informer Ansible à quelle plate-forme réseau cet hôte


correspond. Ceci est nécessaire lors de l'utilisation des network_clioptions de
connexion.

ansible_user - L'utilisateur avec lequel se connecter à l'appareil distant.

ansible_password - Le mot de passe correspondant pour ansible_user avec lequel se


connecter.

ansible_become - Si le mode enable (mode privilège) doit être utilisé

ansible_become_method - Quel type de devenir doit être utilisé, car network_clile


seul choix valide est enable. (plus à ce sujet plus tard)

c) Ansible Vault :

Ansible Vault crypte les variables ou les fichiers afin que les données sensibles telles
que les mots de passe ou les clés ne soient pas visibles.

Pour se faire :

Créez un fichier crypté dans le coffre-fort dans le répertoire qui vivra à côté du
fichier routers.yml non crypté. Dans ce fichier, définissez les variables sensibles qui
se trouvaient auparavant dans le group_vars/routers.ymlfichier. Utilisez les mêmes
noms de variable, mais ajoutez la chaîne au début vault pour indiquer que ces
variables sont définies dans le fichier protégé par le coffre-fort.

pi@raspberrypi:/etc/ansible/inventory/group_vars/routers $ ansible-vault create vault


New Vault password:
Confirm New Vault password:
Créer un coffre-fort
---
vault_ansible_password: cisco123

pi@raspberrypi:/etc/ansible/inventory/group_vars/routers $ ls
routers.yml vault

pi@raspberrypi:/etc/ansible $ cat
inventory/group_vars/routers/vault
$ANSIBLE_VAULT;1.1;AES256
31333431656561643635663832663737636338356235313338653765393434
636264666339613432
3363626532663731656336653261623933616464646661330a616430373138
356234633963306232
34653535663361353937396266643734386632393639626363316135333238
303038336431663763
3934343233656339390a663838383165623161333964316636383030343035
313330643463316432

Image 3 : Ansible vault


d) Commande Ad-Hoc:
La commande ansible offre la possibilité d’exécuter des modules ansible de manière
“ad-hoc”, c’est à dire tâche par tâche sur un groupe d’hôtes. L’intérêt est de pouvoir
exécuter la même tâche en parallèle sur un inventaire (constitué d’un certain nombre
de cibles) en tout ou en partie.

En général, la commande s’écrit ansible suivie d’un hôte ou d’un groupe d’inventaire
suivie -m nom_de_module suivie l’option d’argument -a "clé=valeur clé=valeur
clé=valeur", par exemple de manière formelle :

ansible<group_inventaire>-mnom_de_module-a"clé=valeur clé=valeur clé=valeur"


ansible localhost -m debug -a"msg='Hello World'"
localhost | SUCCESS =>{
"msg": "Hello World"
}
Image 4 : commande Ad-hoc
La commande ansible attend comme argument un groupe cible de l’inventaire, une
option de module et ses arguments.
On trouvera aussi des options utiles de la ligne de commande comme celles-ci :
• -b, --become active l’élévation de privilèges (sudo)
• -e qui permet de placer des variables ponctuelles ou un fichier de variables,
• -o qui offre la sortie standard en une seule ligne,
• ou encore -l, --limit qui permet de limiter la tâche à certains hôtes seulement
de l’inventaire,
• ou encore -v ou -vvv pour la verbosité,
• -i précise le chemin du fichier d’inventaire.
e) Test de connectivité
Le module ansible.builtin.ping teste la connexion de gestion par Ansible vers la
cible, avec une tentative de connexion qui vérifie l’existence de Python. Attention, le
résultat dépend du plugin de connexion utilisé. On sera attentif aux paramètres de
connexion utilisateur, de ses privilèges et de mode d’élévation de privilèges, de mot
de passe ou de clé privée de la configuration, etc. La réponse attendue est “pong”.
Attention, il ne s’agit pas d’un test ICMP Echo Request !

En toute logique, si le lab est bien monté, un résultat positif “pong” doit vous
parvenir :

ansible all -m ping


node0 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"ping": "pong"
}
node2 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"ping": "pong"
}
node1 | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"ping": "pong"
}

Image 5: test de ping


2) Principe du Playbook
Le playbook est l'élément central d'Ansible. Il s'agit d'un fichier YAML qui regroupe
toutes les tâches à exécuter sur un ensemble de nœuds gérés spécifiés dans
l'inventaire.
Le playbook permet ainsi de décrire précisément quelles actions doivent être
réalisées et dans quel ordre elles doivent l'être. De plus, il peut également inclure des
variables pour paramétrer ces opérations en fonction du contexte.

Un exemple concret pourrait être la création d'une infrastructure web complète


comprenant plusieurs serveurs avec une base de données, un serveur web et un
équilibrage de charge.

Exemple

1. - name: My first play


2. hosts: virtualmachines
3. tasks:
4. - name: Ping my hosts
5. ansible.builtin.ping:
6. - name: Print message
7. ansible.builtin.debug:
8. msg: Hello world

Image 6 : exemple d’un playbook


a- Tâches

Tous les playbooks doivent contenir des tâches ou une liste de tâches à exécuter. Les
tâches sont une liste d'actions à effectuer. Un champ de tâches contient le nom de la
tâche. Cela fonctionne comme le texte d'aide pour l'utilisateur. Ce n'est pas
obligatoire mais s'avère utile pour déboguer le playbook. Chaque tâche est liée en
interne à un morceau de code appelé module. Un module qui doit être exécuté et les
arguments requis pour le module que vous souhaitez exécuter.

b- Boucle

Ansible fournit un moyen simple et lisible de parcourir un ensemble de tâches à


l'aide du loop mot-clé. Le but d'une boucle est de répéter la même tâche plusieurs
fois, ce qui simplifie le playbook et réduit les répétitions. ansible_module fait
référence au module que vous utilisez pour la tâche. Ansible dispose de nombreux
modules pour diverses tâches, telles que apt la gestion des packages, file la gestion
des fichiers, etc.

key: "{{ item }}"C'est là que nous disons à Ansible ce qu'il faut changer dans chaque
boucle. Il {{ item }}s'agit d'un espace réservé qu'Ansible remplace par chaque
élément de la liste de boucles.

Loop est le mot-clé qui démarre la boucle, suivi de la liste des éléments à boucler.

Pour en revenir à l'exemple d'installation de package précédent, sans boucle, nous


aurions besoin d'écrire une tâche distincte pour chaque package. Avec une boucle,
nous pouvons installer tous les packages avec une seule tâche.
Image : syntaxe de base d’une boucle

La ligne pkg: "{{ item }}"indique à Ansible ce qu'il faut installer dans chaque
itération de boucle. Ansible remplace {{ item }}par chaque nom de package de la
liste.

Le loop mot-clé démarre la boucle, suivi d'une liste de packages que nous voulons
installer.

Lorsque vous exécutez ce playbook, Ansible installe les packages 'nginx', 'mysql' et
'php' un par un. Si vous avez besoin d'installer plus de packages, ajoutez-les
simplement à la liste. C'est pourquoi les boucles sont si puissantes dans Ansible :
elles nous permettent de gérer plusieurs éléments avec une seule tâche, quel que soit
le nombre d'éléments dont nous disposons.
PARTIE II : DESCRIPTION- AVANTAGE- METHODE DE COMMUNICATION SSH
ET DEPLOIEMENT

CHAPITRE 1 : GESTION DE CONFIGURATION

SECTION1 : Introduction

La gestion de configuration est un processus dont l’objectif est de définir un état dans
lequel doit se trouver les ressources d’une infrastructure : les serveurs, switchs,
routeurs…

I. Description des nœuds gérés


1- Définition :
a. Switch :
Le Switch ou commutateur est un équipement qui fonctionne comme un pont
multiport et qui permet de relier plusieurs segments d’un réseau informatique entre
eux. Il est aussi chargé d’analyser les trames qui arrivent sur les ports d’entrée.

Image 8 : Switch


b. Serveur :

Le serveur est un logiciel ou ordinateur très puisant choisit pour coordonner,


contrôler et gérer les ressources d'un réseau. Il met ses ressources à la disposition
des autres ordinateurs sous la forme des services.

Image 9 : serveur


c. Routeur
Le routeur est un périphérique réseau qui transmet des paquets entre différents
réseaux ou LAN. Les routeurs sont nécessaires pour atteindre les hôtes et
périphériques qui ne font pas partit d’un même réseau. Ils utilisent une table de
routage pour parcourir les réseaux.

Image 10 : Routeur

d. FortiGate

Les pare-feux nouvelle génération FortiGate offrent une protection contre les
menaces et un décryptage à grande échelle avec une architecture ASIC personnalisée.
Ils offrent également une mise en réseau sécurisée avec des fonctionnalités intégrées
telles que le SD-WAN, la commutation, le sans-fil et la 5G.

Image 11 : Fortinet


2- Communication entre le contrôleur Ansible et les nœuds gérés
La communication entre le contrôleur Ansible et les nœuds gérés est un aspect
crucial de la gestion des infrastructures. Pour comprendre cette communication, il est
important d'analyser les différents protocoles et mécanismes utilisés.

Tout d'abord, Ansible utilise SSH (Secure Shell) pour établir une connexion
sécurisée avec les nœuds gérés. Cette méthode de communication permet un transfert
sécurisé des données entre le contrôleur et les hôtes distants.

En effet, en utilisant SSH, Ansible garantit que seules les personnes autorisées
peuvent accéder aux systèmes distants.

Ensuite, Ansible utilise le langage YAML (YAML Ain'tMarkupLanguage) pour


décrire ses playbooks - ces fichiers qui contiennent toutes les instructions nécessaires
à la configuration des nœuds gérés. Le choix du format YAML offre une syntaxe
simple et facilement compréhensible par tous ceux qui travaillent sur un projet
donné.

De plus, lorsqu'un playbook est exécuté par le contrôleur Ansbile sur un ou plusieurs
nœuds gérés simultanément, celui-ci utilise également JSON (JavaScript Object
Notation) pour transmettre efficacement toutes les informations nécessaires au
traitement des tâches demandées aux hôtes distants. JSON a été choisi car il offre une
structure légère mais puissante permettant de représenter différentes formes de
données. Enfin, il convient également de mentionner qu’Ansible utilise un modèle
client-serveur pour sa communication avec les nœuds gérés. Le contrôleur Ansible
agit en tant que serveur et les hôtes distants sont considérés comme des clients. Cette
architecture permet une gestion centralisée et facilement évolutive des
infrastructures. En conclusion, la communication entre le contrôleur Ansible et les
nœuds gérés repose sur différents protocoles tels que SSH, YAML et JSON. Ces
choix ont été faits dans le but d'assurer une connexion sécurisée ainsi qu'une
représentation claire et efficace des instructions nécessaires à la configuration des
systèmes distants.

Dans le domaine de l'informatique, la communication entre le contrôleur Ansible et


les nœuds gérés est un aspect essentiel à prendre en compte. Cette communication
permet au contrôleur de déployer des configurations sur les différents nœuds du
système.

a- Protocole SSH :

Ansible utilise le protocole SSH pour communiquer de façon sécurisée avec les
machines à configurer. Ainsi pour utiliser ansible, il faut installer openssh et générer
une clé sur la machine contrôleur qui sera ensuite copiée sur les nœuds distants sur
lesquels est installé le serveur openssh. Ces étapes peuvent être réalisées de la façon
suivante :

$ sudo apt-get install openssh-server

$ sudo apt-get install openssh-client

Remplissage du fichier /etc/hosts sur la machine contrôleur :

192.168.0.3 Switch
192.168.0.4 R3

192.168.0.5 R2

192.168.0.6 SW5

192.168.0.7 SW6

192.168.0.8 Fortinet

b- Avantages et enjeux de l'automatisation dans les réseaux 


L'utilisation d'Ansible dans les réseaux offre une multitude d'avantages et présente
des enjeux cruciaux. L'un des principaux avantages réside dans sa capacité à
automatiser la configuration, l'orchestration et la gestion des infrastructures réseau.

Tout d'abord, Ansible permet de gagner du temps précieux en évitant les tâches manuelles
fastidieuses. Grâce à son approche déclarative basée sur YAML, il devient possible de
spécifier l'état désiré du réseau plutôt que les étapes nécessaires pour y parvenir. Cela facilite
grandement le déploiement rapide et cohérent des configurations réseau.

De plus, Ansible favorise la reproductibilité grâce à ses playbooks modulaires. Ces


scripts peuvent être visionnés et partagés entre équipes afin d'établir un processus
standardisé pour toutes les opérations liées aux réseaux. Cette uniformisation
contribue également à améliorer la sécurité globale du système.

En termes d'enjeux, il convient toutefois de mentionner quelques points importants


lorsqu'il s'agit d'utiliser Ansible dans un environnement réseau critique :

 Fiabilité :
Bien qu'Ansible soit généralement fiable, toute automatisation comporte un risque
potentiel si elle n'est pas correctement testée ou mise en œuvre avec rigueur. Il est
donc essentiel de valider soigneusement chaque modification apportée au système
avant son déploiement.
 Sécurité :
Comme tout outil utilisant des informations sensibles (comme les mots de passe ou
les clés SSH), il est crucial de mettre en place des mesures de sécurité appropriées
pour protéger ces données. Cela inclut le chiffrement des communications et la
gestion adéquate des accès.
 Complexité :
L'automatisation peut rendre certaines tâches plus complexes, notamment lorsqu'il
s'agit d'intégrer Ansible avec d'autres outils ou systèmes existants. Une bonne
compréhension du réseau ainsi que des compétences techniques avancées sont
nécessaires pour éviter tout problème potentiel.
Cependant, il est essentiel de prendre en compte les enjeux liés à sa mise en œuvre
afin de garantir un déploiement efficace et fiable.

"L'automatisation est le nouvel impératif de notre époque, car elle permet d'accroître
l'efficacité et la fiabilité des systèmes informatiques. Dans le domaine des réseaux,
Ansible se démarque comme un outil incontournable pour automatiser les tâches
courantes et simplifier la gestion quotidienne.

Un avantage majeur d'Ansible est sa simplicité d'utilisation. Grâce à son langage de


configuration simple basé sur YAML, il devient facile de décrire les états souhaités
du réseau. Les administrateurs peuvent ainsi créer rapidement des playbooks qui
spécifient comment configurer et gérer différents appareils ou services réseau.

L'un des enjeux clés dans l'automatisation des réseaux est la rapidité avec laquelle les
modifications peuvent être appliquées. Ansible excelle dans ce domaine grâce à son
architecture sans agent : il utilise SSH pour exécuter ses tâches directement sur les
équipements cibles, évitant ainsi toute installation préalable d'un logiciel
supplémentaire sur ces derniers.

De plus, Ansible offre une grande flexibilité en termes de prise en charge multi-
vendor. Il peut être utilisé avec différentes marques et modèles d'équipements réseau
sans nécessiter une expertise approfondie dans chaque environnement spécifique.
Cela facilite grandement le déploiement rapide et cohérent de configurations réseau
complexes.

Enfin, Ansible favorise également la collaboration entre équipes au sein d'une


organisation grâce à sa nature orientée vers le code source (Infrastructure as Code).
CHAPITRE 2 : INSTALLATION- CONFIGURATION ET DEPLOIEMENT
DU PLAYBOOK SUR LES NŒUDS GERES
SECTION 1 : Introduction
En mettant tous leurs scripts sous contrôle de version via Git par exemple, plusieurs
personnes peuvent travailler ensemble efficacement tout en maintenant un historique
précis des changements effectués.
Dans le domaine de l'automatisation des réseaux, Ansible offre un potentiel immense
pour libérer la créativité et permettre aux administrateurs d'être plus productifs. Avec
sa simplicité d'utilisation, sa rapidité d'exécution et son support multi-vendor, il
s'impose comme une solution incontournable dans le monde en constante évolution
des réseaux informatiques.

Ce chapitre, va donc nous permettre de faire une présentation de l’environnement de


teste puis l’installation d’Ansible et enfin créer les fichiers d’inventaire ainsi que les
playbook pour automatiser les configurations sur les nœuds.
I- Préparation de l’environnement de teste
1- Présentation
a- Description et structure d’Eve-Ng
Eve-Ng est un logiciel de simulation de réseau par la virtualisation sans client, ce qui
le rend différent de GNS3 par exemple. Toutes les manipulations se font en web, il
n’est pas nécessaire d’installer un logiciel sur le poste à partir duquel on veut
travailler.

Le projet EVE-NG est la nouvelle génération du projet UNetlab, qui supporte des
images virtuelles de constructeurs comme Cisco et Nokia, mais aussi des routeurs «
Open Source ».

EVE-ng peut être utilisé pour étudier toutes sortes de technologies. Il donne des
outils à utiliser autour des appareils virtuels et à les interconnecter avec d'autres
appareils physiques ou virtuels. Beaucoup de ses fonctionnalités le rendent simple :
la convivialité, la réutilisabilité, la gérabilité, l'inter connectivité, la distribution et la
capacité à comprendre et à partager des topologies, des travaux, des idées, des
concepts ou des laboratoires virtuels. Cela aide à réduire les coûts et le temps
consacrés à la configuration de ce qui est nécessaire, et les tâches difficiles seraient
simplifiées pour être exécutées. Avec EVE-ng, nous pouvons en apprendre
davantage sur les technologies générales ou spécifiques à un fournisseur et tester de
nouvelles technologies telles que l'automatisation du réseau, le SDN, etc. Les réseaux
d'entreprise peuvent être recréés pour tester les modifications avant de les appliquer
dans un environnement de production.

Image 12 : Page d’authentification d’Eve-ng

b- Architecture du LAb
Voici un aperçu sur la topologie du projet :
Image 13 : Topologie du projet
c- Processus d'installation de Ansible

Principalement, il existe deux types de machines lorsque nous parlons de


déploiement -

 Machine de contrôle − Machine à partir de laquelle nous pouvons gérer


d'autres machines.
 Machine distante − Machines gérées/contrôlées par la machine de contrôle.

Il peut y avoir plusieurs machines distantes gérées par une seule machine de
contrôle. Ainsi, pour gérer les machines distantes, nous devons installer Ansible sur
la machine de contrôle.

Remarque − Windows ne prend pas en charge la machine de contrôle.

Par défaut, Ansible utilise ssh pour gérer la machine distante.

Ansible n'ajoute aucune base de données. Il ne nécessite aucun démon pour le


démarrer ou le faire fonctionner. Lors de la gestion des machines distantes,
Ansible ne laisse aucun logiciel installé ou en cours d'exécution sur celles-ci. Par
conséquent, il n'est pas question de savoir comment le mettre à niveau lors du
passage à une nouvelle version.

Ansible peut être installé sur une machine de contrôle qui a les exigences
mentionnées ci-dessus de différentes manières. Vous pouvez installer la dernière
version via Apt, yum, pkg, pip, OpenCSW, pacman, etc.

Installation via Apt sur Ubuntu Machine

Pour installer Ansible, vous devez configurer PPA sur votre machine. Pour cela, vous
devez exécuter la ligne de code suivante -

$ sudo apt-get update

$ sudo apt-get install software-properties-common

$ sudo apt-add-repository ppa:ansible/ansible $ sudo apt-get update

$ sudo apt-get install ansible


Après avoir exécuté la ligne de code ci-dessus, vous êtes prêt à gérer des machines
distantes via Ansible. Exécutez simplement Ansible–version pour vérifier la version
et juste pour vérifier si Ansible a été installé correctement ou non.

Section2

2- Configuration de base des Nœuds gérés par Ansible


a- Configuration du Switch, routeur et fortinet :

Préparation : Il nous faut le nom, le nom du domaine DNS, l'adresse IP, le masque de
sous réseau, la passerelle par défaut, un nom de login pour l’administrateur le mot de
passe administrateur la connexion à distance (ssh).
Image 14 : Configuration du Switch
Image 15 : Configuration du routeur
b- Création du fichier inventaire :
Ansible contient un fichier d’inventaire, communément appelé inventory et dans
lequel on renseigne les hôtes sur lesquels on effectue nos actions.

Il y a un hôte qu’Ansible ajoute par défaut à son inventaire : le localhost, c’est-à-dire


la machine locale sur laquelle est installée Ansible. Du coup, Ansible comprend qu’il
s’agit de la machine locale et plutôt que de passer par SSH, il interagit directement.

Cependant, bien qu’Ansible dispose de localhost par défaut, il faut avoir renseigné au
moins un nœud. En effet, si on laisse l’inventory vide, on aura le message d’erreur
suivant. Néanmoins, il y a un moyen de contourner cela en ajoutant explicitement
dans l’inventory qu’on veut utiliser la machine locale comme hôte :

localhost ansible_connection=local

Ansible dispose de paramètres pour le fichier d’inventaire et pour vous donner un


exemple, on peut prendre le port pour la connexion en SSH. Lorsqu’Ansible se
connecte à l’une des machines que vous avez spécifiées dans l’inventaire, il tente de
se connecter sur le port 22. Ce dernier est le port par défaut pour les connections en
SSH. Bien évidemment, vous pouvez changer cela à l’aide du paramètre
ansible_ssh_port.

Découvrons ensemble d’autres paramètres :

• ansible_ssh_port : le port à utiliser pour se connecter en SSH. Par défaut, à


22,

• ansible_ssh_user : l’utilisateur avec lequel on s’authentifie. Par défaut, il est


placé à root,

• ansible_ssh_pass : le mot de passe à utiliser pour s’authentifier,

• ansible_ssh_private_key_file : la clé privée SSH à utiliser pour s’authentifier.

Lorsqu’on effectue nos actions, en général, on travaille sur plusieurs hôtes. On


définit ces machines dans notre inventory et en principe, on regroupe ces hôtes par
groupe. Par exemple, imaginons le scénario où l’on veut installer nginx 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 :

[nginx]

myserver.com

192.168.0.11

yourserver.com

Comme vous pouvez le voir, on spécifie un nom de groupe entre crochets : [nginx].

Une fois que nous avons défini notre groupe, il faut dire à notre playbook sur quel
groupe il doit jouer. Pour cela, on peut le spécifier à l’intérieur de notre playbook
avec la variable hosts.

--- name: Configure webserver with nginx and tls

hosts: webservers

become: true

become_user: root

Cela signifie que nous allons joué notre playbook sur les machines du groupe
webservers. En effet, dans notre inventory, nous avions spécifié ce groupe comme
suit :

[webservers]

192.168.0.18

Par conséquent, lorsqu’on dit à notre playbook de jouer sur le groupe webservers, il
joue sur les machines de ce groupe. Dans ce cas précis, il va alors jouer sur la
machine 192.168.0.18.
Image 16 : déclaration des hôtes dans le fichier inventaire
c- Exécution du playbook :

Dans cette section, nous allons créer un playbook Ansible de base pour nous
permettre d’excécuter facilement des tâches plus complexes.

Nous allons créer une version basique de playbook de la commande my first


playbook ci-dessus.

Créons un fichier appelé playbook.yml et éditons-le.

nano playbook.yml

Copions le texte suivant dans le fichier, puis enregistrons et fermons-le

---
- hosts : playbook
Tasks :
- name : run echo command
Command : /bin/echo BONJOUR
Lorsque vous exécutez un playbook, Ansible renvoie des informations sur les
connexions, les names lignes de toutes vos parties et tâches, si chaque tâche a réussi
ou échoué sur chaque machine, et si chaque tâche a apporté une modification sur
chaque machine. Au bas de l'exécution du playbook, Ansible fournit un résumé des
nœuds ciblés et de leurs performances. Les échecs généraux et les tentatives de
communication fatales "injoignables" sont séparés dans les décomptes.
CONCLUSION GENERALE
A travers ce mémoire, nous avons vu tous les aspects majeurs d’Ansible, rendant
ainsi son utilisation très simple intéressant et très puissante.
C’est un outil puissant permettant la gestion de plusieurs machines à distance.
Nous avions eu l’occasion d’augmenter la performance de notre playbook en étudiant
du mieux le protocole ssh mais également les possibilités offertes par le fichier de
configuration Ansible.
Ansible reste un outil qui s’intègre très facilement avec plusieurs autres technologies.
En somme, notre thème de fin d’étude nous a permis de connaître non seulement les
bases de linux mais aussi de pousser la configuration sur les nœuds réseau de façon
automatique.
Fort de cette expérience, nous aimerions essayer par la suite d’approfondir nos
recherches sur l’automatisation des configurations et de pouvoir apporter des
innovations.
BIBLIOGRAPHIE
www.datascienttest.com <ansible
linux.goffinet.org
packetswitch.co.uk./ansible
www.cisco.com
Alphorm.com/formation ansible
https://docs.ansible.com
www.eve-ng.net
www.tchmemore.com

Vous aimerez peut-être aussi