如何在permitrootlogin禁用机器上运行Ansible playbook?

时间:2017-10-21 08:04:38

标签: ssh ansible

我是否在每个任务中添加了ansible sudo_pass属性? 有没有办法在剧本中说sudosudo_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

4 个答案:

答案 0 :(得分:2)

  

我是否在每个任务中添加了Ansible sudo_pass属性?

sudo_pass很久以前就被弃用了become_pass,但这仅仅是命名的情况。整个声明系列已重命名为become

您可以,但不需要将其添加到每个任务中。

  

有没有办法在剧本中说sudosudo_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提供。