ansible 通过 setup 模块批量收集远程主机系统事实,自动获取硬件、网络、系统、软件等信息;支持全量获取、filter 筛选字段、--tree 保存到本地,playbook 中默认可用 {{ ansible_distribution }} 等变量。

用 Ansible 批量收集远程主机系统事实,核心是 setup 模块。它自动采集目标主机的硬件、网络、系统、软件等运行时信息(即 “facts”),无需额外安装客户端,也不需要编写脚本。
基础用法:一次性获取全部事实
直接运行以下命令,即可对指定主机组(如 wusen)或单台主机(如 192.168.1.10)执行事实收集:
-
ansible wusen -m setup—— 默认输出所有 facts,内容较长,适合调试 -
ansible all -m setup --limit node1,node2—— 限制只对特定主机执行
按需筛选:只取关心的信息
避免冗余输出,可用 filter 参数精确匹配字段名:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
-
ansible wusen -m setup -a "filter=ansible_distribution*"—— 查操作系统发行版相关字段(如ansible_distribution、ansible_distribution_version) -
ansible wusen -m setup -a "filter=ansible_*_mb"—— 获取内存大小(单位 MB) -
ansible wusen -m setup -a "filter=ansible_processor_vcpus"—— 获取逻辑 CPU 核心数 -
ansible wusen -m setup -a "filter=ansible_all_ipv4_addresses"—— 获取所有 IPv4 地址列表
批量保存到本地:便于归档与比对
用 --tree 选项可将每台主机的事实分别写入独立文件,文件名自动使用主机名:
-
ansible wusen -m setup --tree /tmp/facts—— 结果保存在/tmp/facts/下,每个主机一个 JSON 文件 - 后续可用
diff或脚本对比不同主机的配置差异,例如检查内核版本是否一致
在 Playbook 中调用 facts 并复用
Playbook 中无需显式调用 setup,Ansible 默认会在每个 play 开始时自动收集(除非禁用 gather_facts: false)。收集后的变量可直接引用:
-
{{ ansible_distribution }}、{{ ansible_memtotal_mb }}等可在vars或tasks中使用 - 配合条件判断实现差异化操作,例如:
- name: Install nginx only on CentOS<br> apt:<br> name: nginx<br> when: ansible_distribution == "Ubuntu"










