我是否在每个任务中添加了ansible sudo_pass
属性?
有没有办法在剧本中说sudo
和sudo_pass
?
PLAY [testservers] ************************************************************************************
TASK [Gathering Facts] ********************************************************************************
fatal: [192.168.2.121]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ss h: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).\r\n", "unreachable": true}
to retry, use: --limit @/etc/ansible/truedeploy_jenkins.retry
PLAY RECAP ********************************************************************************************
192.168.2.121 : ok=0 changed=0 unreachable=1 failed=0
答案 0 :(得分:2)
我是否在每个任务中添加了Ansible
sudo_pass
属性?
sudo_pass
很久以前就被弃用了become_pass
,但这仅仅是命名的情况。整个声明系列已重命名为become
。
您可以,但不需要将其添加到每个任务中。
有没有办法在剧本中说
sudo
和sudo_pass
?
become
可以在游戏级别定义。
答案 1 :(得分:2)
听起来您正在尝试使用root
作为ansible_user。馊主意。创建一个新用户,例如u_ansible
,并在/ etc / sudoers中授予该用户NOPASSWD: ALL
权限,您可以使用visudo
修改这些权限。
答案 2 :(得分:1)
最好的办法是在用户普通帐户上使用带有私钥的ssh而不使用密码,并将此用户帐户放在不带requiretty的sudoers中。
因此,您可以连接到远程主机并在playbook的任务中使用become属性。
答案 3 :(得分:0)
我还建议您只使用用户自己的帐户。它可以更轻松地跟踪谁做了什么。在ansible配置文件中,设置become_ask_pass=True
,Ansible将询问用户的密码。这样,您就不必在NOPASSWD: ALL
中向用户/etc/sudoers
提供。