我有以下Ansible脚本。
ansible localhost -m known_hosts -a "path=/home/vagrant/.ssh/known_hosts name=web key=\"{{ lookup('pipe', 'ssh-keyscan ' + item) }}\" state=present with_items={{hosts}}" --user vagrant -e "{hosts:[web, db]}"
本质上,它意味着将一堆已知主机添加到known_hosts
文件中。我似乎无法让它与数组一起工作。虽然我已经设法让它适用于单个主机。
ansible localhost -m known_hosts -a "path=/home/vagrant/.ssh/known_hosts name=web key=\"{{ lookup('pipe', 'ssh-keyscan ' + host) }}\" state=present" --user vagrant -e "host='web'"
我是如何使用数组的?
答案 0 :(得分:1)
这可能不是您问题的答案。更多提出替代方案。
为什么要尝试使用Ansible? Ansible是一个很好的工具,可以在远程主机上快速完成一些任务,但在这种情况下,我不知道如何从中受益。
这里的单行内容比你的Ansible命令更短:
for HOST in web db; do if [ ! -n "$(grep "^$HOST " /home/vagrant/.ssh/known_hosts)" ]; then ssh-keyscan $HOST >> /home/vagrant/.ssh/known_hosts 2>/dev/null; fi; done