Giunsa Pag-ayo ang Gipaambit nga koneksyon sa xx.xx sirado Ansible Error


Niini nga mubo nga artikulo, among ipasabut kung giunsa pagsulbad ang: module_stderr: Gipaambit nga koneksyon sa xx.x.x sirado.\r\n, module_stdout: /bin/sh: /usr/bin/python: Walay ingon nga file o direktoryo\r\n, samtang nagpadagan sa Ansible nga mga sugo.

Ang mosunod nga screenshot nagpakita sa Ansible module error. Nasugatan namo kini nga sayop samtang nagpadagan sa usa ka Ansible nga sugo aron ipatuman ang mga sugo sa duha ka bag-ong gi-deploy nga CentOS 8 nga mga server.

Gikan sa mga detalye sa sayup, ang koneksyon napakyas tungod kay ang (mga) kabhang sa hilit nga sistema dili makit-an ang Python interpreter (/usr/bin/python) nga gipakita sa linya: “module_stdout”: “/bin/sh:/usr/bin/python: Walay ingon nga file o direktoryo\r\n“.

Human masusi ang hilit nga mga host, among nadiskobrehan nga ang mga sistema walay Python 2 nga na-install.

Sila adunay Python 3 nga gi-install pinaagi sa default ug ang binary niini mao ang /usr/bin/python3.

Sumala sa dokumentasyon sa Ansible, ang Ansible (2.5 ug pataas) nagtrabaho sa bersyon sa Python 3 ug labaw pa. Usab, ang Ansible kinahanglan nga awtomatiko nga makit-an ug magamit ang Python 3 sa daghang mga platform nga kauban niini.

Bisan pa, kung kini mapakyas, nan mahimo nimong klaro nga i-configure ang usa ka tighubad sa Python 3 pinaagi sa pagbutang sa ansible_python_interpreter nga variable sa imbentaryo sa usa ka lebel sa grupo o host sa lokasyon sa usa ka tighubad sa Python 3 sama sa gihulagway sa ubos.

Pagpasa sa Python Interpreter sa Ansible sa Command-line

Aron temporaryo nga ayohon ang sayup sa ibabaw, mahimo nimong gamiton ang bandila nga -e aron ipasa ang tighubad sa Python 3 sa Ansible sama sa gipakita.

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

Pagbutang sa Python Interpreter para sa Ansible sa Imbentaryo

Aron ayohon ang sayop nga permanente, itakda ang ansible_python_interpreter inventory variable sa imong imbentaryo /etc/ansible/hosts. Mahimo nimo kini ablihan alang sa pag-edit gamit ang v/im o nano text editor sama sa gipakita.

$ sudo vim /etc/ansible/hosts
OR
# vim /etc/ansible/hosts

Idugang ang mosunod nga linya sa matag host o host sa usa ka grupo:

ansible_python_interpreter=/usr/bin/python3

Busa, ang mga kahulugan sa imong mga host mahimong ingon niini:

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

Sa laing paagi, ibutang ang parehas nga tighubad sa Python alang sa usa ka grupo sa mga host sama sa gipakita.

[prod_servers]
192.168.10.1		
192.168.10.20		

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

Pagbutang sa Default nga Python Interpreter sa Ansible Configuration

Para i-set ang default nga Python interpreter, mahimo nimong i-set ang ansible_python_interpreter inventory variable sa main configuration file sa Ansible /etc/ansible/ansible.cfg.

$ sudo vim /etc/ansible/ansible.cfg

Idugang ang mosunod nga linya ubos sa [defaults] nga seksyon.

ansible_python_interpreter=/usr/bin/python3

I-save ang file ug isira kini.

Karon sulayi pagdagan ang Ansible nga mando sa makausa pa:

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

Alang sa dugang nga kasayuran bahin niini nga hilisgutan, tan-awa ang suporta sa Python 3 sa opisyal nga dokumentasyon sa Ansible.