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

寻求Ansible全主机100%可收集的通用Facts用于自动触发收集

问题描述

完整运行Ansible Playbook时,系统会自动收集Facts后再执行角色;但我经常通过标签单独运行特定角色,这种场景下Facts不会被自动收集,进而导致任务报错。目前需要手动执行以下命令来规避:

ansible-playbook playbook.yml -t setup,my-role

但我频繁遗忘这个操作,浪费了不少时间。因此我想在每个角色的开头添加一个故障安全任务,自动触发Facts收集:

- setup:
  when: ansible_os_family is undefined

不过我知道部分Facts并非所有主机都能收集到,用ansible_os_family存在通用性问题,想问问有没有100%能在所有主机上收集到的Facts(不需要完整列表,满足当前场景即可)。

解决方案

可以使用ansible_facts这个顶级变量作为判断条件——只要执行过setup模块,这个变量就一定会存在,无论主机是Unix/Linux、Windows还是网络设备等。修改后的任务如下:

- setup:
  when: ansible_facts is undefined

另外,ansible_python_version也是一个可靠的选择:Ansible依赖Python环境,只要能执行Ansible任务的主机,这个Facts就一定会被收集到。对应的任务写法:

- setup:
  when: ansible_python_version is undefined

这两个变量都能满足你的故障安全需求,确保在Facts未收集时自动触发setup模块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 16:33:18