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

如何让Ansible Playbook仅返回debug模块的msg内容?

Ansible Playbook仅输出msg内容的解决方案

为什么no_log: True无效

no_log的作用是屏蔽敏感任务的日志记录,和控制Playbook的终端输出格式无关,所以之前的设置无法解决冗余输出问题。

可行解决方法

方法1:命令行解析JSON输出

通过环境变量让Ansible输出JSON格式,再用jq工具精准提取msg内容:

ANSIBLE_STDOUT_CALLBACK=json ansible-playbook your_playbook.yml | jq -r '.plays[].tasks[].hosts[] | .msg'

如果没有jq,也可以用grep做简单匹配(适用于输出格式稳定的场景):

ansible-playbook your_playbook.yml | grep -oP '(?<="msg": ").*(?=")'

方法2:修改Playbook直接输出结果

替换debug模块为shell的echo命令,直接输出目标内容:

---
- name: version find
  hosts: all
  become: yes

  tasks:
        - name: query package version
          shell: *shell command*
          register: info
          no_log: true

        - name: output result
          shell: echo "{{ inventory_hostname }} blah {{ info.stdout }} blah"

执行时添加-q参数屏蔽冗余提示:

ansible-playbook your_playbook.yml -q

方法3:使用极简回调插件

指定Ansible使用minimal回调插件,大幅简化输出内容:

ANSIBLE_STDOUT_CALLBACK=minimal ansible-playbook your_playbook.yml

这种方法会只保留任务结果的核心信息,格式更紧凑,适合不需要纯文本输出的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 15:07:16