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.