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

如何为Ansible Ad-hoc返回内容添加指定facts?Playbook是否支持?

Ansible自动获取额外主机facts的可行性说明

没办法不用额外操作就自动获取ansible_fqdn这类额外facts。

你看到的discovered_interpreter_python是Ansible运行的基础前置项——为了确保模块能正常调用Python解释器,所有模块执行时都会默认触发这个最小化的fact收集,属于Ansible的底层必要操作。但像ansible_fqdn、ansible_default_ipv4这类系统级主机信息,属于非基础的扩展facts,Ansible不会默认自动收集,毕竟这类收集会增加执行开销,尤其在大规模主机集群场景下会影响效率。

Ad-hoc命令场景

如果要在ad-hoc里获取这些扩展facts,直接用setup模块即可,这是Ansible专门用于收集主机facts的模块:

# 收集所有主机facts
ansible all -m setup

# 仅收集ansible_fqdn这一项,减少输出内容
ansible all -m setup -a 'filter=ansible_fqdn'

Playbook场景

在Playbook里获取扩展facts的方式更灵活:

  • 每个Play默认会自动收集全量facts(除非你手动关闭),只要Play里没设置gather_facts: no,执行时就会自动拿到ansible_fqdn这类变量,后续任务可以直接引用。
  • 如果已经关闭了自动收集,或者需要在特定环节手动收集,添加setup模块任务即可:
- name: 收集指定主机facts
  ansible.builtin.setup:
    filter: ansible_fqdn  # 可选参数,仅收集指定的fact项

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 15:17:08