我的ansible清单中有一些主机,ansible服务器无法连接到(没有部署pubkey)。
(不太优雅的方式是编写一个剧本并复制命令行输出,但是有更好的方法吗?)
答案 0 :(得分:3)
要列出它们,您可以使用ping
模块,并输出输出:
ANSIBLE_NOCOWS=1 ansible -m ping all 2>&1 | grep 'FAILED => SSH' | cut -f 1 -d' '
如果要生成广告资源,只需将输出重定向到文件中即可:
ANSIBLE_NOCOWS=1 ansible -m ping all 2>&1 | grep 'FAILED => SSH' | cut -f 1 -d' ' > hosts_without_key
然后,您可以在以后提供-i
切换到ansible命令时使用它:
ansible-playbook -i hosts_without_key deploy_keys.yml
如果你可以使用密码ssh,并假设你有一个密钥部署playbook(例如deploy_keys.yml
),你可以发出:
ansible-playbook -i hosts_without_key deploy_keys.yml -kKu someuser
但是,如果重点是在没有它们的主机上部署密钥,请记住Ansible是幂等的。在任何地方执行deploy_keys.yml
剧本都没有坏处(它只是稍长一点)。