Ansible playbook 执行需要特权升级提示

38次阅读
没有评论

问题描述

在执行Ansible playbook时遇到了一个错误,错误信息为”Timeout (12s) waiting for privilege escalation prompt”。用户在执行之前已经按照步骤安装了Ansible,并更新了/etc/ansible/host文件,同时创建了一个playbook文件。用户还设置了ANSIBLE_DEBUG=1,发现错误与sudo命令有关,因为使用的用户不在sudoers列表中。用户提出了以下问题:
1. 执行Ansible playbook需要特权用户吗?
2. 如果不需要,我做错了什么?
3. 如果需要,是否意味着我需要将该用户添加到sudoers用户列表中?

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

在本地机器上执行Ansible playbook时,不需要特权用户。
当使用become时,Ansible允许您“成为”另一个用户,该用户与登录到机器上的用户(远程用户)不同。
以下是解决问题的步骤:
1. 检查您的Ansible playbook文件中的remote_user字段,确保它与您在/etc/ansible/host文件中指定的用户一致。
2. 运行ansible-playbook命令时,添加--ask-become-pass-K选项,以便在执行时输入特权用户的密码。
下面是一个示例命令:

ansible-playbook -i /etc/ansible/host -u ronenal --ask-become-pass sample_playbook.yml

在上面的示例中,我们使用-u选项指定了远程用户为ronenal,并使用--ask-become-pass选项来输入特权用户的密码。

方案2

如果您在Windows上使用Ansible与远程主机通信,可以考虑使用psexec来使用提升的特权,而无需使用become
Ansible提供了一个名为win_psexec的命令,可以帮助您在Windows上使用提升的特权。
以下是使用win_psexec的示例:

- name: Run command with escalated privileges
  win_psexec:
    command: your_command
    user: your_user
    password: your_password

在上面的示例中,我们使用win_psexec命令来运行具有提升特权的命令。您需要提供要运行的命令,以及提升特权所需的用户和密码。

请注意,使用win_psexec命令需要在Windows主机上安装psexec工具。

以上是解决问题的两种方案。根据您的具体情况选择适合您的方案。

评论1:感谢您的回答。我将become_user添加到playbook文件中,问题已解决。

正文完