正如在許多其他帖子和問題中所讀到的那樣,在執行 ansible-playbook 期間收集事實可能需要一些時間,並且可能會因多種原因而陷入困境。
就我而言,行為非常奇怪:
我有一個 ansible 劇本來設定我的伺服器。一切都可以透過 SSH 訪問,並且當一次僅在一台主機上運行時(與哪台主機無關),劇本會按預期運行。收集事實就像魔法一樣,只需幾秒鐘即可完成。
當針對多個主機執行 playbook 時,問題就開始出現。一旦我在主機文件中輸入多個主機進行設置,收集事實就會花費無盡的時間。
有人也經歷過這種行為並且可以給我一些如何解決這個問題的提示嗎?
啟動劇本時
ansible-playbook frontend_rollout.yml -i hosts -K -vvv
Ansible 希望我能如預期輸入 sudo 密碼和 SSH 密碼。當詢問每台伺服器的 SSH 密碼時,提示輸出將顯示在一行中,如下所示:
Enter passphrase for key '/home/bouldrini/.ssh/ansible_ssh': Enter passphrase for key '/home/bouldrini/.ssh/ansible_ssh':
我只能在兩個提示中輸入一次密碼。這是預期的行為嗎?我錯過了什麼 ?
答案1
可能有人有興趣,所以我現在沒有刪除這個問題。
無休止的事實收集的原因是所描述的 ssh 密碼提示行為。
作為一個正常人,期望的行為是:
[Pre fact gathering phase]
- prompt for ssh passphrase for host 1
- input for host 1
- prompt ssh passphrase for host 2
- input for host 2
[fact gathering phase]
但實際上是怎樣的:
[Pre fact gathering phase]
- prompt ssh passphrase for host 1 AND host 2 in buggy output
- input for host 1
[fact gathering phase]
- host 1 fact gathering ok
- waiting for input for host 2 without any prompting
這真的很令人困惑。
順便說一下,我在 Ubuntu 16.04 上使用 Ansible 2.8 和 python3.7。我沒有測試這個錯誤是否也出現在其他軟體星座中,但它可能會發生!