ค้นหาเว็บไซต์

วิธีแก้ไข "การเชื่อมต่อที่ใช้ร่วมกันกับ x.x.xx ปิด" ข้อผิดพลาด Ansible


ในบทความสั้น ๆ นี้ เราจะอธิบายวิธีแก้ปัญหา: “module_stderr“: “การเชื่อมต่อที่ใช้ร่วมกันกับ x.x.x.x ปิดอยู่\r\n”, “module_stdout”: “/bin/sh: /usr/ bin/python: ไม่มีไฟล์หรือไดเร็กทอรี\r\n” ขณะรันคำสั่ง Ansible

ภาพหน้าจอต่อไปนี้แสดงข้อผิดพลาดของโมดูล Ansible เราพบข้อผิดพลาดนี้ขณะเรียกใช้คำสั่ง Ansible เพื่อดำเนินการคำสั่งบนเซิร์ฟเวอร์ CentOS 8 ที่เพิ่งปรับใช้ใหม่ 2 เซิร์ฟเวอร์

จากรายละเอียดข้อผิดพลาด การเชื่อมต่อล้มเหลวเนื่องจากเชลล์ในระบบระยะไกลไม่พบล่าม Python (/usr/bin/python) ตามที่ระบุโดย บรรทัด: “module_stdout”: “/bin/sh: /usr/bin/python: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว\r\n

หลังจากตรวจสอบโฮสต์ระยะไกล เราพบว่าระบบไม่ได้ติดตั้ง Python 2

มีการติดตั้ง Python 3 เป็นค่าเริ่มต้น และไบนารีของมันคือ /usr/bin/python3

ตามเอกสาร Ansible Ansible (2.5 ขึ้นไป) ใช้งานได้กับ Python เวอร์ชัน 3 ขึ้นไปเท่านั้น นอกจากนี้ Ansible ควรตรวจจับและใช้ Python 3 โดยอัตโนมัติบนหลายแพลตฟอร์มที่มาพร้อมกับมัน

อย่างไรก็ตาม หากไม่สำเร็จ คุณสามารถกำหนดค่าล่าม Python 3 ได้อย่างชัดเจนโดยการตั้งค่าตัวแปรพื้นที่โฆษณา ansible_python_reapter ที่ระดับกลุ่มหรือโฮสต์เป็นตำแหน่งของล่าม Python 3 ตามที่อธิบายไว้ด้านล่าง

การส่ง Python Interpreter ไปยัง Ansible บนบรรทัดคำสั่ง

หากต้องการแก้ไขข้อผิดพลาดข้างต้นชั่วคราว คุณสามารถใช้แฟล็ก -e เพื่อส่งล่าม Python 3 ไปยัง Ansible ดังที่แสดง

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

การตั้งค่า Python Interpreter สำหรับ Ansible ใน Inventory

หากต้องการแก้ไขข้อผิดพลาดอย่างถาวร ให้ตั้งค่าตัวแปรพื้นที่โฆษณา ansible_python_reapter ในพื้นที่โฆษณาของคุณ /etc/ansible/hosts คุณสามารถเปิดเพื่อแก้ไขโดยใช้โปรแกรมแก้ไขข้อความ v/im หรือ nano ดังที่แสดง

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

ผนวกบรรทัดต่อไปนี้กับแต่ละโฮสต์หรือโฮสต์ในกลุ่ม:

ansible_python_interpreter=/usr/bin/python3

ดังนั้น คำจำกัดความของโฮสต์ของคุณอาจมีลักษณะดังนี้:

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

หรือตั้งค่าล่าม Python เดียวกันสำหรับกลุ่มโฮสต์ตามที่แสดง

[prod_servers]
192.168.10.1		
192.168.10.20		

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

การตั้งค่าล่าม Python เริ่มต้นในการกำหนดค่า Ansible

หากต้องการตั้งค่าล่าม Python เริ่มต้น คุณสามารถตั้งค่าตัวแปรพื้นที่โฆษณา ansible_python_reapter ในไฟล์การกำหนดค่าหลักของ Ansible /etc/ansible/ansible.cfg

sudo vim /etc/ansible/ansible.cfg

เพิ่มบรรทัดต่อไปนี้ใต้ส่วน [defaults]

ansible_python_interpreter=/usr/bin/python3

บันทึกไฟล์และปิด

ตอนนี้ให้ลองรันคำสั่ง Ansible อีกครั้ง:

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

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับหัวข้อนี้ โปรดดูการสนับสนุน Python 3 ในเอกสาร Ansible อย่างเป็นทางการ