我尝试在剧本中使用选项“become;”和“become_user”,其中相关用户在目标机器上拥有无密码 sudo。但每次我尝试运行剧本时,都会收到错误“缺少 sudo 密码”。

主机以“bob”身份登录。此帐户也是目标 Ubuntu 服务器上的主要用户。(安装时创建的帐户。)我正尝试使用第二个帐户“ansible”。

‘ansible’ 用户在包含的 ‘/etc/sudoers.d/90-cloud-init-users’ 文件中如下:

ansible ALL=(ALL) NOPASSWD:ALL

‘/erc/shadow’ 中也没有密码 (ansible:!:19983:0:99999:7:::)。如果我真的必须以用户身份登录,则使用 SSH 密钥。

剧本是:

- hosts: nas
  become: true
  become_user: ansible
  roles:

但每当我运行剧本时我都会得到:

fatal: [XXX]: FAILED! => {"msg": "Missing sudo password"}

指定所有添加密码的方法(-K 之类的)并将其留空不起作用。

我只想能够运行以下命令,而无需输入任何其他密码,只需将我的 SSH 密钥添加到 ssh-agent 即可。

 ansible-playbook -i inventory playbook.yml --limit nas

1

  • 1
    不需要sudo调用它的用户的密码?它需要bob的​​密码,而不是andible的。你试过吗?或者,是否可以使用su取决于您要更改的帐户的密码,而不是您要更改的帐户的密码?


    – 


最佳答案
2

主机以“bob”身份登录…我正尝试成为名为“ansible”的第二个帐户。

此 sudo 条目…

ansible ALL=(ALL) NOPASSWD:ALL

… 赋予帐户“超级权力” ansible,而不是bob帐户本身。

重新阅读 sudoers 文件格式的手册页。

你需要更多类似的东西:

bob ALL=(ansible) NOPASSWD:ALL

这应该允许bob以该帐户运行任何内容ansible

3

  • 现在出现以下错误::The destination directory (/etc/default) is not writable by the current user.


    – 


  • See3ms 我无法运行:sudo -u ansible rm /etc/default/fart 。


    – 

  • sudo -u ansible bash -c ‘sudo touch /etc/default/fart’ | 成功了。现在如何让 ansible 做到这一点?


    – 

看起来 ansible 并没有按照我希望的方式进行编码,在快速查看冗长的输出后,它并没有执行我想要的操作。

然而,我已经找到了可以满足我要求的东西。

认为这个问题已经解决了。