问题描述
在执行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文件中,问题已解决。