Tutoriel des rôles anibles

Tutoriel des rôles anibles
Nous avons appris à exécuter les différentes déclarations ansibles dans le terminal anible via ce tutoriel. Nous avons également couvert comment créer un livre de jeu dans ANIBLE et nous allons lister et exécuter les différentes tâches du livre de jeu. Nous allons en apprendre davantage sur les rôles dans Ansible aujourd'hui. Le rôle est une méthode pour réorganiser tout élément dans Ansible.

La structure des rôles dans ANSIBLE nous permet d'importer automatiquement des paramètres spécifiques, des actions, des documents, des scripts et des contrôleurs qui sont basés selon un format de document prédéfini dans Ansible. La principale méthode pour partitionner un livre de jeu dans de nombreux documents est le rôle. Il facilite la création de manuels complexes et facilite également la façon dont nous les réutiliserons dans Ansible. En divisant le livre de jeu, vous pouvez le séparer en plusieurs parties réutilisables. Ainsi, chaque rôle est limité à une fonctionnalité spécifique ou à des résultats prévus. Chacune des procédures, requise pour délivrer la conclusion qui était maintenue dans ce rôle particulier, est définie comme des personnes à charge dans d'autres rôles.

Structure des rôles dans ANSIBLE

Maintenant, comprenons la structure de base des rôles anibles. Pour utiliser des rôles dans ANSIBLE, nous créerons un nouveau répertoire avec l'identité exacte de chaque rôle. Dans la hiérarchie des rôles, les documents sont organisés de manière sous-répertoire. Pour créer le répertoire, nous utiliserons la commande de rôle ANSIBL-galaxy suivante:

[root @ maître anible] # ANSIBLE-GALAXY INIT WIN_PACKAGE_INSTALL_ROLE

Après avoir exécuté la commande ci-dessus, nous obtiendrons le résultat souhaité suivant:

- Rôle win_package_install_role a été créé avec succès

Étant donné qu'Ansible-Galaxy lui-même est inclus dans l'outil ANSIBLE, nous n'avons pas besoin d'installer d'autres composants pour cela. Si vous souhaitez vérifier la structure hiérarchique du rôle et plusieurs répertoires avec une disposition modifiable, les documents seront affichés après l'exécution de la commande ci-dessous:

[root @ maître anible] # arbre win_package_install_role

Comme indiqué, nous avons maintenant un total de 8 répertoires disponibles dans le rôle nommé «win_package_install_role» et 8 documents modifiables.

Parfois, nous devons mettre à jour des documents comme Readme.MD et Meta / Main.yml pour décrire correctement votre rôle même s'il n'est pas nécessaire que le rôle fonctionne. Il est essentiel d'inclure toutes les exigences dans Meta / Main.yml si le rôle doit accéder à des rôles supplémentaires pour exécuter. Cela permettra à ANMIBLE d'accomplir cela comme nécessaire. Pour entrer dans le nouveau répertoire, que nous avons récemment créé, nous rédigerons la déclaration ci-dessous dans le terminal.

[root @ maître anible] # cd win_package_install_role

Ensuite, il affichera le nouveau répertoire ajouté au chemin principal illustré ci-dessous:

[root @ maître anible] ~ / win_package_install_role #

Il n'y a aucune condition préalable nécessaire à votre rôle win_package_install_role. Un format méta-fichier fonctionnel est illustré ici comme exemple. Si vous souhaitez le modifier pour refléter votre nom, le nom de votre entreprise et, le cas échéant, modifiez également la licence en écrivant la commande suivante:

[root @ maître ANSIBLE] ~ / win_package_install_role # nano meta / main.YML

Spécifiant les tâches du rôle dans ANSIBLE

Le plus souvent, le rôle réaliserait une ou même plus d'activités pour mettre en place l'appareil distant selon les critères du rôle. L'installation et la configuration de win_package_install_role est ce que nous devons faire dans cette situation.

win_package_install_role / tâches / Main.YML:
Lorsque nous exécutons un rôle, il recherche par défaut le sous-dossier «Tasks» pour un document appelé Main.yml et ensuite nous allons inscrire toutes les tâches dedans. Pour des rôles plus complexes, vous pouvez diviser les tâches en plusieurs documents et les appeler de la main.YML utilisant les tâches incluant ou les modules de tâches d'importation. Vous trouverez ci-dessous la commande que nous utiliserons pour entrer dans le répertoire de la tâche.

