Kako popraviti "Povezava v skupni rabi z x.x.xx zaprta" Ansible Napaka


V tem kratkem članku bomo razložili, kako rešiti: „module_stderr“: „Skupna povezava z xxxx zaprta.\R\n“, „module_stdout“: „/ bin/sh:/usr/bin/python: Takšne datoteke ni ali imenik\r\n ”, med izvajanjem ukazov Ansible.

Naslednja slika zaslona prikazuje napako modula Ansible. Na to napako smo naleteli med izvajanjem ukaza Ansible za izvajanje ukazov na dveh na novo postavljenih strežnikih CentOS 8.

Iz podrobnosti o napaki povezava ni uspela, ker lupine v oddaljenem sistemu niso mogle najti tolmača Python (/ usr/bin/python), kot je navedeno v vrstici: “module_stdout”: “/ bin/sh:/usr/bin/python: Takšne datoteke ali imenika ni\r\n “.

Po preverjanju oddaljenih gostiteljev smo ugotovili, da v sistemih ni nameščen Python 2.

Privzeto imajo nameščen Python 3, katerega binarni format je/usr/bin/python3.

V skladu z dokumentacijo Ansible Ansible (2.5 in novejši) deluje samo z različico Python 3 in novejšo. Prav tako naj bi Ansible samodejno zaznal in uporabljal Python 3 na številnih platformah, ki so z njim priložene.

Če pa ne uspe, lahko tolmač Python 3 izrecno konfigurirate tako, da spremenljivko inventarja ansible_python_interpreter na ravni skupine ali gostitelja nastavite na mesto tolmača Python 3, kot je opisano spodaj.

Posredovanje tolmača Python v Ansible v ukazni vrstici

Če želite začasno odpraviti zgornjo napako, lahko z zastavico -e posredujete tolmač Python 3 v Ansible, kot je prikazano.

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

Nastavitev Python Interpreter za Ansible v inventarju

Če želite napako trajno odpraviti, v inventarju/etc/ansible/hosts nastavite spremenljivko inventarja ansible_python_interpreter. Odprete ga lahko za urejanje z urejevalnikom besedil v/im ali nano, kot je prikazano.

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

Vsakemu gostitelju ali gostiteljem v skupini dodajte naslednjo vrstico:

ansible_python_interpreter=/usr/bin/python3

Definicije gostiteljev so torej lahko videti takole:

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

Lahko pa nastavite istega tolmača Pythona za skupino gostiteljev, kot je prikazano.

[prod_servers]
192.168.10.1		
192.168.10.20		

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

Nastavitev privzetega tolmača Python v odgovorni konfiguraciji

Če želite nastaviti privzeti tolmač Python, lahko nastavite spremenljivko inventarja ansible_python_interpreter v glavni konfiguracijski datoteki Ansible /etc/ansible/ansible.cfg.

$ sudo vim /etc/ansible/ansible.cfg

V odsek [privzeto] dodajte naslednjo vrstico.

ansible_python_interpreter=/usr/bin/python3

Datoteko shranite in zaprite.

Zdaj poskusite še enkrat zagnati ukaz Ansible:

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

Za več informacij o tej temi glejte podporo za Python 3 v uradni dokumentaciji Ansible.