即使配置为无密码,Ansible的begin_user仍要求输入密码

时间:2018-11-29 14:29:49

标签: ansible

我遇到一个奇怪的问题,经过多次搜索,我找不到答案。 这是一个非常简单的案例。

当前有一个Linux计算机,用户x和用户y。当我手动登录到用户x时,可以使用“ sudo su-y”将用户y切换为无密码。

现在回到ansible。

static

此任务将使用用户x连接到计算机。要运行回声,它变为y。对于这种情况,我得到:     “ module_stdout”:“ sudo:必须输入密码\ r \ n”,

对于用户y,我提供了一个带有/ bin / sh *的sudoers文件,该文件也不起作用。 有人有主意吗?

谢谢。

1 个答案:

答案 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 *