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

Ansible中如何等待主机不可达后忽略状态并继续等待其恢复可达?

实现Ansible升级Playbook中的节点不可达等待任务

下面是满足需求的Playbook片段,重点实现task-5的功能:

---
- name: 节点软件升级流程
  hosts: target_nodes
  gather_facts: false
  tasks:
    # task-4:触发升级激活命令(示例)
    - name: 执行升级激活命令
      command: /usr/local/bin/trigger-upgrade-activation
      register: upgrade_trigger

    # task-5:等待节点变为不可达,忽略错误以继续后续任务
    - name: 等待节点SSH端口关闭(标记不可达)
      wait_for:
        host: "{{ inventory_hostname }}"
        port: 22
        state: stopped
        timeout: 2400  # 最长等待40分钟,覆盖题目中20-40分钟的窗口
        delay: 1200    # 先等待20分钟再开始检测,避免过早触发无效检测
      delegate_to: localhost
      ignore_errors: yes
      become: no

    # task-6:等待节点恢复可达(题目已知可用此模块)
    - name: 等待节点重新上线
      wait_for_connection:
        timeout: 2400  # 最长等待40分钟,对应恢复所需时间
        delay: 60      # 延迟1分钟后开始检测,避免节点刚重启就立刻尝试连接

参数说明:

  • wait_for模块:通过控制机检测目标节点的SSH端口(默认22)状态,state: stopped表示等待端口停止监听,即节点不可达
  • timeout: 2400:设置40分钟的最长等待时间,匹配题目中节点可能在20-40分钟内重启的范围
  • delay: 1200:先等待20分钟再启动检测,跳过节点还未开始重启的时间段,减少无效检测
  • delegate_to: localhost:在控制机执行检测操作,避免因目标节点断开导致任务直接失败
  • ignore_errors: yes:强制忽略此任务的所有错误(比如超时未检测到端口关闭),确保后续task-6能正常执行
  • become: no:无需提权,仅需控制机的基础网络检测权限

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 08:35:10