使用个人用户帐户(userx),我在所有指定的主机上运行完整的操作手册。在ansible.cfg要使用的远程用户(其可以成为根)为:使用--begin for ansible_connection = local
remote_user = ansible
对于远程主机这一切工作正常。它以用户Ansible的身份连接,并执行所有需要的任务,同时也改变需要root权限的信息(如/etc/ssh/sshd_config
)。
但是现在我也想在Ansible主机本身上执行剧本。我把以下放在我的清单文件中:
localhost ansible_connection=local
它现在确实在localhost上执行。但是,作为userx,这导致“访问被拒绝”,它需要做的一些任务。
这当然有点期待,因为remote_user告诉远程,而不是本地用户。但是,我仍然希望本地的剧本也会以--become
的身份执行任务(例如sudo su -
)。似乎没有这样做。
运行与--become -vvv
的剧本告诉我
<localhost> ESTABLISH LOCAL CONNECTION FOR USER: userx
,似乎不尝试用sudo来执行任务。如果不使用sudo,任务将失败。
我该如何告诉使用sudo /成为本地连接呢?
非常感谢您提供证明。它帮助我找到了真正的问题:遥控器工作正常,因为他们以“安全”用户身份登录,并拥有正确的权利。在本地,具体任务需要'成为'。我试图在库存文件级别指定它,但是通过将'ansible_become'设置为'= ansible'(计算结果为false)来误用它。然后库存文件优先于命令行“--become”,最终导致失败的任务。 – Dnl