Weboldal keresés

A „Megosztott kapcsolat x.x.xx zárva” lehetséges hiba elhárítása


Ebben a rövid cikkben elmagyarázzuk, hogyan lehet megoldani a következőt: „module_stderr“: „Megosztott kapcsolat az x.x.x.x-hez lezárva.\r\n”, „module_stdout”: „/bin/sh: /usr/ bin/python: Nincs ilyen fájl vagy könyvtár\r\n”, az Ansible parancsok futtatása közben.

A következő képernyőkép az Ansible modul hibáját mutatja. Ezt a hibát észleltük, amikor egy Ansible parancsot futtattunk két újonnan telepített CentOS 8 szerveren.

A hiba részletei szerint a kapcsolat nem sikerült, mert a távoli rendszerben lévő shell(ek) nem találták a Python értelmezőt (/usr/bin/python), ahogy azt a a sor: „module_stdout”: „/bin/sh: /usr/bin/python: Nincs ilyen fájl vagy könyvtár\r\n“.

A távoli gazdagépek ellenőrzése után azt tapasztaltuk, hogy a rendszereken nincs telepítve a Python 2.

A Python 3 alapértelmezés szerint telepítve van, bináris fájlja pedig /usr/bin/python3.

Az Ansible dokumentációja szerint az Ansible (2.5 és újabb) csak a Python 3-as és újabb verzióival működik. Ezenkívül az Ansible-nek automatikusan fel kell ismernie és használnia kell a Python 3-at számos, vele együtt szállított platformon.

Ha azonban ez nem sikerül, akkor kifejezetten beállíthat egy Python 3 értelmezőt úgy, hogy az ansible_python_interpreter leltárváltozót csoport- vagy gazdagép szinten a Python 3 értelmező helyére állítja az alábbiak szerint.

A Python Interpreter átadása az Ansible-nek a parancssorban

A fenti hiba ideiglenes kijavításához használja a -e jelzőt, hogy átadja a Python 3 értelmezőt az Ansible-nek, ahogy az ábra mutatja.

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

A Python Interpreter beállítása az Ansible-hez a leltárban

A hiba végleges kijavításához állítsa be az ansible_python_interpreter készletváltozót a /etc/ansible/hosts készletben. A képen látható módon megnyithatja szerkesztésre a v/im vagy a nano szövegszerkesztővel.

sudo vim /etc/ansible/hosts
OR
vim /etc/ansible/hosts

A csoport minden gazdagépéhez vagy gazdagépeihez fűzze a következő sort:

ansible_python_interpreter=/usr/bin/python3

Tehát a házigazdák definíciói így nézhetnek ki:

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

Alternatív megoldásként állítsa be ugyanazt a Python-tolmácsot egy gazdagépcsoporthoz, ahogy az ábrán látható.

[prod_servers]
192.168.10.1		
192.168.10.20		

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

Az alapértelmezett Python Interpreter beállítása az Ansible konfigurációban

Az alapértelmezett Python-értelmezés beállításához beállíthatja az ansible_python_interpreter leltárváltozót az Ansible fő konfigurációs fájljában /etc/ansible/ansible.cfg.

sudo vim /etc/ansible/ansible.cfg

Adja hozzá a következő sort a [defaults] szakaszhoz.

ansible_python_interpreter=/usr/bin/python3

Mentse el a fájlt és zárja be.

Most próbálja meg még egyszer futtatni az Ansible parancsot:

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

A témával kapcsolatos további információkért tekintse meg a Python 3 támogatását az Ansible hivatalos dokumentációjában.