Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici

Présentation de Ansible

Qu’est-ce que Ansible ?

Ansible est un logiciel open source créé par Michael DeHaan en 2012. Red Hat a racheté la Société Ansible, qui assurait le développement commercial de cette application, en octobre 2015.

Ansible réalise des déploiements, l’exécution de tâches et la gestion de configuration sur plusieurs machines en même temps. Il vous permet ainsi d’orchestrer le cycle de vie complet d’une application.

Architecture

Quand on parle de Ansible, on sous-entend un ensemble de termes tels que modules, inventaires, playbooks, etc. Ce chapitre va présenter ses principaux constituants.

Voici un schéma permettant d’avoir une vue globale du sujet :

images/CE03.png

Dans l’architecture de Ansible, il existe deux types de machines :

  • le nœud de contrôle ;

  • les hôtes gérés.

1. Le nœud de contrôle

La machine sur laquelle est installé Ansible est un nœud de contrôle. Il est exécuté depuis celle-ci. Cette machine contient aussi vos fichiers de projet Ansible. Un nœud de contrôle peut être un ordinateur de bureau, un portable ou un serveur.

2. Les hôtes gérés

Les hôtes gérés sont listés dans un inventaire qui est élément fondamental. Lors de l’exécution de Ansible, un inventaire doit être référencé.

L’inventaire peut être statique ou dynamique, voire même une combinaison des deux. Ansible n’est pas limité à un seul inventaire. La pratique courante consiste à diviser les inventaires, comme par exemple l’environnement de simulation (staging environment) et la production. Ainsi, il est possible d’exécuter un ensemble de tâches dans l’environnement de simulation pour validation, puis d’utiliser exactement les mêmes tâches dans l’environnement de production.

Les inventaires sont des fichiers situés sur le même système d’exploitation sur lequel s’exécute Ansible. L’emplacement de l’inventaire par défaut est /etc/ansible/hosts. Cependant, il peut être référencé lors de l’exécution avec le commutateur court -i ou avec le commutateur long -inventory-file. Il est aussi possible de définir le chemin de son emplacement dans un fichier de configuration Ansible.

Les inventaires seront abordés dans le chapitre Déploiement.

3. Play et playbook

Les plays sont écrits en YAML (YAML Ain’t Markup Language) qui est un langage de représentation de données structurées, comme XML (Extensible Markup Language) ou JSON (JavaScript Object Notation). Un play exécute une série de tâches sur les hôtes...

Installation de Ansible

Nous allons maintenant aborder comment installer Ansible sur RHEL/CentOS 8. Son installation se réalise uniquement sur les nœuds de contrôle, lesquels doivent être un système basé sur Linux ou Unix. Bien que les systèmes Microsoft Windows issent être des hôtes gérés, ils ne peuvent pas agir en tant que nœuds de contrôle.

1. Prérequis

Le paquet RPM platform-python peut être utilisé sans pour autant être installé, depuis AppStream, python3. Pour vérifier la présence de celui-ci au sein de votre système, tapez :

[root@server1 ~]# dnf list installed platform-python 
Paquets installés 
platform-python.x86_64       3.6.8-2.el8_0.0.1          @BaseOS 
[root@server1 ~]# 

Les informations sur ce paquet s’obtiennent avec l’option info de la commande dnf :

[root@server1 ~]# dnf info platform-python.x86_64 
Dernière vérification de l'expiration des métadonnées effectuée 
il y a 0:38:43 le ven. 04 oct. 2019 11:48:10 CEST. 
Paquets installés 
Nom          : platform-python 
Version      : 3.6.8 
Publication  : 2.el8_0.0.1 
Architecture : x86_64 
Taille       : 41 k 
Source       : python3-3.6.8-2.el8_0.0.1.src.rpm 
Dépôt        : @System 
Depuis le dé : BaseOS 
Résumé       : Internal interpreter of the Python programming langage 
URL          : https://www.python.org/ 
Licence      : Python 
Description  : This is the internal interpreter of the Python language for the system. 
            : To use Python yourself, please install one of the available 
               Python 3 packages, 
             : for example python36. 
[root@server1 ~]# 

2. Processus d’installation sur RHEL 8.0

Si vous réalisez une installation de Ansible sur le système RHEL 8.0, vous devez activer le référentiel de Red Hat Ansible Engine dans Red Hat Subscription Manager :

[root@server1...

Hôtes gérés Unix et Linux

Il a été démontré précédemment que les hôtes gérés sont sans agent Ansible. Le nœud de contrôle se connecte à ces derniers à l’aide d’un protocole réseau SSH pour les systèmes de types Unix et Linux. Le but étant de s’assurer que les systèmes sont dans l’état demandé. Néanmoins, ces derniers peuvent avoir des exigences selon le mode de connexion du nœud de contrôle et des modules qui vont s’exécuter.

RHEL 8 utilise le paquet platform-python. Pour vérifier sa présence au sein du système, exécutez la commande rpm :

[root@server2 ~]# rpm -qa platform-python 
platform-python-3.6.8-2.el8_0.0.1.x86_64 
[root@server2 ~]# 

L’installation et l’activation du paquet python36 peuvent s’avérer nécessaires en fonction des exigences des modules à utiliser :

[root@server2 ~]# dnf module install python36 -y 
Dernière vérification de l'expiration des métadonnées effectuée 
il y a 0:05:53 le mar. 08 oct. 2019 23:35:53 CEST. 
Dépendances résolues. 
=================================================================================== 
Paquet             Architecture Version...

Hôtes gérés Microsoft Windows

Des modules Ansible ont été créés pour les systèmes d’exploitation Microsoft Windows. Vous pouvez prendre connaissance de la liste sur le site : https://docs.ansible.com/ansible/latest/modules/list_of_windows_modules.html

Les hôtes gérés Microsoft Windows n’ont pas besoin de Python mais de PowerShell version 3.0 ou supérieure. L’installation de .NET Framework version 4.0 ou ultérieure est aussi requise. Il suffit de configurer une connexion à distance PowerShell avec WinRM.

Pour de plus amples informations, consultez le site web de la communauté Ansible : https://docs.ansible.com/ansible/latest/user_guide/windows.html

Hôtes gérés réseau

L’automatisation de Ansible permet également la configuration de périphériques réseau tels que des commutateurs (switches) et des routeurs. De nombreux systèmes d’exploitation sont pris en charge comme IOS, IOS XR et NX-OS de Cisco, Junos OS de Juniper, OS6, OS9, OS10 de Dell, etc.

L’écriture de playbooks pour les périphériques réseau est identique à l’écriture des playbooks des serveurs. Cependant, les périphériques réseau n’intègrent pas le langage Python. De ce fait, au lieu d’exécuter les modules sur les hôtes gérés, Ansible les exécute sur le nœud de contrôle.

Pour obtenir des informations complémentaires sur les périphériques réseau gérés, consultez le site de la communauté Ansible : https://docs.ansible.com/ansible/latest/network/index.html