向Ansible Tower添加RHEL8主机时遇连接关闭问题求助
Ansible Tower添加RHEL 8主机执行剧本失败问题排查
问题场景
我正尝试将一台新的RHEL 8主机添加至Ansible Tower,配置的主机变量如下:
ansible_host: <host-ip> ansible_port: 22 ansible_python_interpreter: /usr/bin/python2.7
随后通过Ansible Tower在该主机上运行剧本时,执行Gathering Facts任务(对应gather_facts模块)出现如下错误:
{ "_ansible_no_log": false, "failed_modules": { "setup": { "failed": true, "rc": 1, "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "module_stderr": "Shared connection to <host-ip> closed.\r\n", "module_stdout": "\r\n" } }, "msg": "The following modules failed to execute: setup\n", "changed": false, "_ansible_verbose_override": true, "ansible_facts": {} }
我已确认Python版本及路径无误,请问这是已知问题吗?该如何解决?
常见原因及解决方法
1. RHEL 8默认无Python 2.7环境
RHEL 8默认不再预装Python 2,即使指定/usr/bin/python2.7,该路径可能实际不存在或未正确安装:
- 在目标RHEL 8主机执行
which python2.7,确认路径是否存在; - 若不存在,手动安装Python 2:
安装后路径通常为sudo dnf install python2/usr/bin/python2,同步修改主机变量中的ansible_python_interpreter为该路径。
2. SSH连接权限或中断问题
错误提示Shared connection to <host-ip> closed,可能是Tower执行用户权限不足或SSH连接被提前中断:
- 确认Tower使用的SSH密钥已部署到目标主机的
authorized_keys中; - 检查目标主机
sshd_config是否限制Tower用户登录,比如AllowUsers配置; - 手动从Tower服务器用相同用户SSH登录目标主机,验证连接及命令执行是否正常。
3. Ansible版本兼容性问题
旧版本Ansible与RHEL 8的Python环境可能存在兼容问题:
- 确认Tower使用的Ansible版本支持RHEL 8,建议升级到稳定新版本;
- 若无法升级,尝试在主机变量中指定Python 3:
RHEL 8默认预装Python 3,此路径通常有效。ansible_python_interpreter: /usr/bin/python3
4. SELinux或防火墙限制
目标主机的SELinux或防火墙可能阻止模块执行:
- 临时关闭SELinux测试:
sudo setenforce 0,若问题解决,需配置SELinux规则允许相关操作; - 检查防火墙是否开放SSH端口(22),以及是否限制Tower服务器的访问。
内容的提问来源于stack exchange,提问作者user11482797
相关产品推荐
相关产品推荐

