Un rôle Ansible, qu'est-ce que c'est ?

Copier l'URL

Les rôles Ansible® sont des unités autonomes et portables de la technologie d'automatisation Ansible, dont l'utilisation est recommandée pour regrouper des tâches et les variables, fichiers, gestionnaires et autres ressources connexes dans une structure de fichiers connue. Tandis que les tâches d'automatisation ne peuvent être écrites que dans un playbook Ansible, les rôles Ansible permettent de regrouper des contenus d'automatisation et de les exécuter dans un ou plusieurs plays, de les réutiliser dans différents playbooks et de les partager avec d'autres utilisateurs via des collections.

Les rôles Ansible sont écrits en YAML, un langage de sérialisation des données lisible par l'utilisateur qui sert à coder des fichiers de configuration. Lorsqu'un rôle est ajouté dans une tâche ou un play, Ansible recherche un fichier main.yml dans au moins un des huit répertoires de rôles standard. Ces répertoires, détaillés ci-dessous, comprennent les tâches (tasks), les gestionnaires (handlers), les modules (library), les valeurs par défaut (defaults), les variables (vars), les fichiers (files), les modèles (templates) et les métadonnées (meta) d'un rôle.

roles/ common/ # cette hiérarchie représente un rôle tasks/ # main.yml # -- les fichiers de tâches peuvent inclure des fichiers plus petits si nécessaire handlers/ # main.yml # -- fichier de gestionnaires templates/ # -- fichiers à utiliser avec la ressource de modèle ntp.conf.j2 # ------- les modèles se terminent par .j2 files/ # bar.txt # -- fichiers à utiliser avec la ressource de copie foo.sh # -- fichiers du script à utiliser avec la ressource du script vars/ # main.yml # -- variables associées à ce rôle defaults/ # main.yml # -- variables de second plan par défaut pour ce rôle meta/ # main.yml # -- dépendances du rôle library/ # les rôles peuvent également inclure des modules personnalisés module_utils/ # les rôles peuvent également inclure des utilitaires module_utils personnalisés lookup_plugins/ # ou d'autres types de plug-ins, lookup ici webtier/ # structure similaire à la hiérarchie common, créée pour la surveillance du rôle webtier/ # "" fooapp/ # "" 

Pour utiliser un rôle Ansible, il faut l'appeler dans un playbook soit en le listant avec l'option roles, soit en l'ajoutant dans la section des tâches des rôles à l'aide de la commande include_role ou import_role. Les rôles listés avec l'option roles ou ajoutés à l'aide de la commande import_role sont exécutés avant les autres tâches du play, tandis que les rôles ajoutés à l'aide de la commande include_role sont exécutés dans l'ordre dans lequel ils ont été définis dans la liste de tâches.

Les rôles et les playbooks Ansible sont des outils d'organisation et d'exécution des tâches d'automatisation qui n'ont pas la même utilité. Selon les cas d'utilisation et leur niveau de maîtrise d'Ansible, les équipes pourront choisir de créer des rôles Ansible ou d'écrire toutes les tâches dans un playbook Ansible.

La plupart des équipes de développement de l'automatisation et d'administration système commencent à créer des contenus d'automatisation à l'aide de playbooks individuels. Un playbook est une liste de tâches d'automatisation qui s'exécutent pour un inventaire donné. Les tâches peuvent être organisées dans un play, qui est un groupe d'une ou plusieurs tâches associées à un hôte spécifique et exécutées dans l'ordre. Un playbook peut contenir un ou plusieurs plays, ce qui offre plus de flexibilité pour exécuter les processus automatisés avec Ansible dans un fichier unique.

Si l'utilisation de playbooks est une méthode efficace pour automatiser les processus avec Ansible, l'écriture de l'ensemble des tâches dans un playbook n'est pas toujours la meilleure approche. Lorsque le champ d'application et les variables des instances sont complexes et que la réutilisation est utile, il peut être plus judicieux de créer la plupart des contenus d'automatisation dans des rôles Ansible qui seront ensuite appelés dans des playbooks.

L'exemple suivant illustre l'utilisation du rôle linux-systemr-roles.timesync dans un playbook. Dans cette instance, plus de quatre tâches seraient nécessaires pour effectuer ce que fait un seul rôle.

- name: Gestion de timesync avec trois serveurs hosts: cibles vars: timesync_ntp_servers: - hostname: foo.exemple.com iburst: true - hostname: bar.exemple.com iburst: true - hostname: baz.exemple.com iburst: true roles: - linux-system-roles.timesync 

L'utilisation de rôles Ansible offre des avantages que l'écriture de tous les contenus d'automatisation dans un seul playbook n'apporte pas.

Réutilisation et partage

Les rôles sont conçus en tant qu'unités d'automatisation réutilisables. Puisqu'ils permettent de séparer des groupes logiques de tâches d'automatisation du contexte d'un play ou playbook unique, les rôles peuvent être réutilisés dans plusieurs plays ou différents playbooks et partagés en vue de leur réutilisation dans d'autres projets.

Modularité

Les rôles favorisent une approche modulaire de l'automatisation, où chaque rôle est responsable d'une partie spécifique de la fonctionnalité. Cette approche facilite par ailleurs la compréhension, la gestion et la correction du code d'automatisation.

Organisation

Les rôles Ansible permettent d'organiser les tâches, les modèles, les fichiers et les variables de manière structurée. Cette structure facilite la gestion de configurations d'automatisation complexes, puisque tout ce qui se rapporte à un rôle donné est contenu dans son répertoire.

Paramétrage

