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

Ansible异步ad hoc任务未返回job ID无法查询状态如何解决

问题原因

这是Ansible 2.5.x版本的已知行为:ad hoc模式下执行异步任务时,如果指定-P 0(即关闭轮询、后台立即返回),默认标准输出不会打印异步任务的job ID,该输出逻辑在2.6及后续版本已经做了优化。

解决方法

1. 新执行异步任务时主动获取job ID

执行异步ad hoc命令时添加-v(verbose)参数,输出中会直接显示ansible_job_id字段,对应值即为job ID:

ansible all -a "sleep 60" -P 0 -B 86400 -v

拿到ID后即可通过async_status模块查询任务状态:

ansible all -m async_status -a "jid=<替换为实际job ID>"

2. 已运行的异步任务获取job ID

Ansible的异步任务会在远程节点的~/.ansible_async/目录下生成以job ID命名的状态文件,直接遍历该目录即可获取所有未清理的异步任务ID:

# 批量查询所有节点的异步任务ID
ansible all -a "ls ~/.ansible_async/"

如果需要查看任务详情,可以直接读取对应ID的文件内容:

ansible <节点名> -a "cat ~/.ansible_async/<替换为job ID>"

优化建议

如果需要长期使用异步任务能力,建议将Ansible升级到2.6及以上版本,该版本起ad hoc异步任务即使不加-v参数,指定-P 0时也会默认返回job ID,无需额外操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:54:05