如何让脚本中的变量起作用

时间:2016-01-12 06:29:34

标签: ansible

我有以下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'"

我是如何使用数组的?

1 个答案:

答案 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