Cependant, il y a des cas où vous devrez peut-être effectuer une action spécifique sur la machine locale au lieu des hôtes distants. Dans de tels cas, une fonctionnalité comme local_action est très pratique.
Ce guide vous montrera comment travailler avec le module local_action local ANSIBLE pour exécuter des tâches localement.
Comment fonctionne le module local_action local ANSIBLE
Comme mentionné précédemment, lors de la création de playbooks, la cible est généralement des hôtes distants. Si vous devez effectuer une tâche pour des hôtes autres que les hôtes distants, vous pouvez utiliser des modules anibles tels que local_action et delegate_to.
Delegate_to est utile lorsque vous devez définir une tâche à exécuter sur un hôte spécifique. Vous pointez le module Delegate_to aux hôtes cibles en spécifiant son nom d'hôte ou son adresse IP.
Local_action, en revanche, exécutera les tâches définies sur la machine locale uniquement. Il est similaire à la définition de la valeur de Delegate_to à LocalHost ou 127.0.0.1
Delegate_to: localhostLe module local_action est pratique lorsque vous devez d'abord effectuer une tâche sur la machine locale avant de l'envoyer à des systèmes distants. Ce sont principalement des commandes personnalisées ou shell dans le système local.
La meilleure façon de comprendre comment utiliser le module local_action est en utilisant des exemples de manuels.
ANSIBLE LOCAL_ACTION Exemple d'utilisation
Pour plus de simplicité, nous essaierons de garder les manuels courts et pas trop complexes.
Avant de nous concentrer sur les livres de jeu, décrivons notre configuration anible, qui nous permettra de comprendre comment fonctionne le module local_action.
Dans notre exemple de configuration, nous avons un Ubuntu 20.04 serveur qui a installé ANNIBLE. Cela servira de nœud de contrôle anible.
Ensuite, nous avons trois machines à distance: un Ubuntu 21.04 serveur, un serveur Debian 11 et un serveur CentOS 8.
Nous avons le fichier d'inventaire ANSIBLE contenant les adresses IP des trois hôtes dans le nœud de contrôle.
Une fois que nous avons exécuté un livre de jeu, il exécute les trois hôtes.
NOTE: Nous limiterons la sortie à un seul hôte pour éviter la complexité et la confusion.
Local_action à l'aide d'un module
Considérez le livre de jeu suivant:
---Dans le premier bloc, nous spécifions les hôtes cibles pour exécuter les tâches sauf indication contraire.
Le Playbook continue de désactiver les faits sur les hôtes distants en définissant le bloc Gather_facts sur.
Pour avoir l'autorisation de lecture et d'écriture, nous définissons le bloc CETT sur true.
Dans les blocs suivants, nous définissons deux tâches:
La première tâche crée une archive des fichiers journaux du système local. Nous déléguons la tâche pour s'exécuter dans le système local en utilisant le bloc local_actioB. Dans notre exemple, nous utilisons un module communautaire que nous pouvons installer en utilisant la commande:
Communauté d'installation de la collection ANSIBLE-GALAXY.généralLa tâche suivante copie l'archive de journal du système local vers le chemin spécifié de l'hôte distant.
Enregistrez le playbook et exécutez-le à l'aide de la commande:
anable-playbook local_action.YMLUne fois réussi, vous devriez voir une sortie similaire à celle ci-dessous:
Local_action à l'aide d'une commande shell
L'exemple ci-dessous vous montre comment exécuter les commandes shell en utilisant le module local_action.
---Dans l'exemple de playbook ci-dessus, nous utilisons le module local_action pour exécuter une commande shell. La commande shell compte le nombre de fichiers et répertoires enregistrés dans une variable.
Nous utilisons ensuite le module de débogage pour imprimer le nombre de fichiers à la fois sur la télécommande et localhost.
Exécutez le fichier comme:
anable-playbook fileCount.YMLLocal_action avec run_once
Vous pouvez utiliser le module local_action à côté du paramètre run_once.
---Le playbook ci-dessus exécutera le bloc local_action une fois sur le système local.
Conclusion
Le module local_action est utile lorsque vous souhaitez déléguer une tâche pour s'exécuter sur la machine locale. Vous pouvez l'utiliser à la fois avec un module ANSIBLE ou une commande shell.