我正在通过AWX(Ansible Tower的开源版本)运行Ansible,并且我一直遇到一个错误,用户无法使用任何 become
权限升级命令 . 每当命令在AWX上运行时,都会产生错误,说 Missing sudo password
. 我已通过在该用户帐户下运行 sudo
和 su
确认用户帐户 does 具有访问权限 . 当它们手动运行时,它们都可以完美地工作 .
简单地说,我正在寻找一种从AWX内部的Ansible手册运行sudo命令的方法 . 我已验证我使用的帐户具有正确的权限 .
虽然可以直接编辑 /etc/sudoers
文件以允许用户在没有密码的情况下进行sudo,但这不是一种可以在这种情况下工作的解决方案 .
Ansible确实有关于privilege escalation的文档,但正确的选项不适用于AWX . 它使用基于菜单的选项替换了几个命令行标志和选项,谷歌搜索没有透露任何与AWX有相同错误消息的人 .
注意:这不是以下问题的重复,因为这些问题都涉及从命令行运行Ansible,而不是从Ansible Tower或AWX运行它 . 这些问题还假设编辑 /etc/sudoers
文件将适用于所有情况 .
我正在发帖并立即回答这个问题,因为我花了一点时间才弄清楚答案 . 找到文档要比它需要的困难得多,而且它缺少信息,所以我用适当的答案发布这个问题 .
1 回答
你需要configure your credentials correctly in AWX . 为了使用AWX在Ansible playbook中运行sudo命令,您必须指定"Privilege Escalation Method"和"Privilege Escalation Password"字段 . (只有选择方法后才会出现密码字段 . )
无需在AWX之外存储凭据 . 在Ansible文档may refer you to using a vault中,您无需担心管理剧本中的加密文件 . AWX可以安全地处理凭证 .
次要说明:
尽管Ansible文档说它会自动默认为
ssh
密码,但AWX要求我设置权限提升密码 .在我的情况下,
ssh
密码与sudo
密码相同 .对
ssh
和sudo
密码使用"Prompt on Launch"选项会导致错误,因为您只能填写ssh
字段 . 我不知道这个bug出现在哪个版本中 .