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

Déploiement

Gestion des inventaires

Dans le chapitre précédent, nous avons évoqué que les hôtes gérés étaient listés dans un inventaire, lequel peut être défini de deux manières différentes :

  • un inventaire d’hôte statique ;

  • un inventaire d’hôte dynamique.

1. Inventaire statique

Le fichier d’inventaire statique par défaut du système est /etc/ansible/hosts. Toutefois, la pratique courante consiste à ne pas l’utiliser, mais plutôt à définir un emplacement différent pour des raisons de flexibilité. Il suffit d’ajouter à la commande ansible le commutateur long --inventory ou le commutateur court -i.

Un fichier d’inventaire statique est un fichier texte qui définit les hôtes que Ansible doit gérer. Ce fichier peut être écrit dans les formats INI ou bien YAML.

a. Fichier d’inventaire au format INI

Le format INI est sans doute le plus rencontré. Il peut contenir :

  • une simple liste de noms d’hôtes ou d’adresses IP ;

  • une liste de groupes d’hôtes. Un groupe peut également contenir un groupe d’hôtes.

Liste de noms d’hôtes

Un fichier d’inventaire peut comporter une liste d’adresses IP ou de noms d’hôtes gérés. Chaque élément est placé sur une seule ligne. Le croisillon ou carré (hash en anglais) « # » définit un commentaire sur une seule ligne.

Exemple

# Liste d'hôtes 
server2.staff.local 
server3.staff.local 
server3.staff.local 
dbserver1.staff.local 
dbserver2.staff.local 
10.14.8.1 
10.14.8.2 

Groupes d’hôtes

Une section commence par un nom de groupe d’hôtes écrit entre crochets. Les noms d’hôtes ou les adresses IP sont énumérés à la suite. Chaque élément est placé sur une seule ligne :

[serveurs_web] 
server2.staff.local 
server3.staff.local 
10.14.8.1 

Il est même recommandé d’organiser les hôtes en plusieurs groupes selon le rôle de l’hôte et, de son emplacement physique, qu’il soit en production ou non. Ainsi, vous pouvez appliquer des plays Ansible...

Configuration de Ansible

Ansible, comme dans la plupart des applications informatiques, nécessite d’avoir au moins un fichier de configuration sur le nœud de contrôle. Nous allons voir comment il le choisit, son emplacement a donc une importance.

1. Emplacement du fichier ansible.cfg

Ansible recherche, dans un ordre précis, l’emplacement du fichier de configuration :

  • S’il est spécifié par la variable d’environnement ANSIBLE_CONFIG.

  • S’il est situé dans le répertoire courant, c’est-à-dire là où est exécutée la commande ansible.

  • S’il faut utiliser le fichier de configuration par défaut /etc/ansible/ansible.cfg, fourni lors de l’installation de Ansible.

  • S’il est situé dans le répertoire personnel de l’utilisateur qui exécute la commande ansible (~/.ansible.cfg).

En d’autres termes, Ansible utilise le premier fichier de configuration qu’il trouve.

La bonne pratique est de créer un fichier ansible.cfg dans le répertoire où vous exécutez Ansible.

Identifier le fichier de configuration utilisé

Si vous voulez connaître le fichier de configuration utilisé par Ansible, vous pouvez utiliser la commande ansible suivie du commutateur --version :

Dans le cas suivant, le fichier de configuration par défaut de Ansible situé dans le répertoire /etc/ansible est utilisé :

[root@server1 ~]# ansible --version 
ansible 2.8.5 
  config file = /etc/ansible/ansible.cfg ...

Utilisation des commandes ad hoc

Les commandes ad hoc exécutent une tâche unique, elles ne sont donc pas réutilisables sur un ou plusieurs nœuds gérés. Leur utilisation permet de réaliser des tests ou des modifications facilement et rapidement comme, par exemple, effectuer le redémarrage d’un service sur plusieurs hôtes ou bien de s’assurer qu’une règle de pare-feu est appliquée.

La commande pour exécuter une commande ad hoc est /usr/bin/ansible :

ansible <hosts> -m <module> [-a <module args>] [-i <inventaire>] 
  • <hosts> spécifie les hôtes gérés sur lesquels la commande ad had doit être appliquée.

  • -m indique l’utilisation d’un module Ansible.

  • -a passe les arguments nécessaires au module invoqué par le commutateur -m.

  • -i définit le fichier inventaire à utiliser.

Ansible, par défaut, n’utilise que cinq processus simultanément. Lorsque vous avez plus d’hôtes que cette valeur prédéfinie, Ansible prend plus de temps pour communiquer avec ces derniers. Il faut, pour pallier cela, spécifier le nombre de processus à dupliquer avec le commutateur -f. Ce principe est appelé « fork » .

Exemple

Pour redémarrer les serveurs du groupe web, il est possible d’augmenter le nombre de processus parallèles à 12 :

[root@server1 ~]# ansible web -a "/sbin/reboot" -f 12 
[root@server1 ~]# 

1. Module de fichiers

Le module File permet de définir les attributs de fichiers. Il permet aussi de créer ou de supprimer des liens symboliques ou des répertoires.

Pour créer, sur le server2, le répertoire /root/info avec les droits 750, l’utilisateur propriétaire et le groupe propriétaire root :

[root@server1 inventaire]# ansible server2 -m file -a "dest=/root/info \ 
> mode=750 owner=root group=root state=directory" -i machines.ini 
server2 | CHANGED => { 
    "ansible_facts": { 
        "discovered_interpreter_python": "/usr/libexec/platform-python" 
    }, 
    "changed": true, ...