问题描述
在运行ansible 2.6.2和awx 1.0.7.2时遇到了一个问题:AWX连接到SSH代理时使用的是root用户,而不是在凭据中定义的用户。用户的剧本包含了如下内容:
become: yes
become_method: sudo
remote_user: remoteuser
ansible_user: remoteuser
剧本中的ssh.config
包含了以下内容:
match host !proxyA,!proxyB,* exec "ssh proxyA nc -w1 %h %p &>/dev/null"
ProxyJump proxyA
match host !proxyA,!proxyB,* exec "ssh proxyB nc -w1 %h %p &>/dev/null"
ProxyJump proxyB
用户在AWX凭据中使用了一个与SSH密钥关联的用户名为remoteuser的凭据,并将其与AWX作业模板关联,以便用于SSH连接。
然而,在AWX中,连接的用户名却显示为’root’,而不是预期的’remoteuser’。用户已经尝试在/etc/ansible/ansible.cfg
、当前工作目录中的ansible.cfg
,以及$HOME
中定义配置文件,但仍未解决问题。
以下是代理服务器proxyA/B的syslog条目,显示AWX连接的用户为’root’:
sshd: Failed publickey for root from 1.2.3.4
而AWX的ansible输出则显示连接为’root’,而不是预期的’remoteuser’:
root@proxyA's password:
root@proxyA's password:
root@proxyA's password:
用户指出,当在AWX之外通过ansible运行剧本时,并没有出现错误。
用户的问题是如何告诉AWX使用正确的用户名进行连接。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
解决方案1
根据官方文档,你应该使用remote_user
而不是ansible_user
来指定远程用户。如果仍然无法解决问题,可以使用-vvvv
选项运行剧本,并将日志添加到问题与答案中,以便进一步排查。
在你的剧本中,将ansible_user
更改为remote_user
:
become: yes
become_method: sudo
remote_user: remoteuser
然后,尝试使用以下命令运行剧本,以获取详细的调试日志:
ansible-playbook -i your_inventory_file your_playbook.yml -vvvv
将生成的日志添加到你的问题与答案中,以便其他人帮助你进一步分析问题。
解决方案2
如果解决方案1无法解决问题,你可以尝试检查AWX作业模板的设置。确保你已经将正确的凭据与作业模板关联,并且凭据中的用户名设置为你想要的远程用户(remoteuser)。
打开AWX控制台,导航到相应的作业模板,检查关联的凭据是否正确,并确保凭据中的用户名与你期望的远程用户一致。
如果所有设置都正确,但问题仍然存在,建议尝试更新AWX到最新版本,以确保你没有遇到已知的问题或错误修复。
解决方案3
如果以上解决方案都没有解决问题,你还可以尝试直接在AWX作业模板中指定远程用户。在AWX作业模板中,可以找到一个名为”Extra Variables”或类似名称的选项,你可以在其中设置远程用户,例如:
{"ansible_user": "remoteuser"}
这将强制AWX使用指定的远程用户进行连接。然后尝试运行作业模板,查看是否解决了连接使用错误用户的问题。
如果问题仍然存在,请考虑与AWX社区或支持团队联系,以获取进一步的帮助和指导。
注意:由于软件版本和配置可能会因时间而变化,以上解决方案仅供参考。如有任何版本差异,请参考官方文档或社区支持获取最新信息和指导。
在尝试任何更改之前,请确保在生产环境中备份所有关键数据和配置。
参考链接:
– Ansible Playbooks Introduction