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

Ansible调试:如何通过setup模块在控制台打印已收集的facts?

当然可以!打印Ansible Setup模块收集的Facts很简单

完全没问题,不管是用Ad-hoc命令快速查看,还是在Playbook里调试输出,都有很直接的方法。我平时调试Ansible配置时经常这么做,给你几个常用的例子:

方法1:用Ad-hoc命令直接打印所有Facts

这是最快的方式,不需要写Playbook,直接在终端运行:

# 打印目标主机组的所有facts
ansible your_host_group -m setup

# 如果输出太多,还可以保存到文件里慢慢查看
ansible your_host_group -m setup > collected_facts.txt

这个命令会输出setup模块收集到的全部信息,包括系统版本、网络配置、硬件参数、环境变量等等。

方法2:在Playbook里用Debug模块输出

如果是在Playbook中调试,用debug模块是标准做法:

打印全部Facts

- name: 收集并打印所有Facts
  hosts: all
  gather_facts: yes  # 默认开启,显式声明更清晰
  tasks:
    - name: 输出完整的facts集合
      ansible.builtin.debug:
        var: ansible_facts

只打印特定的Facts

如果不需要全部信息,只想看某一项(比如操作系统版本、IP地址),可以直接指定对应的变量:

- name: 只打印操作系统版本
      ansible.builtin.debug:
        var: ansible_distribution_version

    - name: 打印主机的默认IPv4地址
      ansible.builtin.debug:
        var: ansible_default_ipv4.address

格式化自定义输出

你还可以用msg参数自定义输出格式,让结果更易读:

- name: 格式化输出主机关键信息
      ansible.builtin.debug:
        msg: "主机名: {{ inventory_hostname }} | 操作系统: {{ ansible_distribution }} {{ ansible_distribution_version }} | 内网IP: {{ ansible_default_ipv4.address }}"

小技巧:过滤冗长的输出

如果facts内容太多,可以结合终端工具过滤,比如:

# 只看和操作系统相关的facts
ansible your_host_group -m setup | grep -A 10 "ansible_distribution"

或者在Playbook里用verbosity参数控制输出的详细程度,只有当你用-vv运行Playbook时才会输出:

- name: 仅在详细模式下输出facts
      ansible.builtin.debug:
        var: ansible_facts
        verbosity: 2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:09:24