Kaip ištaisyti galimą klaidą „Bendras ryšys su x.x.xx uždarytas“.


Šiame trumpame straipsnyje paaiškinsime, kaip išspręsti: „module_stderr“: „Bendras ryšys su x.x.x.x uždarytas.\r\n“, „module_stdout“: „/bin/sh: /usr/ bin/python: Nėra tokio failo ar katalogo\r\n“, kai vykdomos „Ansible“ komandos.

Toliau pateiktoje ekrano kopijoje rodoma Ansible modulio klaida. Vykdydami komandą Ansible, skirtą komandoms vykdyti dviejuose naujai įdiegtuose CentOS 8 serveriuose, susidūrėme su šia klaida.

Iš išsamios klaidos informacijos matyti, kad prisijungti nepavyko, nes nuotolinėje sistemoje esantis apvalkalas (-ai) negalėjo rasti Python interpretatoriaus (/usr/bin/python), kaip nurodė eilutė: „module_stdout“: „/bin/sh: /usr/bin/python: Nėra tokio failo ar katalogo\r\n“.

Patikrinę nuotolinius pagrindinius kompiuterius, nustatėme, kad sistemose neįdiegta Python 2.

Pagal numatytuosius nustatymus juose įdiegta Python 3, o jo dvejetainis failas yra /usr/bin/python3.

Remiantis Ansible dokumentacija, Ansible (2.5 ir naujesnė) veikia tik su 3 ir naujesnėmis Python versijomis. Be to, „Ansible“ turėtų automatiškai aptikti ir naudoti „Python 3“ daugelyje kartu pristatomų platformų.

Tačiau jei nepavyksta, galite aiškiai sukonfigūruoti Python 3 vertėją, nustatydami ansible_python_interpreter inventoriaus kintamąjį grupės arba pagrindinio kompiuterio lygiu į Python 3 vertėjo vietą, kaip aprašyta toliau.

„Python Interpreter“ perdavimas „Ansible“ komandų eilutėje

Norėdami laikinai ištaisyti pirmiau minėtą klaidą, galite naudoti vėliavėlę -e ir perduoti Python 3 interpretatorių Ansible, kaip parodyta.

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

„Python Interpreter“ nustatymas „Ansible“ inventoriuje

Jei norite visam laikui ištaisyti klaidą, inventoriuje /etc/ansible/hosts nustatykite ansible_python_interpreter skelbimų vietų kintamąjį. Galite atidaryti jį redaguoti naudodami v/im arba nano teksto rengyklę, kaip parodyta.

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

Prie kiekvieno prieglobos ar prieglobos grupės pridėkite šią eilutę:

ansible_python_interpreter=/usr/bin/python3

Taigi, jūsų šeimininkų apibrėžimai gali atrodyti taip:

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

Arba nustatykite tą patį Python interpretatorių prieglobos grupei, kaip parodyta.

[prod_servers]
192.168.10.1		
192.168.10.20		

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

Numatytosios „Python“ vertėjo nustatymas „Ansible“ konfigūracijoje

Norėdami nustatyti numatytąjį Python interpretatorių, galite nustatyti ansible_python_interpreter inventoriaus kintamąjį pagrindiniame Ansible konfigūracijos faile /etc/ansible/ansible.cfg.

sudo vim /etc/ansible/ansible.cfg

Skiltyje [numatytieji] pridėkite šią eilutę.

ansible_python_interpreter=/usr/bin/python3

Išsaugokite failą ir uždarykite jį.

Dabar pabandykite dar kartą paleisti komandą Ansible:

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

Norėdami gauti daugiau informacijos apie šią temą, žr. Python 3 palaikymą oficialioje Ansible dokumentacijoje.