Introduction
Dans ce laboratoire, vous apprendrez à dépanner les problèmes courants rencontrés lors de l'utilisation d'Ansible sur Red Hat Enterprise Linux. Vous acquerrez une expérience pratique dans l'identification et la résolution d'une variété de problèmes, de la configuration initiale de l'environnement aux erreurs courantes de playbooks et aux problèmes de connectivité des hôtes gérés. Les exercices couvrent la correction de la syntaxe YAML, la correction des erreurs de templating Jinja2 et le diagnostic des problèmes sur les systèmes distants.
Vous commencerez par préparer un environnement RHEL et configurer Ansible pour une journalisation efficace. Ensuite, vous plongerez dans des scénarios de dépannage pratiques, en utilisant le mode de vérification (check mode) d'Ansible pour diagnostiquer les problèmes liés aux services et en corrigeant les configurations de pare-feu pour résoudre l'inaccessibilité des hôtes. À la fin de ce laboratoire, vous disposerez d'un ensemble complet de compétences pour maintenir des flux de travail d'automatisation Ansible robustes.
Préparer l'environnement RHEL et configurer la journalisation Ansible
Dans cette étape, vous préparerez votre environnement Red Hat Enterprise Linux pour l'automatisation Ansible. Cela implique l'installation du logiciel nécessaire, la création d'un répertoire de projet dédié et la configuration d'un fichier de configuration de base pour contrôler le comportement d'Ansible et activer la journalisation. Une configuration adéquate est la première étape vers une automatisation et un dépannage efficaces.
Installation d'Ansible
Tout d'abord, vous devez installer Ansible. Le moteur d'automatisation principal est fourni par le package
ansible-core. Utilisez le gestionnaire de paquetsdnfavecsudopour l'installer. Le drapeau-yrépond automatiquement "oui" à toute invite de confirmation.sudo dnf install -y ansible-coreVous devriez voir une sortie indiquant que le package est en cours d'installation avec ses dépendances.
Last metadata expiration check: ... Dependencies resolved. ================================================================================ Package Architecture Version Repository Size ================================================================================ Installing: ansible-core x86_64 <version> <repo> 2.8 M ... Transaction Summary ================================================================================ Install XX Packages Total download size: XX M Installed size: XX M ... Complete!Création d'un répertoire de projet
Il est recommandé d'organiser vos projets Ansible dans des répertoires dédiés. Cela permet de séparer proprement vos playbooks, votre inventaire et vos fichiers de configuration. Créons un répertoire nommé
ansible_troubleshootingdans votre dossier de projet personnel et naviguons à l'intérieur.mkdir -p ~/project/ansible_troubleshooting cd ~/project/ansible_troubleshootingDésormais, toutes les commandes de ce laboratoire seront exécutées depuis le répertoire
~/project/ansible_troubleshooting.Création d'un fichier d'inventaire Ansible
Un inventaire est un fichier qui liste les hôtes (ou nœuds) qu'Ansible gérera. Comme vous travaillez sur une seule VM LabEx, vous configurerez Ansible pour gérer la machine locale elle-même.
Créez un fichier nommé
inventoryet ajoutez-ylocalhost. La partieansible_connection=localindique à Ansible d'exécuter les commandes directement sur le nœud de contrôle (votre VM) sans utiliser SSH.echo "localhost ansible_connection=local" > inventoryVous pouvez vérifier le contenu du fichier en utilisant la commande
cat:cat inventorySortie attendue :
localhost ansible_connection=localConfiguration de la journalisation Ansible
Un fichier
ansible.cfgvous permet de personnaliser le comportement d'Ansible pour un projet spécifique. Lorsqu'il est placé dans le répertoire du projet, ses paramètres remplacent les valeurs par défaut du système. Ici, vous créerez ce fichier pour spécifier l'emplacement de votre inventaire et activer la journalisation. La journalisation est cruciale pour le dépannage, car elle enregistre des informations détaillées sur chaque exécution de playbook.Utilisez l'éditeur
nanopour créer le fichieransible.cfg.nano ansible.cfgMaintenant, copiez et collez le contenu suivant dans l'éditeur
nano. Cette configuration indique à Ansible d'utiliser le fichierinventorydans le répertoire courant et d'écrire toutes les sorties de journalisation dans un fichier nomméansible.log.[defaults] inventory = /home/labex/project/ansible_troubleshooting/inventory log_path = /home/labex/project/ansible_troubleshooting/ansible.logPour enregistrer le fichier dans
nano, appuyez surCtrl+X, puis surYpour confirmer, et enfin surEntréepour écrire le fichier.Votre environnement est maintenant entièrement préparé. Vous avez Ansible installé et un répertoire de projet configuré avec un inventaire local et la journalisation activée, prêt pour les étapes suivantes.
Corriger les erreurs de syntaxe et d'indentation YAML dans un Playbook
Dans cette étape, vous apprendrez à diagnostiquer et à corriger deux des types d'erreurs les plus courants dans les playbooks Ansible : les erreurs de syntaxe YAML et l'indentation incorrecte. YAML, le langage utilisé pour écrire les playbooks, est très strict quant à sa structure. Un seul espace mal placé ou un caractère spécial non cité peut empêcher un playbook de s'exécuter. Vous utiliserez la commande ansible-playbook --syntax-check, un outil essentiel pour valider vos playbooks avant leur exécution.
Création d'un Playbook avec des erreurs intentionnelles
Tout d'abord, vous allez créer un nouveau fichier de playbook nommé
webserver.ymldans votre répertoire de projet (~/project/ansible_troubleshooting). Ce fichier contient des erreurs délibérées que vous allez corriger.Utilisez
nanopour créer le fichier :nano webserver.ymlCopiez et collez le contenu suivant dans l'éditeur. Notez les deux erreurs délibérées : une chaîne non citée contenant un deux-points et une indentation incorrecte pour la deuxième tâche.
--- - name: Configure Web Server hosts: localhost vars: ## ERROR 1: Unquoted colon in string package_comment: This is a package: httpd tasks: - name: Install httpd package ansible.builtin.dnf: name: httpd state: present ## ERROR 2: Incorrect indentation - name: Create a test index page ansible.builtin.copy: content: "<h1>Welcome to Ansible</h1>" dest: /var/www/html/index.htmlEnregistrez le fichier et quittez
nanoen appuyant surCtrl+X, puisY, etEntrée.Identification et correction de l'erreur de syntaxe YAML (deux-points non cités)
Maintenant, exécutez une vérification de syntaxe sur le playbook que vous venez de créer. Cette commande analysera le fichier et signalera tout problème de syntaxe sans exécuter réellement les tâches.
ansible-playbook --syntax-check webserver.ymlSortie attendue (Erreur) : Vous verrez une erreur car la valeur de
package_commentcontient un deux-points (:) mais n'est pas entourée de guillemets. YAML interprète le deux-points comme un séparateur clé-valeur, ce qui entraîne une erreur de syntaxe.ERROR! We were unable to read either as JSON nor YAML, these are the errors we found: - Syntax Error while loading YAML. did not find expected ':' The error appears to be in '/home/labex/project/ansible_troubleshooting/webserver.yml': line 6, column 41, but may be elsewhere in the file depending on the exact syntax problem. The offending line appears to be: vars: package_comment: This is a package: httpd ^ hereSolution : Pour corriger cela, vous devez entourer la chaîne de guillemets doubles. Ouvrez à nouveau le fichier avec
nano:nano webserver.ymlModifiez la ligne sous
varspour ajouter des guillemets :## ... (reste du fichier) vars: ## FIX: Add quotes around the string with a colon package_comment: "This is a package: httpd" ## ... (reste du fichier)Enregistrez et quittez l'éditeur.
Identification et correction de l'erreur d'indentation YAML
Une fois la première erreur corrigée, exécutez à nouveau la vérification de syntaxe.
ansible-playbook --syntax-check webserver.ymlSortie attendue (Erreur) : Cette fois, Ansible signalera une erreur différente liée à la structure du playbook.
ERROR! A malformed block was encountered. The error appears to be in '/home/labex/project/ansible_troubleshooting/webserver.yml': line 13, column 11, but may be elsewhere in the file depending on the exact syntax problem. The offending line appears to be: ## ERROR 2: Incorrect indentation - name: Create a test index page ^ hereCette erreur se produit car YAML utilise l'indentation pour définir la structure. Tous les éléments d'une liste (dans ce cas, les tâches, qui sont des éléments de liste commençant par
-) doivent avoir le même niveau d'indentation. La deuxième tâche,Create a test index page, est indentée trop loin.Solution : Ouvrez le fichier une dernière fois pour corriger l'indentation.
nano webserver.ymlSupprimez les espaces supplémentaires avant la deuxième tâche afin que son tiret (
-) s'aligne parfaitement avec le tiret de la première tâche.## ... (reste du fichier) tasks: - name: Install httpd package ansible.builtin.dnf: name: httpd state: present ## FIX: Correct the indentation to align with the previous task - name: Create a test index page ansible.builtin.copy: content: "<h1>Welcome to Ansible</h1>" dest: /var/www/html/index.htmlEnregistrez et quittez l'éditeur.
Vérification du Playbook corrigé
Enfin, exécutez la vérification de syntaxe une dernière fois.
ansible-playbook --syntax-check webserver.ymlCette fois, la commande devrait se terminer sans aucune erreur, et le nom du playbook sera affiché, confirmant que la syntaxe est maintenant correcte.
Sortie attendue (Succès) :
playbook: webserver.yml
Résoudre les erreurs de guillemets et de chemins de modèles Jinja2
Dans cette étape, vous allez résoudre les erreurs liées à Jinja2, le puissant moteur de templating d'Ansible. Vous apprendrez pourquoi les expressions Jinja2 doivent souvent être mises entre guillemets et comment déboguer les problèmes lorsque le playbook ne trouve pas un fichier de modèle spécifié. Ce sont des erreurs d'exécution courantes qui surviennent après qu'un playbook a déjà passé une vérification de syntaxe.
Création d'un fichier de modèle Jinja2
Tout d'abord, vous avez besoin d'un fichier de modèle. Contrairement à un fichier statique, un modèle peut contenir des variables qu'Ansible remplacera par des valeurs réelles lors de l'exécution du playbook. Vous allez créer un modèle HTML simple.
Utilisez
nanopour créer un fichier nomméindex.html.j2dans votre répertoire de projet (~/project/ansible_troubleshooting). L'extension.j2est une convention courante pour les modèles Jinja2.nano index.html.j2Copiez et collez le contenu HTML suivant dans l'éditeur. Notez le placeholder
{{ welcome_message }}, qui est une variable Jinja2.<h1>{{ welcome_message }}</h1> <p>This page was deployed by Ansible.</p>Enregistrez le fichier et quittez
nano(Ctrl+X,Y,Entrée).Modification du Playbook pour utiliser le modèle et introduire des erreurs
Maintenant, modifiez votre playbook
webserver.ymlpour utiliser le moduleansible.builtin.template. Vous introduirez également deux nouvelles erreurs : une variable Jinja2 non citée et un chemin de modèle incorrect.Ouvrez
webserver.ymlavecnano:nano webserver.ymlRemplacez tout le contenu du fichier par ce qui suit. La directive
become: trueindique à Ansible d'exécuter les tâches avec des privilèges administratifs (en utilisantsudo), ce qui est nécessaire pour installer des logiciels et écrire des fichiers dans des répertoires système comme/var/www/html.--- - name: Configure Web Server hosts: localhost become: true vars: package_name: httpd welcome_message: "Welcome to Ansible with Jinja2" tasks: - name: Install httpd package ansible.builtin.dnf: ## ERROR 1: Unquoted Jinja2 variable name: { { package_name } } state: present - name: Create a test index page from template ansible.builtin.template: ## ERROR 2: Incorrect template source path src: index.j2 dest: /var/www/html/index.htmlEnregistrez et quittez l'éditeur.
Identification et correction de l'erreur de guillemets Jinja2
Même s'il s'agit d'un problème Jinja2, il peut se manifester par une erreur de syntaxe YAML. Exécutez le vérificateur de syntaxe pour voir comment Ansible l'interprète.
ansible-playbook --syntax-check webserver.ymlSortie attendue (Erreur) : Vous obtiendrez une erreur de syntaxe car une valeur YAML commençant par
{{est traitée comme une construction spéciale et doit être mise entre guillemets pour être interprétée comme une chaîne.ERROR! A malformed block was encountered. The error appears to be in '/home/labex/project/ansible_troubleshooting/webserver.yml': line 11, column 19, but may be elsewhere in the file depending on the exact syntax problem. The offending line appears to be: ## ERROR 1: Unquoted Jinja2 variable name: {{ package_name }} ^ hereSolution : Ouvrez
webserver.ymlet entourez la variable Jinja2 de guillemets doubles.nano webserver.ymlModifiez la tâche
Install httpd package:## ... (reste du fichier) tasks: - name: Install httpd package ansible.builtin.dnf: ## FIX: Quote the Jinja2 expression name: "{{ package_name }}" state: present ## ... (reste du fichier)Enregistrez et quittez. La vérification de syntaxe devrait maintenant réussir.
Identification et correction de l'erreur de chemin de modèle
Maintenant que la syntaxe est correcte, essayez d'exécuter le playbook.
ansible-playbook webserver.ymlSortie attendue (Erreur) : Le playbook échouera, mais cette fois, il s'agit d'une erreur d'exécution, pas d'une erreur de syntaxe. Le message d'erreur indique clairement que le fichier source
index.j2n'a pas pu être trouvé.TASK [Create a test index page from template] ********************************** fatal: [localhost]: FAILED! => {"changed": false, "msg": "Could not find or access '/home/labex/project/ansible_troubleshooting/index.j2' on the Ansible Controller."}Cela se produit car le paramètre
srcde votre playbook pointe versindex.j2, mais le fichier que vous avez créé s'appelleindex.html.j2.Solution : Ouvrez
webserver.ymlune dernière fois et corrigez le nom du fichier.nano webserver.ymlModifiez le paramètre
srcdans la tâcheCreate a test index page from template:## ... (reste du fichier) - name: Create a test index page from template ansible.builtin.template: ## FIX: Correct template source filename src: index.html.j2 dest: /var/www/html/index.html ## ... (reste du fichier)Enregistrez et quittez l'éditeur.
Exécution réussie du Playbook
Exécutez à nouveau le playbook. Il devrait maintenant terminer toutes les tâches avec succès.
ansible-playbook webserver.ymlSortie attendue (Succès) :
PLAY [Configure Web Server] **************************************************** TASK [Gathering Facts] ********************************************************* ok: [localhost] TASK [Install httpd package] *************************************************** changed: [localhost] TASK [Create a test index page from template] ********************************** changed: [localhost] PLAY RECAP ********************************************************************* localhost : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Utiliser le mode de vérification pour dépanner les erreurs de service sur les hôtes gérés
Dans cette étape, vous apprendrez à utiliser l'une des fonctionnalités de dépannage les plus puissantes d'Ansible : le mode de vérification (Check Mode). Le mode de vérification (activé avec le drapeau --check) vous permet d'exécuter un playbook pour voir quelles modifications seraient apportées, sans modifier réellement quoi que ce soit sur le système. Ceci est incroyablement utile pour tester en toute sécurité les playbooks et diagnostiquer les problèmes, tels que les noms de service incorrects, avant qu'ils ne causent de réels problèmes.
Création d'un Playbook pour gérer un service
Vous allez maintenant créer un nouveau playbook,
service.yml, conçu pour s'assurer que le service du serveur webhttpdest en cours d'exécution. Cependant, vous utiliserez intentionnellement un nom de service incorrect pour simuler une erreur courante.Utilisez
nanopour créer le fichierservice.ymldans votre répertoire~/project/ansible_troubleshooting.nano service.ymlCopiez et collez le contenu suivant. Notez que le nom du service est défini sur
apache2, ce qui est un nom courant pour le serveur web Apache sur d'autres distributions Linux, mais incorrect pour RHEL.--- - name: Manage Web Server Service hosts: localhost become: true tasks: - name: Ensure web server service is started ansible.builtin.service: ## ERROR: Incorrect service name for RHEL name: apache2 state: started enabled: trueEnregistrez le fichier et quittez
nano(Ctrl+X,Y,Entrée).Utilisation du mode de vérification pour identifier l'erreur de service
Au lieu d'exécuter le playbook normalement, exécutez-le en mode de vérification. Cela empêchera Ansible d'apporter des modifications, mais lui permettra de vérifier l'état du système et de signaler ce qu'il ferait en réalité.
ansible-playbook --check service.ymlSortie attendue (Erreur) : Le playbook échouera. Le message d'erreur indiquera clairement qu'il n'a pas pu trouver de service nommé
apache2. Cela vous indique immédiatement que le paramètrenamede votre playbook est incorrect.TASK [Ensure web server service is started] ************************************ fatal: [localhost]: FAILED! => {"changed": false, "msg": "Could not find the requested service 'apache2': host"} PLAY RECAP ********************************************************************* localhost : ok=1 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0Recherche du nom de service correct
Pour corriger le playbook, vous devez trouver le nom de service correct pour le package
httpdsur RHEL. Un moyen fiable de le faire est de lister les fichiers installés par le package et de rechercher le fichier d'unité de service, qui se trouve généralement dans/usr/lib/systemd/system/.Utilisez la commande
rpmpour interroger le packagehttpd:rpm -ql httpd | grep systemdSortie attendue : Cette commande listera les fichiers liés à
systemd, y compris le fichier de service./usr/lib/systemd/system/httpd.service /usr/lib/systemd/system/httpd@.service ...La sortie
httpd.servicevous indique que le nom de service correct esthttpd.Correction du Playbook et ré-exécution en mode de vérification
Maintenant que vous connaissez le nom de service correct, modifiez le fichier
service.yml.nano service.ymlChangez le nom du service de
apache2àhttpd.## ... (reste du fichier) - name: Ensure web server service is started ansible.builtin.service: ## FIX: Correct service name for RHEL name: httpd state: started enabled: trueEnregistrez et quittez l'éditeur. Maintenant, exécutez à nouveau le playbook en mode de vérification.
ansible-playbook --check service.ymlSortie attendue (Succès en mode de vérification) : Cette fois, le playbook devrait signaler un statut
changed. En mode de vérification,changedsignifie "une modification aurait été apportée si c'était une exécution réelle". Cela indique que la logique de votre playbook est maintenant correcte et qu'Ansible a identifié que le servicehttpddoit être démarré.TASK [Ensure web server service is started] ************************************ changed: [localhost] PLAY RECAP ********************************************************************* localhost : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0Note : Dans cet environnement de laboratoire spécifique basé sur des conteneurs, un système d'initialisation
systemdcomplet n'est pas en cours d'exécution. Bien que le mode de vérification fonctionne correctement, une exécution normale du moduleansible.builtin.servicepourrait toujours rencontrer des problèmes. La leçon clé ici est d'utiliser le mode de vérification pour valider la logique de votre playbook par rapport à la configuration du système.
Corriger la configuration du pare-feu et les problèmes d'inaccessibilité des hôtes
Dans cette dernière étape, vous aborderez deux problèmes critiques d'exécution : les échecs causés par des configurations système incorrectes, comme le pare-feu, et les problèmes de connectivité résultant d'erreurs dans votre fichier d'inventaire Ansible. La maîtrise de ces éléments vous aidera à résoudre certains des obstacles les plus courants en matière d'automatisation.
Partie 1 : Correction de la configuration du pare-feu
Une tâche courante dans la configuration des serveurs consiste à ouvrir des ports dans le pare-feu. Un playbook peut facilement échouer s'il fait référence à un service de pare-feu qui n'existe pas sur le système cible.
Installation et préparation de
firewalldTout d'abord, assurez-vous que le package
firewalldest installé, car il fournit le service de gestion du pare-feu sur RHEL.sudo dnf install -y firewalldDémarrez le service
firewalld.sudo systemctl start firewalldVous devez également installer la collection
ansible.posix, qui contient le modulefirewalldutilisé dans cet exercice.ansible-galaxy collection install ansible.posixNote : Vous pourriez voir un avertissement concernant la compatibilité de la version d'Ansible, mais la collection fonctionnera toujours correctement pour cet exercice.
Création d'un Playbook avec une erreur de pare-feu
Créez un nouveau playbook nommé
firewall.ymlqui tente d'activer le servicehttp. Cependant, vous utiliserez intentionnellement un nom de service incorrect,web, pour déclencher une erreur.nano firewall.ymlCopiez et collez le contenu suivant dans l'éditeur :
--- - name: Configure System Firewall hosts: localhost become: true tasks: - name: Allow web traffic through firewall ansible.posix.firewalld: ## ERROR: 'web' is not a standard firewalld service service: web permanent: true state: enabledEnregistrez et quittez
nano(Ctrl+X,Y,Entrée).Exécution du Playbook et diagnostic de l'échec
Exécutez le playbook. Il échouera car
firewalldne reconnaît pas de service nomméweb.ansible-playbook firewall.ymlSortie attendue (Erreur) : Le message d'erreur indique clairement que
webn'est pas un service pris en charge, vous orientant directement vers le problème.TASK [Allow web traffic through firewall] ************************************** fatal: [localhost]: FAILED! => {"changed": false, "msg": "web is not a supported service. This is what I have."} PLAY RECAP ********************************************************************* localhost : ok=1 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0Recherche du nom de service de pare-feu correct
Pour trouver la liste des noms de services valides et prédéfinis, vous pouvez utiliser l'outil en ligne de commande
firewall-cmd.firewall-cmd --get-servicesSortie attendue : Vous verrez une longue liste de services disponibles. Parcourez la liste pour trouver celui qui convient au trafic web, qui est
http.RH-Satellite-6 ... ftp http https imaps ipp ipp-client ...Correction du Playbook et exécution réussie
Modifiez
firewall.ymlet remplacez le nom de service incorrectwebpar le nom correct,http.nano firewall.ymlLa tâche corrigée devrait ressembler à ceci :
## ... (reste du fichier) - name: Allow web traffic through firewall ansible.posix.firewalld: ## FIX: Use the correct firewalld service name service: http permanent: true state: enabledEnregistrez et quittez. Exécutez maintenant à nouveau le playbook. Il devrait se terminer avec succès.
ansible-playbook firewall.yml
Partie 2 : Dépannage de l'inaccessibilité des hôtes
Une erreur "unreachable" (inaccessible) signifie qu'Ansible ne peut pas se connecter à un hôte répertorié dans votre inventaire. Ceci est souvent causé par une simple faute de frappe dans le nom d'hôte.
Simulation d'un hôte inaccessible
Introduisez intentionnellement une faute de frappe dans votre fichier
inventoryet supprimez le paramètre de connexion locale. Cela forcera Ansible à tenter une connexion réseau réelle au nom d'hôte mal orthographié.nano inventoryChangez
localhostenlocalhossstet supprimezansible_connection=local.## ERROR: Intentional typo in hostname, no local connection localhossstEnregistrez et quittez l'éditeur.
Modification du Playbook pour utiliser les hôtes de l'inventaire
Tout d'abord, vous devez modifier le playbook
webserver.ymlpour utiliser les hôtes de l'inventaire au lieu dulocalhostcodé en dur. Lorsqu'un playbook utilisehosts: localhost, Ansible le traite comme un cas spécial et ignore complètement le fichier d'inventaire.nano webserver.ymlChangez la ligne
hostsdelocalhostàall:--- - name: Configure Web Server hosts: all ## Changed from 'localhost' to use inventory hosts become: true ## ... rest of the playbook remains the sameEnregistrez et quittez l'éditeur.
Exécution du Playbook pour déclencher l'erreur
Essayez maintenant d'exécuter le playbook modifié. Il échouera car l'inventaire contient la faute de frappe
localhossst.ansible-playbook webserver.ymlSortie attendue (Erreur) : Ansible échouera et signalera l'hôte comme
UNREACHABLE. Le message d'erreur indique que le nom d'hôte n'a pas pu être résolu.PLAY [Configure Web Server] **************************************************** TASK [Gathering Facts] ********************************************************** fatal: [localhossst]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ssh: Could not resolve hostname localhossst: Name or service not known", "unreachable": true} PLAY RECAP ********************************************************************* localhossst : ok=0 changed=0 unreachable=1 failed=0 skipped=0 rescued=0 ignored=0Correction du fichier d'inventaire
Le statut
UNREACHABLEest votre signal pour vérifier les noms d'hôtes et la connectivité réseau. Dans ce cas, la correction consiste à corriger la faute de frappe dans le fichierinventory.nano inventoryChangez
localhossstenlocalhost.## FIX: Corrected hostname localhost ansible_connection=localEnregistrez et quittez. La ré-exécution de
ansible-playbook webserver.ymlréussira maintenant.Optionnel : Restauration du Playbook d'origine
Si vous souhaitez restaurer le playbook pour utiliser
hosts: localhostpour les exercices futurs, vous pouvez le modifier à nouveau :nano webserver.ymlRemettez la ligne
hostsàlocalhost:--- - name: Configure Web Server hosts: localhost ## Restored to original become: true ## ... rest of the playbookEnregistrez et quittez. Cette étape démontre la différence entre l'utilisation de
localhostcodé en dur (qui ignore l'inventaire) et l'utilisation d'hôtes définis dans l'inventaire.
Résumé
Dans ce laboratoire, vous avez préparé un environnement Red Hat Enterprise Linux pour Ansible en installant ansible-core et en configurant la journalisation, puis vous avez procédé au dépannage d'une variété de problèmes courants. Vous avez appris à diagnostiquer et à résoudre les erreurs dans les playbooks, telles que la correction de la syntaxe YAML incorrecte, de l'indentation, des guillemets Jinja2 et des chemins de modèles invalides. Ces compétences sont fondamentales pour écrire du code d'automatisation valide et fiable.
De plus, vous avez traité des problèmes liés à l'environnement de l'hôte géré. Vous avez utilisé le mode de vérification d'Ansible pour effectuer en toute sécurité une simulation et identifier les défaillances potentielles de services sur un nœud cible sans apporter de modifications réelles. Le laboratoire s'est terminé par la résolution de problèmes de connectivité, où vous avez corrigé les configurations du pare-feu pour résoudre l'inaccessibilité des hôtes, offrant ainsi une approche complète du débogage, du nœud de contrôle à l'hôte géré.


