我写的一些任务开始并永不结束。 Ansible 不提供任何错误或日志来解释这一点,即使使用 -vvvv 选项也是如此。剧本只是挂起,过去的时间不会改变任何东西。

当我尝试手动运行我的任务(通过 SSH 输入命令)时,一切都很好。

挂起的示例任务:

- name: apt upgrade
  shell: apt-get upgrade

有什么办法可以看到 stdout 和 stderr 吗?我试过了:
- name: apt upgrade
  shell: apt-get upgrade
  register: hello
- debug: msg="{{ hello.stdout }}"
- debug: msg="{{ hello.stderr }}"

但什么都没有改变。

我确实有必需的权限,并且我传递了正确的 sudo 密码 - 其他需要 sudo 正确执行的任务。

最佳答案

问题的最可能原因是 SSH 连接。当一个任务需要很长的执行时间时 SSH 超时。我曾经遇到过这样的问题,为了克服 SSH 超时的问题,在运行 Ansible 的当前目录中创建一个 ansible.cfg 添加以下内容:

[ssh_connection]

ssh_args = -o ServerAliveInterval=n

其中 n 是我们通过 SSH 连接到服务器时使用的 ServerAliveInterval(秒)。将其设置在 1-255 之间。这将导致 ssh 客户端每 n 秒向服务器发送一次空包以避免连接超时。

关于ubuntu - 如何检测 Ansible playbook 在执行过程中挂起的原因,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20798774/

10-15 03:26
查看更多