Comment réparer la «connexion partagée à x.X.xx Erreur ansible fermée »

Comment réparer la «connexion partagée à x.X.xx Erreur ansible fermée »

Dans ce court article, nous expliquerons comment résoudre le: «module_stderr«:« Connexion partagée à x.X.X.x fermé.\ r \ n ”,« module_stdout »:« / bin / sh: / usr / bin / python: aucun fichier ou répertoire \ r \ n », tout en exécutant des commandes ANSIBLE.

La capture d'écran suivante montre l'erreur du module anible. Nous avons rencontré cette erreur lors de l'exécution d'une commande ANSIBLE pour exécuter des commandes sur deux nouvellement déployés Centos 8 les serveurs.

Erreur de module anible

À partir des détails d'erreur, la connexion a échoué car le ou les shells dans le système distant n'ont pas trouvé Python interprète (/ usr / bin / python) Comme indiqué par la ligne: «module_stdout ”:« / bin / sh: / usr / bin / python: pas de tel fichier ou répertoire \ r \ n".

Après avoir vérifié les hôtes distants, nous avons découvert que les systèmes n'ont pas Python 2 installée.

Vérifiez Python binaire

Ils ont Python 3 installé par défaut et son binaire est / usr / bin / python3.

Vérifiez le binaire Python3

Selon la documentation ANSIBLE, Anable (2.5 et ci-dessus) fonctionne avec Python version 3 et supérieure uniquement. En outre, Anible est censé détecter et utiliser automatiquement Python 3 sur de nombreuses plates-formes qui sont livrées avec.

Cependant, s'il échoue, vous pouvez explicitement configurer un interprète Python 3 en définissant le anible_python_interpreter Variable d'inventaire au niveau du groupe ou de l'hôte à l'emplacement d'un interprète Python 3 comme décrit ci-dessous.

Passer un interprète Python à ANSIBLE sur la ligne de commande

Pour corriger temporairement l'erreur ci-dessus, vous pouvez utiliser le -e Flag pour passer l'interprète Python 3 à ANible comme indiqué.

$ anible prod_servers -e 'anible_python_interpreter = / usr / bin / python3' -a "status systemctl Firewalld" -u root 
Définir l'interprète Python via la ligne de commande

Définir l'interprète Python pour ANSIBLE dans l'inventaire

Pour corriger l'erreur en permanence, définissez le anible_python_interpreter Variable d'inventaire dans votre inventaire / etc / anible / hôtes. Vous pouvez l'ouvrir pour l'édition à l'aide de l'éditeur V / IM ou Nano Text comme indiqué.

$ sudo vim / etc / anible / hosts ou # vim / etc / anible / hosts 

Ajoutez la ligne suivante à chaque hôte ou hôte dans un groupe:

anible_python_interpreter = / usr / bin / python3 

Ainsi, les définitions de vos hôtes peuvent ressembler à ceci:

[prod_servers] 192.168.dix.1 anible_python_interpreter = / usr / bin / python3 192.168.dix.20 anible_python_interpreter = / usr / bin / python3.6 
Définir l'interprète Python pour ANIBLE

Alternativement, définissez le même interprète Python pour un groupe d'hôtes que sur.

[prod_servers] 192.168.dix.1 192.168.dix.20 [prod_servers: vars] anible_python_interpreter = / usr / bin / python3 
Définissez l'interprète Python pour tous les hôtes d'un groupe

Définition de l'interprète Python par défaut dans la configuration ANSIBLE

Pour définir l'interpréteur Python par défaut, vous pouvez définir le anible_python_interpreter Variable d'inventaire dans le fichier de configuration principal d'ANSIBLE / etc / anible / anible.CFG.

$ sudo vim / etc / anible / anible.CFG 

Ajouter la ligne suivante sous le [Par défaut] section.

anible_python_interpreter = / usr / bin / python3 
Définir l'interprète Python dans la configuration ANSIBLE

Enregistrez le fichier et fermez-le.

Essayez maintenant d'exécuter la commande ANSIBLE une fois de plus:

$ anible prod_servers -a "Systemctl Status Firewalld" -u racine 
Vérifiez la commande ANSIBLE

Pour plus d'informations sur ce sujet, voir le support Python 3 dans la documentation officielle ANSIBLE.