Un module Ansible, qu'est-ce que c'est ?

Copier l'URL

Un module Ansible® est un petit programme qui exécute des opérations sur une machine locale, une interface de programmation d'application (API) ou un hôte distant. Les modules sont constitués de code, généralement en Python, et contiennent des métadonnées qui définissent le moment et l'endroit où est exécutée une tâche d'automatisation précise, ainsi que les utilisateurs qui peuvent l'exécuter. Il existe des milliers de modules Ansible qui peuvent être téléchargés depuis des référentiels tels qu'Ansible Automation Hub et Ansible Galaxy. Vous pouvez également créer vos propres modules et les partager avec d'autres utilisateurs d'Ansible au sein de votre entreprise ou de la communauté Ansible.

Les modules peuvent exécuter des fonctions informatiques pour divers cas d'utilisation, parmi lesquels la mise en réseau, le provisionnement, la sécurité, les communications ainsi que la gestion du cloud, des utilisateurs et des configurations. Pour savoir comment les modules Ansible facilitent l'automatisation de ces cas d'utilisation et d'autres processus, il est important de comprendre la relation entre les modules et les autres composants clés de la technologie d'automatisation Ansible, notamment les tâches, les plays, les playbooks et les rôles.

  • Tâche : élément qui définit l'opération à exécuter sur un hôte géré, sans spécifier de quel hôte il s'agit. Un module peut être invoqué au sein d'une tâche à exécuter sur un hôte, mais cet hôte sera défini en dehors de la tâche, au niveau du play.
  • Play : élément principal de l'exécution d'Ansible, qui inclut une liste de tâches associée à des hôtes gérés spécifiques. Un play contient également des variables et parfois des rôles pour des cas d'utilisation plus complexes.
  • Playbook Ansible : inclut un ou plusieurs plays. Les playbooks sont rédigés en YAML, faciles à lire et à partager.
  • Rôle Ansible : outil qui regroupe les contenus Ansible (tâches, gestionnaires, variables, plug-ins, fichiers) dans un paquet en vue de leur utilisation dans un play. Les rôles Ansible peuvent être importés dans un play, réutilisés dans d'autres plays ou playbooks et partagés avec d'autres utilisateurs des processus automatisés.
  • Collections : ensembles de contenus Ansible conçus pour aider les développeurs de l'automatisation à travailler plus vite et mieux. L'utilisation de collections est la méthode à privilégier pour mettre des modules en paquet et les partager.
  • Plug-ins : morceaux de code qui utilisent les fonctionnalités de base d'Ansible et s'exécutent généralement sur le nœud de contrôle. Les modules sont un type de plug-ins, mais ils exécutent principalement des tâches au niveau d'une cible plutôt que sur le nœud de contrôle. 

En d'autres termes, les tâches désignent les opérations à effectuer et les modules sont les outils qui permettent de les effectuer. Une tâche définit une opération qui doit être réalisée, tandis que le module s'exécute sur un hôte géré pour réaliser cette opération et collecte des valeurs de retour au format JSON une fois celle-ci terminée.

Les modules sont généralement stockés dans la bibliothèque d'un playbook et s'exécutent lorsque le playbook effectue la tâche associée, mais ils peuvent aussi faire partie d'un rôle ou d'une collection. Lorsqu'un rôle Ansible est importé dans un playbook, les modules dans le répertoire du rôle exécutent la ou les tâches contenues dans ce rôle. Un module créé dans un seul play ne sera utilisé qu'une seule fois, tandis que les modules contenus dans un rôle seront exécutés chaque fois que le rôle est appelé dans le playbook.

Les trois exemples de modules suivants sont inclus dans Ansible Core et dans toutes les installations d'Ansible.

  • dnf module (ansible.builtin.dnf) : installe, met à niveau et supprime des paquets et groupes avec dnf, le gestionnaire de paquets par défaut de Fedora.

  • service module (ansible.builtin.service) : gère les services sur les hôtes distants. Il effectue notamment le démarrage, l'arrêt et le redémarrage de services.

  • command module (ansible.builtin.command) : exécute des commandes au niveau de cibles.

Lorsque les modules Ansible existants ne suffisent pas pour vos cas d'automatisation, vous pouvez créer votre propre module afin de réaliser une tâche spécifique. Bien que le processus de création d'un module puisse varier en fonction de la complexité de la tâche d'automatisation souhaitée, vous pouvez développer votre module en suivant les étapes ci-dessous :

  1. Création d'un répertoire de bibliothèque dans votre référentiel
  2. Création d'un fichier de module en Python ou dans le langage de programmation de votre choix au sein du répertoire de bibliothèque
  3. Développement d'un playbook test dans votre répertoire de bibliothèque
  4. Exécution du playbook pour tester le module

Les modules doivent être concis et créés dans le but de résoudre un problème spécifique. C'est ce qui leur permet d'être facilement testés, utilisés, réutilisés et partagés. Ils doivent également fournir une interface définie qui accepte des arguments et être idempotents, c'est-à-dire qu'ils ne doivent apporter aucune modification s'ils détectent que l'état actuel du nœud correspond au résultat souhaité.

Les utilisateurs qui se lancent dans le développement de contenus Ansible ou qui souhaitent rationaliser le processus de création de modules peuvent utiliser un outil communautaire comme Content Builder, qui génère des modules ainsi que d'autres plug-ins Ansible pour des cas d'utilisation tels que la mise en réseau, la sécurité et le cloud.

