Como consertar “conexão compartilhada com x.x.xx fechado ”Erro Ansible

Como consertar “conexão compartilhada com x.x.xx fechado ”Erro Ansible

Neste pequeno artigo, explicaremos como resolver o: “Module_stderr“:“ Conexão compartilhada com x.x.x.x fechado.\ r \ n ”,“ Module_stdout ”:“/bin/sh:/usr/bin/python: nenhum arquivo ou diretório \ r \ n ”, enquanto executa comandos Ansible.

A captura de tela a seguir mostra o erro do módulo Ansible. Encontramos esse erro ao executar um comando Ansible para executar comandos em dois recém -implantados CENTOS 8 servidores.

Erro de módulo Ansible

A partir dos detalhes do erro, a conexão falhou porque o (s) shell (s) no sistema remoto não conseguiu encontrar o Pitão intérprete (/usr/bin/python) conforme indicado pela linha: “Module_stdout ”:“/bin/sh:/usr/bin/python: nenhum arquivo ou diretório \ r \ n““.

Depois de verificar os hosts remotos, descobrimos que os sistemas não têm Python 2 instalado.

Verifique o Python binário

Eles têm Python 3 instalado por padrão e seu binário é /usr/bin/python3.

Verifique o python3 binário

De acordo com a documentação Ansible, Ansible (2.5 e acima) funciona com o Python versão 3 e acima apenas. Além disso, o Ansible deve detectar e usar automaticamente o Python 3 em muitas plataformas que enviam com ele.

No entanto, se não conseguir, você pode configurar explicitamente um intérprete Python 3, definindo o Ansible_python_interpreter Variável de inventário em um grupo ou nível de host à localização de um intérprete Python 3, conforme descrito abaixo.

Passando o intérprete Python para Ansible na linha de comando

Para corrigir o erro acima temporariamente, você pode usar o -e Sinalize para passar no intérprete Python 3 para Ansible, como mostrado.

$ Ansible Prod_servers -E 'Ansible_python_interPreter =/usr/bin/python3' -a "Systemctl status firewalld" -u root 
Defina o intérprete Python via linha de comando

Definindo o intérprete Python para Ansible no inventário

Para corrigir o erro permanentemente, defina o Ansible_python_interpreter Variável de inventário em seu inventário /etc/Ansible/hosts. Você pode abri -lo para edição usando o editor de texto V/IM ou Nano, como mostrado.

$ sudo vim/etc/Ansible/hosts ou # vim/etc/Ansible/hosts 

Anexe a seguinte linha a cada host ou hosts em um grupo:

Ansible_python_interpreter =/usr/bin/python3 

Então, as definições de seus anfitriões podem ser assim:

[Prod_servers] 192.168.10.1 Ansible_python_interpreter =/usr/bin/python3 192.168.10.20 Ansible_python_interpreter =/usr/bin/python3.6 
Defina o intérprete Python para Ansible

Como alternativa, defina o mesmo intérprete Python para um grupo de hosts, como mostrado.

[Prod_servers] 192.168.10.1 192.168.10.20 [Prod_servers: vars] Ansible_python_interpreter =/usr/bin/python3 
Defina o intérprete Python para todos os hosts em um grupo

Definir o intérprete de Python padrão em configuração Ansible

Para definir o intérprete Python padrão, você pode definir o Ansible_python_interpreter Variável de inventário no principal arquivo de configuração de Ansible /etc/Ansible/Ansible.cfg.

$ sudo vim/etc/Ansible/Ansible.cfg 

Adicione a seguinte linha sob o [Padrões] seção.

Ansible_python_interpreter =/usr/bin/python3 
Defina o intérprete Python na configuração Ansible

Salve o arquivo e feche-o.

Agora tente executar o comando Ansible mais uma vez:

$ Ansible Prod_servers -a "SystemCtl Status Firewalld" -u Root 
Verifique o comando Ansible

Para obter mais informações sobre este tópico, consulte o suporte do Python 3 na documentação oficial do Ansible.