2014-04-09 54 views
3

我在我的安全庫存中找到了一些主機,無法連接到服務器(沒有部署pubkey)。Ansible - 列出可用的主機

  • 如何列出所有這些? (列表無法訪問的主機)
  • 也許有一種方法可以與所有主機生成庫存文件?

(不太優雅的方式是寫一個劇本和複製的命令行輸出,但有沒有更好的辦法?)

回答

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使用密碼,並假設你有一個密鑰部署劇本(例如deploy_keys.yml),您可以發出:

ansible-playbook -i hosts_without_key deploy_keys.yml -kKu someuser 

但如果問題是部署在主機上的鍵沒有他們,記住Ansible是冪等。在任何地方執行deploy_keys.yml劇本都沒有什麼壞處(只是更長一點)。

祝你好運。

+0

謝謝,ping是我更喜歡的解決方案。 到目前爲止,密鑰都在一個單獨的密碼管理工具中,所以我只需要一個實例列表來查找並臨時將'ansible_ssh_pass'添加到庫存中的相關服務器 – ProfHase85