我遇到一个奇怪的问题,经过多次搜索,我找不到答案。 这是一个非常简单的案例。
当前有一个Linux计算机,用户x和用户y。当我手动登录到用户x时,可以使用“ sudo su-y”将用户y切换为无密码。
现在回到ansible。
static
此任务将使用用户x连接到计算机。要运行回声,它变为y。对于这种情况,我得到: “ module_stdout”:“ sudo:必须输入密码\ r \ n”,
对于用户y,我提供了一个带有/ bin / sh *的sudoers文件,该文件也不起作用。 有人有主意吗?
谢谢。
答案 0 :(得分:0)
要使用sudo su -
,您可能需要像这样添加become_flags
:
tasks:
- name: test task
shell: echo "this is a test"
become: true
become_method: "sudo"
become_flags: "su -"
become_user: y
如果这不起作用,请尝试以下其他操作:
tasks:
- name: test task
shell: echo "this is a test"
become: true
become_method: "sudo"
become_flags: "su - -c"
become_user: y
通过将-c
标志添加到su
,您可能可以解决Ansible如何运行become
命令的问题。实际上,Ansible不需要执行两个步骤(sudo su - y
,然后运行命令),而是以sudo ... foobarbaz.py
的形式运行一个命令,其中foobarbaz.py
是包含您的shell的脚本步骤(在这种情况下为echo
命令)。
要执行此操作,必须确保sudoers
文件包含一个条目,该条目允许用户运行类似的操作(如果查看sudo -l
的输出):
su - -c *