So beheben Sie die gemeinsame Verbindung zu x.X.xx geschlossen ”Ansible -Fehler

So beheben Sie die gemeinsame Verbindung zu x.X.xx geschlossen ”Ansible -Fehler

In diesem kurzen Artikel werden wir erklären, wie man die: “lösen:“module_stderr„:“ Gemeinsame Verbindung zu x.X.X.x geschlossen.\ r \ n "," module_stdout ":"/bin/sh:/usr/bin/python: Keine solche Datei oder Verzeichnis \ r \ n ", während Ansible -Befehle ausgeführt werden.

Der folgende Screenshot zeigt den Fehler mit dem Ansible -Modul an. Wir haben diesen Fehler aufgetreten, während wir einen Ansible -Befehl ausgeführt haben, um Befehle auf zwei neu bereitgestellten Ausführungen auszuführen Centos 8 Server.

Ansible -Modulfehler

Aus den Fehlerdetails ist die Verbindung fehlgeschlagen, da die Schalen im Remote -System das nicht finden konnten Python Dolmetscher (/usr/bin/python) Wie durch die Zeile angegeben: “module_stdout ”:“/bin/sh:/usr/bin/python: Keine solche Datei oder Verzeichnis \ r \ n“.

Nachdem wir die Remote -Hosts überprüft hatten, stellten wir fest, dass die Systeme nicht haben Python 2 Eingerichtet.

Überprüfen Sie die Binärdatei Python

Sie haben Python 3 standardmäßig installiert und sein binär ist /usr/bin/python3.

Überprüfen Sie die Binärpython3

Nach der Ansible -Dokumentation, Ansible (2.5 und oben) funktioniert nur mit Python Version 3 und oben. Außerdem soll Ansible Python 3 automatisch auf vielen Plattformen erkennen und verwenden.

Wenn es jedoch nicht zu tun hat, können Sie einen Python 3 -Dolmetscher explizit konfigurieren, indem Sie die festlegen ansible_python_interpreter Bestandsvariable an einer Gruppe oder Host -Ebene zum Ort eines Python 3 -Dolmetschers, wie nachstehend beschrieben.

Python-Dolmetscher an die Befehlszeile an ANSIBLE weitergeben

Um den obigen Fehler vorübergehend zu beheben, können Sie die verwenden -e Flagge, um den Python 3 -Dolmetscher wie gezeigt an Ansible zu übergeben.

$ ansible prod_servers -e 'ansible_python_interpreter =/usr/bin/python3' -a "SystemCTL Status Firewalld" -U -Root 
Stellen Sie den Python-Interpreter über die Befehlszeile fest

Einstellen von Python -Dolmetscher für Ansible im Inventar

Um den Fehler dauerhaft zu beheben, stellen Sie die fest ansible_python_interpreter Inventarvariable in Ihrem Inventar /etc/ansible/hosts. Sie können es zum Bearbeiten mit dem Texteditor von V/IM oder Nano wie gezeigt öffnen.

$ sudo vim/etc/ansible/hosts oder # vim/etc/ansible/hosts 

Fügen Sie die folgende Zeile an jeden Host oder Hosts in einer Gruppe hinzu:

ansible_python_interpreter =/usr/bin/python3 

Daher können die Definitionen Ihrer Hosts wie folgt aussehen:

[prod_servers] 192.168.10.1 ansible_python_interpreter =/usr/bin/python3 192.168.10.20 ansible_python_interpreter =/usr/bin/python3.6 
Setzen Sie Python -Dolmetscher für Ansible

Stellen Sie alternativ den gleichen Python -Dolmetscher für eine Gruppe von Hosts wie gezeigt ein.

[prod_servers] 192.168.10.1 192.168.10.20 [prod_servers: vars] ansible_python_interpreter =/usr/bin/python3 
Stellen Sie Python-Dolmetscher für alle Hosts in einer Gruppe fest

Festlegen Standard -Python -Interpreter in der ansiblen Konfiguration

Um den Standard -Python -Dolmetscher festzulegen, können Sie die festlegen ansible_python_interpreter Bestandsvariable in der Hauptkonfigurationsdatei von Ansible /etc/ansible/ansible.CFG.

$ sudo vim/etc/ansible/ansible.CFG 

Fügen Sie die folgende Zeile unter die der hinzu [Standardeinstellungen] Abschnitt.

ansible_python_interpreter =/usr/bin/python3 
Stellen Sie den Python -Dolmetscher in eine ansible Konfiguration ein

Speichern Sie die Datei und schließen Sie sie.

Versuchen Sie nun noch einmal, den Ansible -Befehl auszuführen:

$ ansible prod_servers -a "SystemCTL Status Firewalld" -U Root 
Überprüfen Sie den Befehl ansible

Weitere Informationen zu diesem Thema finden Sie in Python 3 Support in der offiziellen Ansible -Dokumentation.