linux Ansible:没有密码的sudo

41ik7eoe  于 2023-10-16  发布在  Linux
关注(0)|答案(4)|浏览(115)

我想用用户sa 1运行ansible,但不使用sudo密码:
第一次OK:

[root@centos1 cp]# ansible cent2 -m shell -a "sudo yum -y install httpd"

cent2 | SUCCESS | rc=0 >>

第二次FAQs:

[root@centos1 cp]# ansible cent2 -s -m yum -a "name=httpd state=absent"

cent2 | FAILED! => {
    "changed": false,
    "failed": true,
    "module_stderr": "",
    "module_stdout": "sudo: a password is required\r\n",
    "msg": "MODULE FAILURE",
    "parsed": false
}

救命啊!

7gs2gvoe

7gs2gvoe1#

这是不可能的,这是你的服务器的配置。确保允许用户ansible在没有密码的情况下使用sudo。
1.要登录到服务器
1.使用sudo visudo打开sudoers文件
1.确保你有一条这样的线:centos ALL=(ALL) NOPASSWD:ALL
1.将centos替换为您的用户
1.保存文件
您可以从服务器本身尝试运行:

sudo -u [yourusername] sudo echo "success"

如果这能起作用,它也应该能在ansible上起作用。

uqxowvwt

uqxowvwt2#

默认情况下,ansible运行带有标志的sudo:-H -S -n成为root。其中--non-interactive将是选项-n的相应长形式。这个选项似乎让sudo返回错误消息,而不试图让身份验证模块做他们的事情。
我设法绕过密码错误,创建了一个包含以下行的URL/. ansible.cfg,用于最相关的ansible版本。

Ansible 2.4

[defaults]
sudo_flags = --set-home --stdin

ansible 2.9

[sudo_become_plugin]
flags = -H -S

这至少足以让pam_ssh_agent_auth.so运行并验证我的身份。
在2.8版本之前,上面的例子可以工作,比2.8版本更高的版本需要第二个例子。新样式配置的文档可以在Ansible User Guide中找到。

x3naxklr

x3naxklr3#

这是剧本,如果你想让ansible为你做
1.将用户添加到所选组(在我的示例中为wheel
1.将此添加到您的剧本

- name: Make users passwordless for sudo in group wheel
  lineinfile:
    path: /etc/sudoers
    state: present
    regexp: '^%wheel'
    line: '%wheel ALL=(ALL) NOPASSWD: ALL'
    validate: 'visudo -cf %s'
gev0vcfq

gev0vcfq4#

##-----------------------
  - name: sudo without password
    become: true
    copy:
      dest: /etc/sudoers.d/dont-prompt-ubuntu_user-for-sudo-password
      content: 'ubuntu ALL=(ALL) NOPASSWD:ALL'

它会创建一个名为/etc/sudoers.d/dont-prompt-ubuntu_user-for-sudo-password的文件,其中包含以下内容:

ubuntu ALL=(ALL) NOPASSWD:ALL

这是因为Debian和Ubuntu的默认/etc/sudoers文件有这样一行:

@includedir /etc/sudoers.d

相关问题