如何编写Ansible playbook循环检测指定路径文件直到手动终止脚本
实现Ansible持续检测文件存在性的修改方案
完整可运行playbook
--- - name: 持续检测指定文件存在性 hosts: all gather_facts: no strategy: free # 实现各主机独立输出,无需等待其他主机 tasks: - name: 检测目标路径下文件是否存在 stat: path: /path/to/the/file register: file_name retries: 999999 # 超大重试次数,实现近似无限执行 until: false # 永远不满足终止条件,直到手动Ctrl+C停止playbook delay: 5 # 两次检测的间隔时间,单位为秒,可按需调整 - name: 报告文件存在 debug: msg: '*异常发生* {{ inventory_hostname }}' when: file_name.stat.exists - name: 报告文件不存在 debug: msg: 'ATF仍在运行 {{ inventory_hostname }}' when: not file_name.stat.exists
改动说明
- 新增
strategy: free配置:Ansible默认会按任务批次并行执行所有主机的同个任务,输出会按任务分组;开启free策略后各主机独立执行任务流程,输出会随单台主机的执行进度实时打印,满足逐台连续输出的要求 - 关闭
gather_facts:避免每次循环都重复收集主机基础信息,降低不必要的性能损耗 - 给检测任务新增循环配置:
until: false设置永远不满足循环终止条件,搭配超大的retries值实现近似无限的持续检测,delay参数可自定义两次检测之间的等待间隔,避免高频请求占用主机资源 - 原有文件状态判断和输出逻辑保留,可按需调整提示文案和检测文件路径
内容的提问来源于stack exchange,提问作者Santhosh
相关产品推荐
相关产品推荐

