Jak naprawić „wspólne połączenie z x.X.xx zamknięty ”Ansible Błąd

Jak naprawić „wspólne połączenie z x.X.xx zamknięty ”Ansible Błąd

W tym krótkim artykule wyjaśnimy, jak rozwiązać: „module_stderr„:„ Wspólne połączenie z x.X.X.x zamknięte.\ r \ n ”,„ module_stdout ”:„/bin/sh:/usr/bin/python: brak takiego pliku lub katalogu \ r \ n ”, podczas uruchamiania poleceń ansible.

Poniższy zrzut ekranu pokazuje błąd modułu Ansible. Napotkaliśmy ten błąd podczas uruchamiania polecenia ansible w celu wykonywania poleceń na dwóch nowo wdrożonych Centos 8 serwery.

Błąd modułu ansible

Z szczegółów błędu połączenie nie powiodło się, ponieważ powłoka w systemie zdalnym nie mogła znaleźć Pyton tłumacz (/usr/bin/python), jak wskazuje linia: „module_stdout ”:„/bin/sh:/usr/bin/python: brak takiego pliku lub katalogu \ r \ n".

Po sprawdzeniu zdalnych hostów odkryliśmy, że systemy nie mają Python 2 zainstalowane.

Sprawdź binarny Python

Oni mają Python 3 zainstalowane domyślnie, a jego binarne jest /usr/bin/python3.

Sprawdź binarny Python3

Zgodnie z dokumentacją Ansible, Ansible (2.5 i powyżej) działa tylko z Python wersją 3 i powyżej. Ponadto Ansible ma automatycznie wykrywać i wykorzystywać Python 3 na wielu platformach, które z nim wysyłają.

Jeśli jednak to się nie udało, możesz jawnie skonfigurować interpreter Python 3, ustawiając ansible_python_interpreter zmienna zapasów na poziomie grupy lub hosta do lokalizacji tłumacza Python 3, jak opisano poniżej.

Przekazanie interpretera Pythona do Ansible na wierszu poleceń

Aby tymczasowo naprawić powyższy błąd, możesz użyć -mi flaga, aby przekazać tłumacz Python 3 do Ansible, jak pokazano.

$ ansible produkt_servers -e 'ansible_python_interpreter =/usr/bin/python3' -A „Systemctl Status Firewalld” -U root 
Ustaw interpreter Python za pośrednictwem linii poleceń

Ustawienie interpretera Pythona dla Ansible w ekwipunku

Aby naprawić błąd na stałe, ustaw ansible_python_interpreter Zmienna zapasów w zapasach /etc/ansible/hosts. Możesz go otworzyć do edycji za pomocą edytora tekstu V/IM lub Nano, jak pokazano.

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

Dodaj następujący wiersz do każdego hosta lub hostów w grupie:

ansible_python_interpreter =/usr/bin/python3 

Tak więc definicje hostów mogą wyglądać tak:

[Prod_servers] 192.168.10.1 ansible_python_interpreter =/usr/bin/Python3 192.168.10.20 ansible_python_interpreter =/usr/bin/python3.6 
Ustaw interpreter Python dla Ansible

Alternatywnie ustaw ten sam interpreter Python dla grupy hostów, jak pokazano.

[Prod_servers] 192.168.10.1 192.168.10.20 [Prod_Servers: Vars] ansible_python_interpreter =/usr/bin/Python3 
Ustaw interpreter Python-dla wszystkich gospodarzy w grupie

Ustawienie domyślnego interpretera Pythona w konfiguracji Ansible

Aby ustawić domyślny interpreter Python, możesz ustawić ansible_python_interpreter Zmienna zapasów w głównym pliku konfiguracyjnym Ansible /etc/ansible/ansible.CFG.

$ sudo vim/etc/ansible/ansible.CFG 

Dodaj następujący wiersz pod [domyślne] Sekcja.

ansible_python_interpreter =/usr/bin/python3 
Ustaw interpreter Python w konfiguracji Ansible

Zapisz plik i zamknij go.

Teraz spróbuj ponownie uruchomić polecenie Ansible:

$ ansible produkt_servers -A „Systemctl Status Firewalld” -u root 
Sprawdź polecenie ansible

Aby uzyskać więcej informacji na ten temat, zobacz wsparcie Python 3 w oficjalnej dokumentacji Ansible.