GNU/Linux >> Tutoriels Linux >  >> Linux

Comment créer des rôles Ansible et les utiliser dans Playbook

Ansible est un outil open source de gestion et d'orchestration de la configuration qui facilite l'automatisation des tâches informatiques dans un environnement informatique multiniveau. Avec une seule commande, vous pouvez configurer plusieurs serveurs et déployer des applications sans vous connecter à chacun des serveurs et effectuer la configuration par vous-même. Ce faisant, Ansible simplifie les tâches qui seraient autrement chronophages et fastidieuses.

Avec l'augmentation du nombre de fichiers de playbook exécutant diverses tâches d'automatisation, les choses peuvent devenir un peu complexes. Et c'est là qu'interviennent les rôles Ansible.

Qu'est-ce qu'un rôle Ansible ?

Un rôle ansible est un concept au sein d'Ansible qui traite des idées plutôt que des événements. Essentiellement, un rôle est un niveau d'abstraction utilisé pour simplifier la façon dont les fichiers de playbook sont écrits. Un rôle fournit un squelette pour des composants réutilisables tels que des variables, des modules, des tâches et des faits qui peuvent être chargés dans un fichier Playbook.

Application pratique

Pour mieux comprendre comment les rôles sont utilisés, considérons un scénario où vous avez 8 tâches à effectuer sur 2 nœuds distants. Une approche consisterait à définir toutes les tâches à exécuter sur les hôtes distants sur un seul fichier playbook. Cependant, cela est fastidieux et ajoutera très probablement à la complexité du playbook. Une meilleure approche serait de créer 8 rôles distincts dans lesquels chaque rôle effectuera une seule tâche et appellera plus tard ces rôles dans le fichier ansible-playbook.

L'un des principaux avantages de l'utilisation des rôles est que chaque rôle est indépendant de l'autre. L'exécution d'un rôle ne dépend pas de l'exécution d'un autre rôle. De plus, les rôles peuvent être modifiés et réutilisés, éliminant ainsi le besoin de réécrire les jeux et les tâches dans le fichier Playbook.

Supposons donc que vous souhaitiez créer un fichier playbook pour installer la pile LAMP sur un serveur Debian. Une meilleure façon de procéder consiste à commencer par créer 3 rôles distincts où chacun installera respectivement Apache, MariaDB et PHP sur l'hôte distant. Ensuite, écrivez un playbook et appelez les rôles dans le fichier playbook. Supposons que vous ayez un deuxième serveur Debian dont vous avez besoin pour installer Drupal CMS. Au lieu de réécrire à nouveau les rôles, vous pouvez simplement réutiliser les 3 rôles que vous avez créés précédemment et ajouter d'autres rôles pour l'installation de Drupal.

Vous comprenez la dérive ?

Voyons maintenant comment vous pouvez créer des rôles Ansible.

Comment créer des rôles Ansible

Pour créer un rôle ansible à partir de zéro, exécutez la commande ansible galaxy, l'exemple est illustré ci-dessous :

$ ansible-galaxy init nom-rôle

Par exemple, pour créer un rôle appelé my-role, appelez la commande.

$ ansible-galaxy init my-role

À partir de l'écran ci-dessus, la commande crée le répertoire my-role. Ce répertoire de rôle contient les répertoires ou dossiers suivants par défaut.

  • Le dossier "defaults" - Il contient les variables par défaut qui seront utilisées par le rôle.
  • Le dossier "files" :contient des fichiers pouvant être déployés par le rôle.
  • Le dossier "handlers" :stocke les gestionnaires qui peuvent être utilisés par ce rôle.
  • le dossier "meta" - Contient des fichiers qui établissent les dépendances des rôles.
  • Le dossier "tâches" :il contient un fichier YAML qui énonce les tâches pour le rôle lui-même. Il s'agit généralement du fichier main.yml.
  • Le dossier "templates" :contient des fichiers de modèles qui peuvent être modifiés et alloués à l'hôte distant en cours de provisionnement.
  • Le dossier "tests" :intègre les tests aux fichiers de playbook Ansible.
  • Le dossier 'vars' - Contient les variables qui seront utilisées par le rôle. Vous pouvez les définir dans le fichier playbook, mais il est recommandé de les définir dans ce répertoire.

