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.