Como consertar “conexão compartilhada com x.x.xx fechado ”Erro Ansible
- 4857
- 503
- Spencer Emard
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 AnsibleA 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árioEles têm Python 3 instalado por padrão e seu binário é /usr/bin/python3.
Verifique o python3 binárioDe 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 rootDefina 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.6Defina 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/python3Defina 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/python3Defina 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 RootVerifique o comando Ansible
Para obter mais informações sobre este tópico, consulte o suporte do Python 3 na documentação oficial do Ansible.
- « O guia final para proteger, endurecer e melhorar o desempenho do Nginx Web Server
- Frostwire - um downloader em nuvem, cliente BitTorrent e mídia player »