【发布时间】:2021-06-14 11:42:46
【问题描述】:
我有以下库存文件:
[all]
192.168.1.107
192.168.1.108
192.168.1.109
我想将这些主机的指纹添加到本地机器上的 known_hosts 文件中。 我知道我可以使用 ansible.builtin.known_hosts 但基于文档:
名称参数必须与键中存在的“主机名”或“IP”匹配 属性。
似乎我必须已经生成了密钥,并且我必须拥有三组密钥 - 每个主机一组。我希望我的所有主机都只有一把钥匙。
现在我可以用这个了:
- name: accept new remote host ssh fingerprints at the local host
shell: "ssh-keyscan -t 'ecdsa' {{item}} >> {{ssh_dir}}known_hosts"
with_inventory_hostnames:
- all
但这种方法的问题在于它不是幂等的 - 如果我运行它 3 次,它将在 known_hosts 文件中添加三个类似的行。
另一种解决方案是检查 known_hosts 文件中是否存在主机 ip 并仅在它不存在时添加它,但我无法弄清楚如何在 when 条件下使用变量来检查多个主机。
所以问题是如何在以幂等方式生成一组私钥/公钥之前将主机指纹添加到本地 known_hosts 文件中?
【问题讨论】:
-
类似问题stackoverflow.com/questions/30226113/…,但提供的解决方案要么不是幂等的,要么需要禁用主机密钥检查。
标签: ansible