Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Les 22 & 23 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !
  1. Livres et vidéos
  2. Ansible
  3. Les actions Ansible
Extrait - Ansible Gérez la configuration de vos serveurs et le déploiement de vos applications (3e édition)
Extraits du livre
Ansible Gérez la configuration de vos serveurs et le déploiement de vos applications (3e édition)
2 avis
Revenir à la page d'achat du livre

Les actions Ansible

Objectifs du chapitre et prérequis

1. Contexte et prérequis

Si vous arrivez à ce chapitre, c’est que vous avez déjà abordé de nombreux aspects du fonctionnement interne d’Ansible. Vous avez ainsi abordé les playbooks, les rôles, les modules et enfin les filtres et lookup.

Les actions sont là pour répondre à une dernière problématique : réaliser des actions avant l’exécution d’un module.

2. Fichiers téléchargeables

Vous pouvez récupérer les exemples des répertoires inventaires et variables sur le repository GitHub suivant : https://github.com/EditionsENI/ansible

Vous pouvez également récupérer ces fichiers dans l’archive chapitre-14.tar.gz depuis la page Informations générales.

Découverte des actions Ansible

1. Fonctionnement des actions Ansible

Vous avez abordé dans le chapitre Écriture de modules la notion de module. Ce mécanisme s’exécute sur la machine distante et renvoie ensuite le résultat des opérations à Ansible sous la forme d’un objet JSON.

En fonction des modules, certaines opérations doivent être réalisées avant leur lancement. Pour certains, vous n’avez même aucune instruction au niveau du module en lui-même, comme par exemple avec le module fetch. Si vous prenez ce module et que vous jetez un coup d’œil à son code (fichier lib/ansible/modules/files/fetch.py dans l’arborescence d’Ansible), vous vous apercevrez que ce dernier ne contient aucune instruction Python. En réalité, ce fichier ne contient que des métadonnées (aide, auteur du module, etc.).

En effet, ce module est couplé à un module action qui porte le même nom (fichier lib/ansible/plugins/action/fetch.py). C’est dans ce fichier que se trouvent toutes les instructions Python. De la même manière, vous trouverez les actions copy et template pour les modules du même nom qui prendront en charge la recopie des fichiers à distance.

2. Certificats SSL avec Java

Lors de l’établissement d’une communication sécurisée entre deux serveurs avec le protocole TLS (on parle également de SSL), vous allez suivre un certain nombre d’étapes :

  • Premièrement : le client va récupérer un certificat auprès du serveur. Ce certificat va contenir la clé publique du serveur ainsi...

Création du module d’action java_cert

L’import s’est bien passé. En revanche, trois opérations sont réalisées là où en réalité une seule est réellement nécessaire. Si vous faites le tour des modules existants avec Ansible, le module unarchive a un comportement plus intéressant de ce point de vue. En effet, ce dernier permet de décompresser une archive locale (ou distante) sans avoir à gérer sa recopie. Afin de préciser la prise en charge de la recopie, le module utilise l’option remote_src.

1. Emplacement du fichier d’action

Pour reproduire ce mécanisme, vous allez devoir créer un module action. Ce dernier devra porter le même nom que le module dont vous cherchez à changer le comportement. Le module portant le nom de java_cert, le fichier de l’action associée sera donc java_cert.py.

Comme d’habitude, ce fichier devra être rendu visible par Ansible pour que ce dernier puisse l’utiliser. Vous avez pour cela à votre disposition les options suivantes :

  • La configuration d’Ansible avec le champ action_plugins.

  • La variable d’environnement ANSIBLE_ACTION_PLUGINS.

  • L’utilisation du répertoire action_plugins.

Par la suite, vous travaillerez sur le fichier action_plugins/java_cert.py.

2. Structure du module d’action java_cert

Vous savez où stocker ce module. Concernant son contenu, vous allez devoir respecter un certain nombre d’indications :

  • Déclarer une classe ActionModule héritant de la classe ActionBase.

  • Dans cette classe, surcharger la méthode run afin de changer son comportement.

La méthode...