À l'instar d'autres types de contenus Ansible, les modules sont conçus pour être partageables. Avec une souscription pour Red Hat® Ansible Automation Platform, vous avez la possibilité de mettre vos modules en paquets sous forme de collections et de les importer dans Ansible Automation Hub, ou de les partager au sein de votre entreprise à l'aide d'un référentiel Automation Hub privé. Vous pouvez également distribuer vos modules via Ansible Galaxy, un référentiel gratuit qui permet de partager des contenus Ansible avec les utilisateurs de la communauté.

Si les modules jouent un rôle essentiel dans l'exécution des playbooks, ils ont également une utilité pour les entreprises qui souhaitent adopter une approche plus proactive et perfectionnée en matière de gestion informatique avec l'automatisation orientée événements.

Dans le cadre de l'automatisation orientée événements, les données issues d'événements informatiques sont associées à des opérations automatisées, ce qui réduit la nécessité pour les équipes d'intervenir manuellement pour corriger un problème. Un événement désigne tout fait qui influe sur la distribution d'un service ou sur la gestion de l'infrastructure informatique.

Les équipes qui souhaitent tirer parti de l'automatisation orientée événements peuvent opter pour la solution Event-Driven Ansible. Ce composant de Red Hat Ansible Automation Platform utilise des rulebooks Ansible pour réagir aux événements en effectuant les opérations que vous avez définies, notamment l'exécution de playbooks, de rôles, de modèles et de modules. Un rulebook utilise des instructions conditionnelles au format logique « si ceci, alors cela » pour vous aider à automatiser des tâches courantes, telles que l'exécution d'un playbook de correction en cas de panne.

Lorsque les données issues d'une source d'événement remplissent les conditions définies dans un rulebook, Ansible Automation Platform déclenche les opérations que vous avez définies, comme l'exécution d'un playbook complet ou d'un module unique afin de réaliser une certaine opération. La réponse à apporter dépend entièrement du résultat que vous souhaitez obtenir dans le cas d'un événement spécifique et de ce que vous avez défini dans le rulebook.

L'exemple ci-dessous illustre la manière dont un module de débogage est déclenché lorsqu'un événement provenant d'une source webhook remplit les conditions définies dans un rulebook.

Rulebook rulebook.yml :

--- - name: Écouter les événements sur un webhook hosts: tous ## Définir la source d'événements sources: - ansible.eda.webhook: host: 0.0.0.0 port: 5000 ## Définir les conditions recherchées rules: - name: Dire bonjour condition: event.payload.message == "Ansible, c'est super" ## Définir l'opération à réaliser si la condition est remplie action: run_playbook: name: say-what.yml 

Playbook say-what.yml :

- hosts: localhost connection: local tasks: - debug: msg: "Merci, l'ami !" 

Dans ce cas, le rulebook spécifie que le playbook say-what.yml s'exécute lorsque les conditions définies sont remplies. Dans la mesure où le module de débogage est inclus dans le playbook say-what.yml, il est exécuté à chaque exécution du playbook.

Composant d'Ansible Automation Platform, Event-Driven Ansible offre les capacités de gestion d'événements dont vous avez besoin pour distribuer rapidement et efficacement des services informatiques tout en réalisant des tâches sans intervention manuelle. Votre entreprise peut ainsi consacrer davantage de temps aux projets à plus forte valeur ajoutée.

Dans la mesure où l'automatisation orientée événements s'appuie souvent sur des outils de surveillance tiers pour détecter des événements, l'utilisation de contenus Ansible qui s'intègrent aux plateformes et aux outils existants peut faciliter la transition vers des workflows plus efficaces et automatisés. Avec une souscription pour Red Hat Ansible Automation Platform, vous profitez d'un accès à des milliers de modules, de rôles, de plug-ins et de documents regroupés dans des collections Ansible Content Collections. Ces collections incluent des contenus Red Hat Ansible Certified Content et des contenus validés pour Ansible proposés par nos équipes et nos partenaires, et téléchargeables depuis le référentiel Ansible Automation Hub.

Lire la suite

Article

Apprendre les bases d'Ansible

Ansible permet d'automatiser les processus informatiques tels que le provisionnement et la gestion des configurations. Apprenez les bases d'Ansible en lisant cette présentation des concepts clés.

Article

La gestion des processus métier, qu'est-ce que c'est ?

La gestion des processus métier est une pratique de modélisation, d'analyse et d'optimisation des processus métier de bout en bout qui vous permet d'atteindre vos objectifs métier stratégiques.

Article

Red Hat, un partenaire de choix en matière d'automatisation

La solution Red Hat Ansible Automation Platform comprend tous les outils nécessaires au partage des processus d'automatisation entre les équipes et à la mise en œuvre de l'automatisation à l'échelle de l'entreprise.

En savoir plus sur l'automatisation

Produits

Contrats avec des conseillers stratégiques qui prennent en considération tous les tenants et les aboutissants de votre entreprise, analysent les défis auxquels vous êtes confrontés et vous aident à les relever avec des solutions complètes et économiques.

Plateforme pour la mise en œuvre de l'automatisation à l'échelle de l'entreprise, quelle que soit votre situation.

Ressources

Formations

Cours gratuit

L'essentiel d'Ansible : automatiser en toute simplicité – Présentation technique

Cours gratuit

Red Hat Ansible Automation pour SAP