![Cum să vă comparați computerul Windows 10](/f/f4a420a14bd484c29c343fd556f61ec5.png?width=100&height=100)
În acest scurt articol, vom explica cum să rezolvați: „module_stderr„:„ Conexiune partajată la x.x.x.x închisă. \ R \ n ”,„ module_stdout ”:„ / bin / sh: / usr / bin / python: Nu există un astfel de fișier sau director \ r \ n ”, în timp ce executați comenzi Ansible.
Următoarea captură de ecran arată eroarea modulului Ansible. Am întâmpinat această eroare în timp ce rulam un Comandă Ansible pentru a executa comenzi pe două noi implementate CentOS 8 servere.
Din detaliile erorii, conexiunea a eșuat deoarece shell-ul (ele) din sistemul de la distanță nu au putut găsi Piton interpret (/usr/bin/python) așa cum este indicat de linie: „module_stdout ”:„ / bin / sh: / usr / bin / python: nu există un astfel de fișier sau director \ r \ n“.
După verificarea gazdelor la distanță, am descoperit că sistemele nu au Python 2 instalat.
Ei au Python 3 instalat implicit și binarul său este /usr/bin/python3.
Conform documentației Ansible, Ansible
(2.5 și mai sus) funcționează numai cu versiunea Python 3 și mai sus. De asemenea, Ansible ar trebui să detecteze și să utilizeze automat Python 3 pe multe platforme livrate împreună cu acesta.Cu toate acestea, dacă nu reușește, atunci puteți configura în mod explicit un interpret Python 3 prin setarea ansible_python_interpreter variabilă de inventar la nivel de grup sau gazdă până la locația unui interpret Python 3 așa cum este descris mai jos.
Pentru a remedia temporar eroarea de mai sus, puteți utiliza fișierul -e
flag pentru a transmite interpretul Python 3 către Ansible așa cum se arată.
$ ansible prod_servers -e 'ansible_python_interpreter = / usr / bin / python3' -a "systemctl status firewalld" -u root.
Pentru a remedia definitiv eroarea, setați fișierul ansible_python_interpreter variabilă de inventar din inventarul dvs. /etc/ansible/hosts. Îl puteți deschide pentru editare folosind editorul de text v / im sau nano, așa cum se arată.
$ sudo vim / etc / ansible / hosts. SAU. # vim / etc / ansible / hosts.
Adăugați următoarea linie la fiecare gazdă sau gazde dintr-un grup:
ansible_python_interpreter = / usr / bin / python3.
Deci, definițiile gazdelor dvs. pot arăta astfel:
[prod_servers] 192.168.10.1 ansible_python_interpreter = / usr / bin / python3. 192.168.10.20 ansible_python_interpreter = / usr / bin / python3.6.
Alternativ, setați același interpret Python pentru un grup de gazde așa cum se arată.
[prod_servers] 192.168.10.1 192.168.10.20 [prod_servers: vars] ansible_python_interpreter = / usr / bin / python3.
Pentru a seta interpretorul Python implicit, puteți seta fișierul ansible_python_interpreter variabilă de inventar în fișierul principal de configurare Ansible /etc/ansible/ansible.cfg.
$ sudo vim /etc/ansible/ansible.cfg.
Adăugați următoarea linie sub [implicit]
secțiune.
ansible_python_interpreter = / usr / bin / python3.
Salvați fișierul și închideți-l.
Acum încercați să rulați din nou comanda Ansible:
$ ansible prod_servers -a "systemctl status firewalld" -u root.
Pentru mai multe informații despre acest subiect, consultați Suport Python 3 în documentația oficială Ansible.