You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ansible:delegate_to任务服务器无响应时如何设置5分钟超时?

解决Ansible delegate_to任务超时问题的几种方案

方案1:利用Shell/Command模块内置的timeout参数

Ansible的shell和command模块本身提供了timeout参数,直接给任务设置该参数即可限制命令执行的超时时间,单位为秒(5分钟对应300秒)。

修改后的任务代码:

- name: Get disk size from server1
  shell: time df -h
  delegate_to: "server-1"
  ignore_errors: true
  timeout: 300  # 设置为5分钟(300秒)

注意:该参数要求Ansible版本≥2.4,若使用版本过低,建议升级或选用其他方案。

方案2:使用异步任务(async + poll)

通过异步执行任务的方式设置超时时间,async定义任务最长运行时长,poll设置轮询间隔(设为0表示不主动轮询)。到超时时间后任务会自动终止,不会持续阻塞。

示例代码:

- name: Get disk size from server1 asynchronously
  shell: time df -h
  delegate_to: "server-1"
  ignore_errors: true
  async: 300
  poll: 0
  register: disk_size_task

# 可选:如需获取任务结果,可添加以下轮询任务
- name: Check async task status
  async_status:
    jid: "{{ disk_size_task.ansible_job_id }}"
  delegate_to: "server-1"
  register: job_result
  until: job_result.finished
  retries: 10  # 自定义轮询次数
  delay: 30  # 每次轮询间隔30秒

方案3:通过SSH连接参数设置超时

从SSH连接层面限制超时时间,可针对单个任务或全局生效。

单任务设置

通过ansible_ssh_timeout变量为当前任务指定SSH连接超时:

- name: Get disk size from server1
  shell: time df -h
  delegate_to: "server-1"
  ignore_errors: true
  vars:
    ansible_ssh_timeout: 300  # SSH连接超时5分钟

全局设置

修改ansible.cfg文件,让所有任务默认应用该超时配置:

[ssh_connection]
timeout = 300

内容的提问来源于stack exchange,提问作者Subbiah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 12:45:03