AWX连接使用的是root而不是凭据中定义的用户

84次阅读
没有评论

问题描述

在运行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

正文完