我有一些 Windows 主机配置了 WinRM,以便让 Ansible 连接它们。不像 Linux 主机可以执行 ssh-copy-id 来避免输入凭据,我必须将我的管理员密码放在 /etc/ansible/host 中才能连接这些 Windows 机器:
cat /etc/ansible/hosts
[win]
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
[win:vars]
ansible_user= administrator
ansible_password=mypasswd
ansible_port=5986
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore
有什么方法可以避免在 hosts 文件中包含纯文本密码?
我对 Ansible 很陌生,感谢任何帮助!
决定你想在运行 Ansible 的机器上使用什么来进行秘密管理。
从某些系统获取数据的查找插件。
ansible-doc -t lookup --list
并查看列表,秘密相关的名称往往带有“通过”或“秘密”。或包装本地操作系统秘密存储的“密钥环”(GNOME 秘密服务,KDE kwallet)。在配置任何秘密系统后,在 Ansible 中使用查找表达式引用它:
另一个选项是ansible-vault,集成的文件加密实用程序。(请注意,这与 HashiCorp 保险库不同,如果您有它,您可以使用它的查找插件。)为此,您可以加密库存文件,或者您放置秘密的单独的 vars 文件。
额外提示:
/etc/ansible/hosts
仅仅是默认的库存文件。您可以更改 ansible.cfg 中的默认清单文件。或者在命令行上提供一个带有选项的-i
选项。因此,您可以在主目录中拥有库存,并在不触及特权目录的情况下对其进行编辑。这就是 ansible-vault 的用途(正如 Ron Trunk 已经提到的)
处理此问题的一种方法是更改您的示例条目,如下所示:
然后,在您的保险库中,您将拥有
你真的应该看看https://docs.ansible.com/ansible/latest/user_guide/vault.html