Kako ispraviti "Dijeljenu vezu s x.x.xx zatvorenom" Odgovorljiva pogreška


U ovom kratkom članku objasnit ćemo kako riješiti: „module_stderr“: „Dijeljena veza s xxxx zatvorena.\R\n“, „module_stdout“: „/ bin/sh:/usr/bin/python: Nema takve datoteke ili direktorij\r\n ”, dok se izvode naredbe Ansible.

Sljedeća snimka zaslona prikazuje pogrešku modula Ansible. Na ovu smo pogrešku naišli tijekom izvođenja naredbe Ansible za izvršavanje naredbi na dva novopostavljena CentOS 8 poslužitelja.

Iz detalja pogreške veza nije uspjela jer ljuske u udaljenom sustavu nisu mogle pronaći Python interpreter (/ usr/bin/python) kako je naznačeno linijom: “module_stdout”: “/ bin/sh:/usr/bin/python: Nema takve datoteke ili direktorija\r\n “.

Nakon provjere udaljenih hostova otkrili smo da na sustavima nije instaliran Python 2.

Po defaultu imaju instaliran Python 3, a binarni je naziv/usr/bin/python3.

Prema dokumentaciji Ansible, Ansible (2.5 i noviji) radi samo s Python verzijom 3 i novijom. Također, Ansible bi trebao automatski otkriti i koristiti Python 3 na mnogim platformama koje se isporučuju s njim.

Međutim, ako ne uspije, tada možete izričito konfigurirati tumač Python 3 postavljanjem varijable inventara ansible_python_interpreter na razini grupe ili hosta na mjesto tumača Python 3 kako je opisano u nastavku.

Prosljeđivanje Python tumača u Ansible na naredbenom retku

Da biste privremeno popravili gornju pogrešku, možete upotrijebiti zastavicu -e za prosljeđivanje tumača Python 3 u Ansible kao što je prikazano.

$ ansible prod_servers  -e 'ansible_python_interpreter=/usr/bin/python3' -a "systemctl status firewalld" -u root

Postavljanje Python interpretera za Ansible u inventaru

Da biste trajno popravili pogrešku, postavite varijablu inventara ansible_python_interpreter u vašem inventaru/etc/ansible/hosts. Možete ga otvoriti za uređivanje pomoću v/im ili nano uređivača teksta kao što je prikazano.

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

Dodajte sljedeći redak svakom hostu ili domaćinima u grupi:

ansible_python_interpreter=/usr/bin/python3

Dakle, definicije vaših domaćina mogu izgledati ovako:

[prod_servers]
192.168.10.1			ansible_python_interpreter=/usr/bin/python3
192.168.10.20			ansible_python_interpreter=/usr/bin/python3.6

Alternativno, postavite isti Python tumač za grupu hostova kao što je prikazano.

[prod_servers]
192.168.10.1		
192.168.10.20		

[prod_servers:vars]
ansible_python_interpreter=/usr/bin/python3

Postavljanje zadanog Python tumača u odgovornoj konfiguraciji

Da biste postavili zadani Python interpreter, možete postaviti varijablu inventara ansible_python_interpreter u glavnoj konfiguracijskoj datoteci Ansible /etc/ansible/ansible.cfg.

$ sudo vim /etc/ansible/ansible.cfg

Dodajte sljedeći redak u odjeljak [zadane postavke] .

ansible_python_interpreter=/usr/bin/python3

Spremite datoteku i zatvorite je.

Sada pokušajte još jednom pokrenuti naredbu Ansible:

$ ansible prod_servers -a "systemctl status firewalld" -u root

Za više informacija o ovoj temi, pogledajte podršku za Python 3 u službenoj dokumentaciji Ansible.