在Ansible中增加SSH命令的超时

gri*_*edj 11 ssh ansible

我目前正在使用Ansible使用IPv6链接本地地址来提供裸机.一旦配置了服务器,ansible将在服务器上运行一系列测试,作为一个shell命令,以确保配置成功.这些测试大约需要10分钟才能运行.

我面临的问题是在命令完成之前连接似乎超时.

以下是Ansible的错误:

fatal: [fe80::5054:ff:XXXX:XXXX%eth0]: UNREACHABLE! => {
  "changed": false, 
  "msg": "Failed to connect to the host via ssh: Shared connection to fe80::5054:ff:XXXX:XXXX%eth0 closed.\r\n",
  "unreachable": true
}
Run Code Online (Sandbox Code Playgroud)

通过查看此错误,可能会认为SSH连接存在问题.SSH连接本身很好,因为在此任务之前,其他几个任务在同一主机上成功运行.

如何增加超时,以便Ansible等待命令完成?可以在Ansible配置中增加此超时,还是需要修改命令本身以增加超时?

小智 11

您将要异步运行任务.高级步骤将是:

  1. 例如发送部署请求
  2. 为所述请求获取某种实例或请求ID
  3. 对请求结果进行轮询
  4. 继续剧本

这是官方文档中此行为的一个示例

- name: 'YUM - fire and forget task'
  yum:
    name: docker-io
    state: installed
  async: 1000
  poll: 0
  register: yum_sleeper

- name: 'YUM - check on fire and forget task'
  async_status:
    jid: "{{ yum_sleeper.ansible_job_id }}"
  register: job_result
  until: job_result.finished
  retries: 30
Run Code Online (Sandbox Code Playgroud)