我正在编写一本Ansible手册,以便在各种主机上自动执行一系列sudo命令。当我在puTTY中单独执行这些命令时,我没有权限问题,因为我已被授予适当的访问权限。然而,当我试图创建一个剧本来做同样的事情时,我被告知
不允许用户在host_name上执行...
例如,如果我$ sudo ls /root/
,我没有问题,一旦我输入密码,就可以看到/ root /
对于我的Ansible剧本......
---
- host: servers
tasks:
- name: ls /root/
shell: ls /root/
become: true
become_method: sudo
...然后我得到上面提到的错误。
为什么会出现这种情况?它似乎告诉我,我没有权限运行一个命令,否则我可以在一个单独的puTTY终端运行。
答案 0 :(得分:1)
[]在各种主机上自动执行一系列sudo命令。当我单独执行这些命令时[]
为什么会出现这种情况?
听起来您在sudoers
文件中配置了特定命令(遗憾的是,您没有提供足够的详细信息,幸运的是您要求"想法"不是真正原因)。
Ansible shell
模块不运行您在sudo
前面指定的命令 - 它使用sudo
运行整个shell会话,因此该命令与您配置的命令不匹配在sudoers
。
允许所有命令使用Ansible用户的提升权限运行,或使用raw
模块而不是shell
。