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 :

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