Cara memperbaiki “koneksi bersama ke x.X.xx Tertutup ”Kesalahan Ansible

Cara memperbaiki “koneksi bersama ke x.X.xx Tertutup ”Kesalahan Ansible

Dalam artikel singkat ini, kami akan menjelaskan cara menyelesaikan: “module_stderr“:“ Koneksi bersama ke x.X.X.x ditutup.\ r \ n "," module_stdout ":"/bin/sh:/usr/bin/python: tidak ada file atau direktori seperti itu \ r \ n ", saat menjalankan perintah ansible.

Tangkapan layar berikut menunjukkan kesalahan modul ansible. Kami mengalami kesalahan ini saat menjalankan perintah ansible untuk menjalankan perintah pada dua yang baru digunakan Centos 8 server.

Kesalahan modul ansible

Dari detail kesalahan, koneksi gagal karena shell di sistem jarak jauh tidak dapat menemukan Python penerjemah (/usr/bin/python) sebagaimana ditunjukkan oleh garis: “module_stdout ":"/bin/sh:/usr/bin/python: tidak ada file atau direktori seperti itu \ r \ n“.

Setelah memeriksa host jarak jauh, kami menemukan bahwa sistem tidak dimiliki Python 2 terpasang.

Periksa biner Python

Mereka punya Python 3 diinstal secara default dan binernya /usr/bin/python3.

Periksa biner Python3

Menurut dokumentasi ansible, Semu (2.5 dan di atas) bekerja dengan python versi 3 dan di atas saja. Juga, ansible seharusnya secara otomatis mendeteksi dan menggunakan Python 3 pada banyak platform yang dikirimkan dengannya.

Namun, jika gagal, maka Anda dapat secara eksplisit mengonfigurasi interpreter Python 3 dengan mengatur ANSIBLE_PYTHON_INTERPRETER Variabel inventaris pada tingkat grup atau host ke lokasi interpreter Python 3 seperti yang dijelaskan di bawah ini.

Melewati interpreter Python ke Ansible pada baris perintah

Untuk memperbaiki kesalahan di atas sementara, Anda dapat menggunakan -e Bendera untuk meneruskan interpreter Python 3 ke Ansible seperti yang ditunjukkan.

$ ansible prod_server -e 'ansible_python_intreter =/usr/bin/python3' -a "status firewalld" -u root 
Atur Python Interpreter melalui baris perintah

Mengatur Python Interpreter untuk Ansible dalam Inventaris

Untuk memperbaiki kesalahan secara permanen, atur ANSIBLE_PYTHON_INTERPRETER variabel inventaris dalam inventaris Anda /etc/ansible/host. Anda dapat membukanya untuk mengedit menggunakan editor teks V/IM atau Nano seperti yang ditunjukkan.

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

Tambahkan baris berikut ke setiap host atau host dalam grup:

ansible_python_intreter =/usr/bin/python3 

Jadi, definisi host Anda bisa terlihat seperti ini:

[prod_server] 192.168.10.1 ansible_python_intreter =/usr/bin/python3 192.168.10.20 ansible_python_intreter =/usr/bin/python3.6 
Atur Python Interpreter untuk Ansible

Atau, atur interpreter Python yang sama untuk sekelompok host seperti yang ditunjukkan.

[prod_server] 192.168.10.1 192.168.10.20 [Prod_Server: VARS] ansible_python_intreter =/usr/bin/python3 
Atur Python Interpreter-untuk semua host dalam grup

Mengatur interpreter Python default dalam konfigurasi yang tidak dapat diabaikan

Untuk mengatur interpreter Python default, Anda dapat mengatur ANSIBLE_PYTHON_INTERPRETER Variabel inventaris di file konfigurasi utama AnSible /etc/ansible/ansible.CFG.

$ sudo vim/etc/ansible/ansible.CFG 

Tambahkan baris berikut di bawah [default] bagian.

ansible_python_intreter =/usr/bin/python3 
Atur Python Interpreter dalam konfigurasi yang tidak jelas

Simpan file dan tutup.

Sekarang coba jalankan perintah ansible sekali lagi:

$ ansible prod_server -a "status systemctl status firewalld" -u root 
Periksa perintah ansible

Untuk informasi lebih lanjut tentang topik ini, lihat dukungan Python 3 dalam dokumentasi resmi Ansible.