首页/系统与基础设施/自动化运维速查/回调插件与执行输出扩展
Ansible 核心70 条

回调插件与执行输出扩展

回调插件订阅执行事件,用来改变输出样式、记录执行日志、统计数据、推送通知或生成结构化结果,全部运行在控制节点,通过 ansible.cfg 的 callbacks_enabled 启用。它会看到全部返回数据,需配合 no_log 防止敏感值外流。

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌​​​‌‌​‌‌​​​​‌​‌‌​‌‌​​​‌‌​‌‌​​​‌‌​​​‌​​‌‌​​​​‌​‌‌​​​‌‌​‌‌​‌​‌‌​​‌​‌‌​‌​‌‌‌​​​​​‌‌​‌‌​​​‌‌‌​‌​‌​‌‌​​‌‌‌​‌‌​‌​​‌​‌‌​‌‌‌​​​‌​‌‌​‌​‌‌​‌‌‌‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌‌​​​​​‌‌‌​‌​‌​‌‌‌​‌​​​​‌​‌‌​‌​‌‌​​‌​‌​‌‌‌‌​​​​‌‌‌​‌​​​‌‌​​‌​‌​‌‌​‌‌‌​​‌‌‌​​‌‌​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​

回调插件管的是输出与旁路

执行过程中,Ansible 会在若干固定时刻发出事件:play 开始、任务完成、任务失败、统计汇总。回调插件订阅这些事件,决定“怎么呈现、往哪里送、要不要顺带做点别的事”。换输出格式(更易读的 YAML 风格、结构化 JSON)、记录执行日志、把结果推给监控与通知渠道、给任务计时排行,都是在这一层实现的。

基本信息

配置位置ansible.cfg 的 [defaults] 段,启用列表由 callbacks_enabled 控制
标准输出格式stdout_callback 指定默认的输出样式
插件来源核心内置与各集合提供的回调插件,具体名称以 ansible-doc 列表为准
事件粒度playbook 开始/结束、play 开始、任务结果、主机不可达、统计汇总
执行位置全部在控制节点,不进入被管机
自定义开发继承回调基类并按需实现事件钩子方法

典型使用场景

  • 输出可读性:换用清单式输出,长 playbook 的结果更容易扫读
  • 执行留档:把每次运行的日志写到文件或日志系统,供事后追溯与审计
  • 耗时分析:启用计时类回调,得到每个任务的耗时排行,找出瓶颈
  • 结构化对接:输出为结构化格式,交给流水线解析后做判断与展示
  • 失败通知:在任务失败事件上触发告警,缩短发现时间
  • 合规记录:对变更类任务单独汇总,作为变更记录的一部分随流水线归档

启用与查看

启用与查看
# ansible.cfg
[defaults]
stdout_callback = default          # 默认输出样式
callbacks_enabled = profile_tasks  # 启用额外回调(旧版本该项名称不同)

[callback_profile_tasks]
sort_order = descending            # 计时排行按耗时降序

# 查看当前环境里可用的回调插件
# ansible-doc -t callback -l
# ansible-doc -t callback <插件名>    # 看它的专属配置项

回调能力分类

类型作用注意点
输出样式类改变终端呈现方式(更紧凑或更结构化)团队习惯不同,切换前先小范围试用
计时统计类输出任务耗时排行本身有少量开销,长期开启基本可接受
日志落盘类把事件写入文件或日志系统注意权限与轮转,避免日志无限增长
通知类在失败或结束时推送消息同步调用外部服务会拖慢每个任务
结构化输出类生成机器可解析的结果字段随版本变化,解析方需容忍新增字段
回调插件按事件被调用,单个插件报错不应中断执行,但会导致本应记录的内容缺失。写入外部系统或文件的回调要自己处理异常与重试策略,否则在磁盘写满、网络抖动时静默丢日志。
回调能看到任务的全部返回数据,包含变量原值与命令输出。把结果推到第三方通知渠道或日志平台时,敏感字段会跟着一起外流;含口令的任务必须设置 no_log,并限制回调的输出范围。

启用策略

以少为始:先启用一个计时类回调拿到数据,再根据需要增加日志落盘与结构化输出。每增加一个回调都会带来执行期的额外开销与新的失败面,尤其是需要网络交互的通知类插件。逐项评估后再固化到仓库的 ansible.cfg 中,保证所有执行者行为一致。

易错点

  • 启用会发起网络调用的通知类回调,外部服务响应慢时每个任务都被拖住,整体时长变长
  • 回调把含敏感值的结果推送到通知渠道或日志平台,秘密随之外泄
  • 日志类回调没有轮转与容量控制,长期运行后撑满磁盘
  • 升级后原有回调插件名或配置项名称变化,日志静默缺失而无人察觉
  • 依赖结构化输出的脚本硬编码字段,回调升级后新增字段导致解析失败

数据来源与参考

  • Ansible 官方文档 Callback plugins
  • Ansible 配置参考 callbacks_enabled 与 stdout_callback
  • ansible-doc -t callback 插件列表

整理校对:其其网ICT文档中心 · 本页地址:docs.qiqicto.com/automation/callback-plugin-output-extension.html

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌​​‌​‌‌‌‌​‌‌​​​​‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌​​​​‌​‌‌‌​‌​​​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌‌​‌‌​​​‌‌​‌‌​​​​‌​‌‌​‌‌​​​‌‌​‌‌​​​‌‌​​​‌​​‌‌​​​​‌​‌‌​​​‌‌​‌‌​‌​‌‌​​‌​‌‌​‌​‌‌‌​​​​​‌‌​‌‌​​​‌‌‌​‌​‌​‌‌​​‌‌‌​‌‌​‌​​‌​‌‌​‌‌‌​​​‌​‌‌​‌​‌‌​‌‌‌‌​‌‌‌​‌​‌​‌‌‌​‌​​​‌‌‌​​​​​‌‌‌​‌​‌​‌‌‌​‌​​​​‌​‌‌​‌​‌‌​​‌​‌​‌‌‌‌​​​​‌‌‌​‌​​​‌‌​​‌​‌​‌‌​‌‌‌​​‌‌‌​​‌‌​‌‌​‌​​‌​‌‌​‌‌‌‌​‌‌​‌‌‌​​​‌​‌‌‌​​‌‌​‌​​​​‌‌‌​‌​​​‌‌​‌‌​‌​‌‌​‌‌​​