我想用没有sudo密码的用户sa1运行ansible:
第一次确定:
[root@centos1 cp]# ansible cent2 -m shell -a "sudo yum -y install httpd"
cent2 | SUCCESS | rc=0 >>
第二次失败:
[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
}
请帮忙!
答案 0 :(得分:13)
这不是你服务器配置的问题。确保用户ansible在没有密码的情况下使用sudo。
sudo visudo
centos ALL=(ALL) NOPASSWD:ALL
centos
替换为您的用户您可以通过运行以下命令从服务器本身进行尝试:
sudo -u [yourusername] sudo echo "success"
如果这样可行,它也应该起作用。
答案 1 :(得分:4)
默认情况下,ansible运行带有标志的sudo:-H -S -n
成为root。其中--non-interactive
是选项-n
的相应长格式。这个选项似乎使sudo返回错误消息,而不试图让认证模块做他们的事情。
我设法通过创建一个包含以下内容的〜/ .ansible.cfg来解决密码错误:
[defaults]
sudo_flags = --set-home --stdin
这至少足以让pam_ssh_agent_auth.so运行并验证我。
答案 2 :(得分:0)
如果你想要 ansible 为你做的,这里是剧本
wheel
)- 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'