Pour afficher la structure du répertoire des rôles, exécutez la commande tree suivie du nom du rôle.

$ tree <role-name>

Maintenant, pour la démonstration, nous allons créer trois rôles ansible comme suit :

  • Le rôle des prérequis :installe git
  • Le rôle mongodb :installe le moteur de base de données MongoDB
  • Le rôle apache :installe le serveur Web Apache

Ainsi, en utilisant la même syntaxe que nous avons utilisée précédemment, nous allons créer les rôles comme suit :

$ sudo ansible-galaxy init prerequisites
$ sudo ansible-galaxy init mongodb
$ sudo ansible-galaxy init apache

L'étape suivante consiste à définir chaque rôle que vous avez créé. Pour ce faire, vous devez modifier le fichier main.yml situé dans le dossier "tâches" pour chaque rôle.

rôle -> tâches -> main.yml

Par exemple, pour modifier le rôle des prérequis, naviguez comme indiqué :

$ cd prerequisites/tasks/

Modifiez ensuite le fichier main.yml.

$ sudo vim main.yml

Le rôle d'installation de git est défini comme indiqué :

- name: Install git
  apt:
     name: git
     state: present
     update_cache: yes

Pour MongoDB, nous avons 2 tâches. Installation de MongoDB et démarrage du démon Mongod.

- name: Install MongoDB
  apt:
     name: mongodb
     state: present
     update_cache: yes

- name: Start Mongod daemon
  shell: "mongod &"

Et enfin, pour le serveur web Apache :

- name: install Apache web server
  apt:
     name=apache2
     state=present
     update_cache=yes

Enfin, nous allons créer un fichier playbook appelé stack.yml et appeler les rôles comme indiqué.

---
- hosts: all
  become: yes
  roles:
        -  prerequisites
        -  mongodb
        -  apache

Comme vous pouvez le voir, le fichier playbook semble assez simple par rapport à la définition de chaque tâche pour l'hôte.

Pour vous assurer que nos rôles fonctionnent comme prévu, exécutez le fichier playbook ansible comme indiqué.

$ sudo ansible-playbook /etc/ansible/stack.yml

Le playbook exécutera tous les rôles comme indiqué.

Pour nous assurer que les packages ont été installés avec succès, nous allons vérifier leurs versions comme indiqué :

$ mongod --version
$ apachectl -v
$ git --version

La sortie ci-dessus confirme qu'effectivement, les rôles s'exécutent avec succès et que le package a été installé. Parfait !

Conclusion :

Les rôles Ansible simplifient les fichiers de playbook, en particulier lorsque vous avez plusieurs tâches à exécuter sur plusieurs hôtes. De plus, vous pouvez réutiliser les rôles pour plusieurs hôtes sans avoir à modifier le fichier playbook. Si vous avez trouvé ce guide utile, envoyez-nous un cri et partagez-le avec vos amis.


Linux
  1. Comment j'utilise Ansible et anacron pour l'automatisation

  2. Comment créer et utiliser des sous-domaines

  3. Comment installer et utiliser Ansible sur Debian 11

  4. Comment créer un alias et utiliser la commande Alias ​​sous Linux

  5. Créer et supprimer des rôles dans PostgreSQL

Comment créer et utiliser des faits personnalisés dans Ansible

Guide Ansible :créer un playbook Ansible pour la pile LEMP

Comment définir et utiliser des gestionnaires dans des playbooks Ansible

Comment créer et exécuter un fichier Playbook Ansible

Rôles Ansible et comment les utiliser dans les Playbooks

Comment créer et utiliser un fichier d'échange sous Linux