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

开发Ansible软件版本获取模块应选用_facts还是_info模块?

Ansible模块开发与facts更新相关问题解答

模块命名选型说明

你对*_info模块的选型判断是正确的,Ansible官方对两类模块的定位区分非常明确:

  • *_facts模块:返回的内容会自动归入ansible_facts全局字典,适合存储系统层面通用、基础的全局属性,通常在playbook初始的gather_facts阶段统一采集
  • *_info模块:返回的内容为独立的查询结果,不会默认写入全局facts,适配的场景就是官方描述的

information on individual files or programs.

你需要查询的是特定自研软件的版本,属于单个程序的专属信息,用mysw_info命名完全符合官方规范。

facts自动更新问题说明

Ansible的facts默认不会自动重新检测更新,全局facts仅会在playbook启动后的gather_facts阶段执行一次全量采集,后续任务对系统属性的修改(比如你提到的升级自研软件变更版本)不会主动触发facts刷新。

如果需要获取更新后的属性值,有两种常用方案:

  • 调用setup模块重新执行全量facts采集,如果是自定义*_facts模块的话也需要重新调用对应模块才能更新对应自定义facts值
  • 升级任务执行完成后,重新调用你开发的mysw_info模块查询最新版本,该方案不需要全量刷facts,执行效率更高

如果你有将版本信息存入全局facts的需求,可以在调用mysw_info拿到返回结果后,通过set_fact模块手动写入自定义fact即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:18:02