Ansible 卡在收集事实

Ansible 卡在收集事实

正如在许多其他帖子和问题中所读到的,在执行 ansible-playbook 期间收集事实可能需要一些时间,并且可能由于多种原因而卡住。

就我而言,这种行为非常奇怪:

我得到了一个 ansible playbook 来设置我的服务器。一切都可以通过 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。我没有测试这个错误是否也出现在其他软件中,但可能会出现!

相关内容