Les rôles permettent de définir des variables par défaut qui peuvent être remplacées lorsque le rôle est utilisé dans un playbook Ansible. Il est ainsi plus facile d'adapter le comportement d'un rôle à différents environnements ou cas d'utilisation sans modifier le rôle lui-même.

Gestion des versions et des dépendances

Il est possible de versionner des rôles et d'indiquer leurs dépendances dans un fichier meta/main.yml au sein d'un rôle. Cette fonctionnalité permet de gérer les versions et les dépendances de manière explicite, et ainsi d'assurer la stabilité et la cohérence dans différents environnements.

Test

La structure des rôles facilite l'application des méthodes de test. Il est possible de créer des tests propres à un rôle afin de s'assurer qu'il se comporte comme prévu avant de l'intégrer à de plus longs playbooks.

Simplicité

Dans le cadre de projets plus volumineux ou complexes, les rôles simplifient l'utilisation des playbooks Ansible. Plutôt que d'avoir un long playbook détaillant les tâches, gestionnaires et modèles, il est possible d'écrire des playbooks bien plus courts que les utilisateurs pourront facilement lire et comprendre. Cette approche facilite aussi l'identification des rôles pouvant être réutilisés dans d'autres projets, ce qui accélère l'écriture des contenus d'automatisation et simplifie les workflows. 

Guide du débutant pour Red Hat Ansible Automation Platform

Pour créer un rôle, vous pouvez utiliser la commande role_name init du rôle ansible-galaxy. Cette opération créera un répertoire qui suit la structure standard des répertoires de rôles. Une fois que vous avez vérifié le répertoire, vous pouvez définir des tâches, des variables par défaut et d'autres composants. Bien qu'elle ne soit pas nécessaire au fonctionnement du rôle, il vous est possible d'ajouter de la documentation dans un fichier README.md et dans le fichier meta/main.yml.

La création d'un rôle peut nécessiter une maîtrise plus approfondie d'Ansible et peut s'avérer difficile pour les équipes qui apprennent encore à créer des contenus automatisés. Pour créer des contenus plus facilement, quel que soit leur niveau d'expérience, les équipes d'automatisation peuvent s'appuyer sur Red Hat® Ansible Lightspeed with IBM watsonx Code Assistant, un service d'IA générative qui fournit des recommandations de code basées sur les meilleures pratiques d'Ansible. Avec cet outil, vous pouvez décrire le processus automatisé à créer à l'aide d'invites en langage naturel et vous recevez des suggestions de contenus à une ou plusieurs tâches. Les tâches générées peuvent ensuite être incluses dans un rôle ou un playbook Ansible.

Ansible Lightspeed with watsonx Code Assistant facilite la création et la gestion du code Ansible, et en améliore la qualité, ce qui augmente la productivité et accélère l'adoption. 

La facilité de partage des rôles Ansible vous permet d'utiliser des rôles fiables et testés pour automatiser vos processus. Vous pouvez partager ces rôles à l'aide des référentiels suivants.

  • Ansible Galaxy : référentiel gratuit qui permet de partager des rôles et d'autres contenus Ansible avec la communauté Ansible à plus grande échelle. Les rôles peuvent y être chargés via une interface en ligne de commande (CLI), tandis que les collections peuvent être partagées via l'interface web. Étant donné qu'Ansible Galaxy est un site communautaire, les contenus proposés ne sont pas vérifiés, certifiés, ni pris en charge par Red Hat.
  • Ansible Automation Hub : référentiel centralisé dans lequel il est possible de chercher, télécharger et partager des collections de contenus Ansible Content Collections. Inclus dans la souscription pour Red Hat Ansible Automation Platform. Hébergé par Red Hat, ce référentiel regroupe des contenus certifiés et validés par Red Hat et nos partenaires éditeurs de logiciels indépendants.
  • Référentiel Automation Hub privé : référentiel sur site qui permet aux entreprises de gérer, partager et sélectionner des contenus en interne, uniquement pour leurs équipes. Les rôles et les contenus d'automatisation peuvent être partagés avec toutes les équipes de l'entreprise, ce qui simplifie les workflows et accélère l'automatisation des processus. 

La solution Red Hat Ansible Automation Platform est une plateforme unifiée conçue pour aider les entreprises à accélérer leurs processus, les orchestrer et innover grâce à l'automatisation. Avec une souscription Red Hat, vous avez accès aux collections de contenus certifiés Red Hat et aux contenus validés pour Ansible, disponibles dans le référentiel Ansible Automation Hub.

Également inclus dans chaque souscription, le service Red Hat Ansible Lightspeed with IBM watsonx Code Assistant facilite l'écriture et l'amélioration des tâches incluses dans les rôles Ansible pour aider les équipes à créer efficacement des contenus d'automatisation. Entièrement intégré à Visual Studio Code, Ansible Lightspeed répond aux besoins des équipes de développement de l'automatisation, quels qu'ils soient. Celles-ci peuvent créer des rôles et des playbooks Ansible en adoptant les meilleures pratiques, sans avoir à passer d'un environnement de développement à un autre.

Ansible Lightspeed comprend également des fonctionnalités de mise en correspondance des sources de contenus, qui vous permettent de vérifier les données d'entraînement source servant de base aux suggestions et de prendre de meilleures décisions lors de la création de rôles pour les utilisateurs. Ansible Lightspeed exploite des modèles entraînés sur des milliers de rôles issus de la communauté Ansible et de points de données fournis par Red Hat. Cet outil permet donc de créer du code Ansible et de l'améliorer de manière fiable et transparente, afin de répondre aux besoins de l'entreprise et d'accélérer l'adoption.

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