我想使用ansible管理一组现有服务器。我已经创建了一个ansible_hosts
文件,并-K
使用仅针对单个主机的命令进行了成功测试(使用该选项)
ansible -i ansible_hosts host1 --sudo -K # + commands ...
我现在的问题是每个主机上的用户密码都不同,但是我无法在Ansible中找到处理此密码的方法。
使用-K
,只会提示我预先输入一个sudo密码,然后似乎对所有后续主机都尝试了该密码,而不会提示:
host1 | ...
host2 | FAILED => Incorrect sudo password
host3 | FAILED => Incorrect sudo password
host4 | FAILED => Incorrect sudo password
host5 | FAILED => Incorrect sudo password
到目前为止的研究:
一个StackOverflow问题,其中有一个错误的答案(“ use
-K
”)和一个作者说“发现我需要无密码的sudo”的响应Ansible docs,其中说:“使用无密码sudo使事情更容易自动化,但这不是必需的。” (强调我的)
此安全StackExchange问题,将其视为
NOPASSWD
必需的读取内容文章“可扩展和可理解的供应...”,其中说:
“运行sudo可能需要输入密码,这是永远阻止Ansible的肯定方法。一个简单的解决方法是在目标主机上运行visudo,并确保用户Ansible将用于登录而不必输入密码”
文章“基本Ansible剧本”,其中说
“ Ansible可以以root用户身份登录到目标服务器,而无需sudo,或者让ansible用户使用不带密码的sudo,但是这样做的想法使我的脾脏有可能扬起食道并阻塞我的气管,所以我别”
我的想法完全正确,但是如何扩展到单个服务器之外呢?
ansible问题#1227,“ Ansible应该要求剧本中的所有用户使用sudo密码”,该文件在一年前被mpdehaan关闭,并评论“对这个的需求还不多,我认为大多数人都只从其中一个开始学习用户帐户或大多数时间使用密钥。”
那么...人们在这种情况下如何使用Ansible?设置NOPASSWD
在/etc/sudoers
,跨主机重用密码或启用根SSH登录似乎都在安全,而大幅减少。
sudo
(仍然需要输入密码)。
ansible_ssh_password
设置仅适用于SSH密码(提示位于名称中...)。&我已经在使用基于密钥的SSH登录了。