"Jaettu yhteys x.x.xx suljettu" -virheen korjaaminen


Tässä lyhyessä artikkelissa selitämme, kuinka ratkaista: "module_stderr": "Jaettu yhteys x.x.x.x:ään suljettu.\r\n", "module_stdout": "/bin/sh: /usr/ bin/python: Ei tällaista tiedostoa tai hakemistoa\r\n", kun suoritat Ansible-komentoja.

Seuraavassa kuvakaappauksessa näkyy Ansible-moduulivirhe. Havaitsimme tämän virheen suorittaessamme Ansible-komentoa komennon suorittamiseksi kahdella äskettäin käyttöönotetulla CentOS 8 -palvelimella.

Virhetietojen mukaan yhteys epäonnistui, koska etäjärjestelmän kuoret eivät löytäneet Python-tulkkia (/usr/bin/python), kuten rivi: "module_stdout": "/bin/sh: /usr/bin/python: Ei tällaista tiedostoa tai hakemistoa\r\n".

Tarkastettuamme etäisännät huomasimme, että järjestelmiin ei ole asennettu Python 2:ta.

Niissä on oletuksena asennettuna Python 3, ja sen binaari on /usr/bin/python3.

Ansible-dokumentaation mukaan Ansible (2.5 ja uudemmat) toimii vain Python-version 3 ja uudemman kanssa. Lisäksi Ansiblen oletetaan automaattisesti tunnistavan ja käyttävän Python 3:a monilla sen mukana toimitettavilla alustoilla.

Jos se ei kuitenkaan onnistu, voit määrittää Python 3 -tulkin eksplisiittisesti asettamalla ansible_python_interpreter -varastomuuttujan ryhmä- tai isäntätasolla Python 3 -tulkin sijaintiin alla kuvatulla tavalla.

Python Interpreterin välitys Ansiblelle komentorivillä

Voit korjata yllä olevan virheen väliaikaisesti käyttämällä -e-lippua välittämään Python 3 -tulkin Ansiblelle kuvan mukaisesti.

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

Python Interpreterin asettaminen Ansiblelle inventaariossa

Korjaa virhe pysyvästi asettamalla ansible_python_interpreter -mainosjakaumamuuttuja mainosjakaumassasi /etc/ansible/hosts. Voit avata sen muokkausta varten käyttämällä v/im- tai nano-tekstieditoria kuvan mukaisesti.

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

Liitä seuraava rivi jokaiseen isäntään tai ryhmän isäntiin:

ansible_python_interpreter=/usr/bin/python3

Joten isäntäesi määritelmät voivat näyttää tältä:

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

Vaihtoehtoisesti voit asettaa sama Python-tulkki isäntäryhmälle kuvan mukaisesti.

[prod_servers]
192.168.10.1		
192.168.10.20		

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

Python-oletustulkin asettaminen Ansible-kokoonpanossa

Voit määrittää Python-oletustulkin asettamalla ansible_python_interpreter -varastomuuttujan Ansiblen päämääritystiedostoon /etc/ansible/ansible.cfg.

sudo vim /etc/ansible/ansible.cfg

Lisää seuraava rivi [oletukset]-osion alle.

ansible_python_interpreter=/usr/bin/python3

Tallenna tiedosto ja sulje se.

Yritä nyt suorittaa Ansible-komento vielä kerran:

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

Lisätietoja tästä aiheesta on Python 3 -tuesta virallisessa Ansible-dokumentaatiossa.