# Fichier de tâches pour win_package_install_role
- Nom: Fetching Product_name Statut d'installation
win_shell: 'get-itemproperty hklm: \ logiciel \ wow6432Node \ Microsoft \ windows \ currentversion \ uninstall \ * | Where-object -property affichename -like "* product_name *" | format-table identifyNumber, name, displayName, localPackage -Autosize '
Registre: installation_status
- déboguer:
MSG:
- "Produit déjà installé"
- "installation_status.stdout_lines "
Quand: installation_status.stdout_lines est défini et installation_status.stdout_lines | longueur> 0
- meta: end_play
Quand: installation_status.stdout_lines est défini et installation_status.stdout_lines | longueur> 0
- Nom: Créer un répertoire cible s'il n'est pas existant
win_file:
Chemin: "Target_Machine_Path"
État: répertoire
- Nom: Téléchargez l'installateur
win_get_url:
URL: "url_to_download_setup"
dest: "target_machine_path"
Registre: télécharger
Quand: url_to_download_setup est défini et url_to_download_setup != ""
- set_fact:
package_name_zip: "télécharger.dest "
Quand: télécharger.Échec == faux
- Nom: Décompressez le package
win_unzip:
src: "package_name_zip"
dest: "target_machine_path"
delete_archive: oui
Enregistrement: décompress_status
Quand: (package_name_zip est défini) et (".zip "dans package_name_zip ou".gz "dans package_name_zip ou".gz "dans package_name_zip)
- Nom: Trouver l'emplacement du fichier de configuration
win_find:
chemins: "target_machine_path"
motifs: ["setup_name"]
Recurse: vrai
Registre: résultat
- Nom: Réglage du chemin de configuration pour le package Windows fourni
set_fact:
setup_path: "résultat.fichiers [0].chemin"
Quand: résultat.Échec == faux et résultat.correspondant> 0
- Nom: Installation "setup_name"
win_package:
chemin: "setup_path"
Product_id: Auto
État: présent
arguments: / q
Registre: statut
- déboguer:
msg: "setup_name installé avec succès"
Quand: statut.rc == 0
- set_fact:
redémarrer_requette: vrai
Quand: statut.Reboot_reQuired est défini et le statut.redémarrage nécessaire
notifier:
- Redémarrez le serveur Windows

Dans ce document, nous avons effectué des tâches comme nous avons récupéré le nom du produit. Nous avons fait un répertoire cible si le répertoire n'est pas disponible. Nous devons télécharger l'URL, débrouiller le package, trouver l'emplacement de la configuration, et nous avons également défini l'emplacement du package de fenêtres, etc.

win_package_install_role / default / Main.YML:
Les paramètres par défaut sont définis dans le répertoire par défaut. Les paramètres par défaut sont ceux qui ont la plus grande signification, ce qui les rend simples à modifier. Le paramètre défini par défaut / principal.YML serait utilisé s'il n'est défini nulle part.

---
# Fichier par défaut pour win_package_install_role
Target_Machine_Path: C: \ Programfiles

win_package_install_role / var / main.YML:
Pour spécifier les paramètres requis pour le rôle, nous construisons un document VAR dans cette étape. Pour éviter tout litige de titre avec des paramètres de l'extérieur du rôle, c'est une option intelligente que nous préfixons les identificateurs des paramètres de rôle.

# fichier VARS pour win_package_install_role
url_to_download_setup: https: // archive.apache.org / dist / httpd / binaires / win32 / httpd-2.2.25-win32-x86-no_ssl.MSI
Product_name: Apache
setup_name: httpd-2.2.25-win32-x86-no_ssl.MSI
Target_Machine_Path: C: \ Installers

win_package_install_role / Handlers / Main.YML:
Les gestionnaires de l'ANSIBL seront stockés à l'intérieur du répertoire du gestionnaire. Les tâches du document sont connues sous le nom de gestionnaires qui peuvent être marqués tout au long d'un jeu pour l'exécution après sa fin. Nous pourrions utiliser les gestionnaires comme nous jugeons nécessaires.

# Fichier des gestionnaires pour win_package_install_role
- Nom: Redémarrez Windows Server
win_reboot:
Quand: redémarrer

win_package_install_role / méta / main.YML:
Une fois que nous avons décidé de diffuser le rôle sur Galaxy.anable.com, nous utiliserons le répertoire de méta pour contenir des métadonnées d'auteur. Les informations sur les rôles ansibles incluent l'éditeur qui est «kalsoom», les systèmes de support et les personnes à charge.

galaxy_info:
Auteur: Kalsoom
Description: Installer le package Windows fourni
Société: Ng Pvt Ltd
Licence: Licence (GPL-2.0-ou-later, MIT, etc.)
min_ansible_version: "2.9 "
Plateformes:
- Nom: Windows

Créer un rôle_main.YML Playbook:

Dans ce playbook, nous passerons le nom du rôle que nous avons initialement créé avec l'hôte. Nous collecterons également les informations liées aux hôtes. Ce qui suit est la commande utilisée pour créer le playbook dans ANIBLE:

[root @ maître anible] # nano role_main.YML
Tous:
Hôtes:
Windows_host:
ANSIBLE_HOST: 192.168.5.220
ANIBLE_USER: ANSIBLE
ANSIBLE_PASSWORD: ******
ANSIBLE_CONNECTION: WINRM
ANSIBLE_PORT: 5986
anible_winrm_server_cert_validation: ignorer

Après cela, nous allons maintenant exécuter l'instruction pour obtenir la sortie souhaitée dans le terminal:

[root @ maître anible] # anible-playbook role_main.yml -i hôte.YML

Conclusion

Le concept de rôles et comment construire un rôle dans ANSIBLE a été couvert dans cet article. La structure hiérarchique des rôles a également été couverte. Chaque répertoire stocké sous le rôle a été expliqué en détail. Pour comprendre comment les rôles sont utilisés dans ANSIBLE, nous avons en outre développé un exemple.