community.general.diy 回调 – 自定义输出
注意
此回调插件是 community.general 集合 (版本 10.1.0) 的一部分。
如果您使用的是 ansible
包,则可能已安装此集合。它不包含在 ansible-core
中。要检查它是否已安装,请运行 ansible-galaxy collection list
。
要安装它,请使用: ansible-galaxy collection install community.general
。您需要其他要求才能使用此回调插件,请参阅 要求 获取详细信息。
要在 playbook 中使用它,请指定: community.general.diy
。
community.general 0.2.0 中的新增功能
回调插件
此插件是一个 **标准输出回调**。一次只能使用一个标准输出回调。但是,可以启用其他聚合或通知回调。有关回调插件的更多信息,请参见 回调插件。
概要
允许您提供自己的自定义回调模板进行输出的回调插件。
要求
以下要求是在执行此回调的本地控制器节点上所需的。
在配置中设置为 stdout_callback
参数
参数 |
注释 |
---|---|
切换以控制在检查模式下显示标记。 标记是在 playbook 执行开始和结束时(当调用 选项
配置
|
|
切换以控制是否将失败和不可达的任务显示到 STDERR(与 STDOUT 相比) 选项
配置
|
|
切换以控制在任务中显示“ok”任务/主机结果 选项
配置
|
|
切换以控制在任务中显示跳过的任务/主机结果 选项
配置
|
|
用于 on_any 回调的输出。 配置
|
|
用于 模板应呈现 有效的颜色值。 配置
|
|
用于 on_file_diff 回调的输出。 配置
|
|
用于 模板应呈现 有效的颜色值。 配置
|
|
用于回调 playbook_on_handler_task_start 的输出。 配置
|
|
用于 模板应呈现 有效的颜色值。 配置
|
|
用于回调 playbook_on_include 的输出。 配置
|
|
用于 模板应呈现 有效的颜色值。 配置
|
|
用于回调 playbook_on_no_hosts_matched 的输出。 配置
|
|
用于 模板应呈现 有效的颜色值。 配置
|
|
用于回调 playbook_on_no_hosts_remaining 的输出。 配置
|
|
用于 模板应呈现 有效的颜色值。 配置
|
|
用于回调 playbook_on_notify 的输出。 配置
|
|
用于 模板应呈现 有效的颜色值。 配置
|
|
用于回调 playbook_on_play_start 的输出。 配置
|
|
用于 模板应呈现 有效的颜色值。 配置
|
|
用于回调 playbook_on_setup 的输出。 配置
|
|
用于 模板应呈现 有效的颜色值。 配置
|
|
用于回调 playbook_on_start 的输出。 配置
|
|
用于 模板应呈现 有效的颜色值。 配置
|
|
用于回调 playbook_on_stats 的输出。 配置
|
|
用于 模板应呈现 有效的颜色值。 配置
|
|
用于回调 playbook_on_task_start 的输出。 配置
|
|
用于 模板应呈现 有效的颜色值。 配置
|
|
用于回调 playbook_on_vars_prompt 的输出。 配置
|
|
用于 模板应呈现 有效的颜色值。 配置
|
|
用于回调 runner_item_on_failed 的输出。 配置
|
|
用于 模板应呈现 有效的颜色值。 配置
|
|
用于回调 runner_item_on_ok 的输出。 配置
|
|
用于 模板应呈现 有效的颜色值。 配置
|
|
用于回调 runner_item_on_skipped 的输出。 配置
|
|
用于 模板应呈现 有效的颜色值。 配置
|
|
用于回调 runner_on_failed 的输出。 配置
|
|
用于 模板应呈现 有效的颜色值。 配置
|
|
用于回调 runner_on_no_hosts 的输出。 配置
|
|
用于 模板应呈现 有效的颜色值。 配置
|
|
用于回调 runner_on_ok 的输出。 配置
|
|
用于 模板应呈现 有效的颜色值。 配置
|
|
用于回调 runner_on_skipped 的输出。 配置
|
|
用于 模板应呈现 有效的颜色值。 配置
|
|
用于回调 runner_on_start 的输出。 配置
|
|
用于 模板应呈现 有效的颜色值。 配置
|
|
用于回调 runner_on_unreachable 的输出。 配置
|
|
用于 模板应呈现 有效的颜色值。 配置
|
|
用于回调 runner_retry 的输出。 配置
|
|
用于 模板应呈现 有效的颜色值。 配置
|
|
这会将通过 set_stats 插件设置的自定义统计信息添加到剧本总结中。 选项
配置
|
|
这会添加显示每个主机任务何时开始执行的输出。 选项
配置
|
|
当任务失败时,显示包含失败任务的文件路径和行号。使用 选项
配置
|
备注
注意
当未提供自定义回调
message(msg)
时,使用 ansible.builtin.default 回调插件输出。通过
ansible_callback_diy
字典提供回调事件数据,该字典可在选项的模板化上下文中使用。该字典仅在选项的模板化上下文中可用。它不是通过其他各种执行上下文(例如剧本、场景、任务等)可用的变量。通过各自变量输入设置的选项,只有在变量在对相应回调可用的上下文中设置的情况下,才能使用该变量设置。使用
ansible_callback_diy
字典查看回调可用的内容。此外,ansible_callback_diy.top_level_var_names
将输出回调可用的顶级变量名称。每个选项值在评估之前都作为模板呈现。这允许动态使用选项。例如,
"{{ 'yellow' if ansible_callback_diy.result.is_changed else 'bright green' }}"
所有
msg
选项的**条件**:如果值is None or omit
,则不使用该选项。**效果**:使用default
回调插件进行输出。所有
msg
选项的**条件**:如果值is not None and not omit and length is not greater than 0
,则使用该选项但不输出。**效果**:抑制输出。所有
msg
选项的**条件**:如果值is not None and not omit and length is greater than 0
,则使用该选项并输出。**效果**:将值呈现为模板并输出。有效的颜色值:
black
,bright gray
,blue
,white
,green
,bright blue
,cyan
,bright green
,red
,bright cyan
,purple
,bright red
,yellow
,bright purple
,dark gray
,bright yellow
,magenta
,bright magenta
,normal
参见
参见
- default – 默认 Ansible 屏幕输出
关于default回调插件的官方文档。
示例
ansible.cfg: >
# Enable plugin
[defaults]
stdout_callback=community.general.diy
[callback_diy]
# Output when playbook starts
playbook_on_start_msg="DIY output(via ansible.cfg): playbook example: {{ ansible_callback_diy.playbook.file_name }}"
playbook_on_start_msg_color=yellow
# Comment out to allow default plugin output
# playbook_on_play_start_msg="PLAY: starting play {{ ansible_callback_diy.play.name }}"
# Accept on_skipped_msg or ansible_callback_diy_runner_on_skipped_msg as input vars
# If neither are supplied, omit the option
runner_on_skipped_msg="{{ on_skipped_msg | default(ansible_callback_diy_runner_on_skipped_msg) | default(omit) }}"
# Newline after every callback
# on_any_msg='{{ " " | join("\n") }}'
playbook.yml: >
---
- name: "Default plugin output: play example"
hosts: localhost
gather_facts: false
tasks:
- name: Default plugin output
ansible.builtin.debug:
msg: default plugin output
- name: Override from play vars
hosts: localhost
gather_facts: false
vars:
ansible_connection: local
green: "\e[0m\e[38;5;82m"
yellow: "\e[0m\e[38;5;11m"
bright_purple: "\e[0m\e[38;5;105m"
cyan: "\e[0m\e[38;5;51m"
green_bg_black_fg: "\e[0m\e[48;5;40m\e[38;5;232m"
yellow_bg_black_fg: "\e[0m\e[48;5;226m\e[38;5;232m"
purple_bg_white_fg: "\e[0m\e[48;5;57m\e[38;5;255m"
cyan_bg_black_fg: "\e[0m\e[48;5;87m\e[38;5;232m"
magenta: "\e[38;5;198m"
white: "\e[0m\e[38;5;255m"
ansible_callback_diy_playbook_on_play_start_msg: "\n{{green}}DIY output(via play vars): play example: {{magenta}}{{ansible_callback_diy.play.name}}\n\n"
ansible_callback_diy_playbook_on_task_start_msg: "DIY output(via play vars): task example: {{ ansible_callback_diy.task.name }}"
ansible_callback_diy_playbook_on_task_start_msg_color: cyan
ansible_callback_diy_playbook_on_stats_msg: |+2
CUSTOM STATS
==============================
{% for key in ansible_callback_diy.stats | sort %}
{% if ansible_callback_diy.stats[key] %}
{% if key == 'ok' %}
{% set color_one = lookup('vars','green_bg_black_fg') %}
{% set prefix = ' ' %}
{% set suffix = ' ' %}
{% set color_two = lookup('vars','green') %}
{% elif key == 'changed' %}
{% set color_one = lookup('vars','yellow_bg_black_fg') %}
{% set prefix = ' ' %}
{% set suffix = ' ' %}
{% set color_two = lookup('vars','yellow') %}
{% elif key == 'processed' %}
{% set color_one = lookup('vars','purple_bg_white_fg') %}
{% set prefix = ' ' %}
{% set suffix = ' ' %}
{% set color_two = lookup('vars','bright_purple') %}
{% elif key == 'skipped' %}
{% set color_one = lookup('vars','cyan_bg_black_fg') %}
{% set prefix = ' ' %}
{% set suffix = ' ' %}
{% set color_two = lookup('vars','cyan') %}
{% else %}
{% set color_one = "" %}
{% set prefix = "" %}
{% set suffix = "" %}
{% set color_two = "" %}
{% endif %}
{{ color_one }}{{ "%s%s%s" | format(prefix,key,suffix) }}{{ color_two }}: {{ ansible_callback_diy.stats[key] | to_nice_yaml }}
{% endif %}
{% endfor %}
tasks:
- name: Custom banner with default plugin result output
ansible.builtin.debug:
msg: "default plugin output: result example"
- name: Override from task vars
ansible.builtin.debug:
msg: "example {{ two }}"
changed_when: true
vars:
white_fg_red_bg: "\e[0m\e[48;5;1m"
two: "{{ white_fg_red_bg }} 2 "
ansible_callback_diy_playbook_on_task_start_msg: "\nDIY output(via task vars): task example: {{ ansible_callback_diy.task.name }}"
ansible_callback_diy_playbook_on_task_start_msg_color: bright magenta
ansible_callback_diy_runner_on_ok_msg: "DIY output(via task vars): result example: \n{{ ansible_callback_diy.result.output.msg }}\n"
ansible_callback_diy_runner_on_ok_msg_color: "{{ 'yellow' if ansible_callback_diy.result.is_changed else 'bright green' }}"
- name: Suppress output
ansible.builtin.debug:
msg: i should not be displayed
vars:
ansible_callback_diy_playbook_on_task_start_msg: ""
ansible_callback_diy_runner_on_ok_msg: ""
- name: Using alias vars (see ansible.cfg)
ansible.builtin.debug:
msg:
when: false
vars:
ansible_callback_diy_playbook_on_task_start_msg: ""
on_skipped_msg: "DIY output(via task vars): skipped example:\n\e[0m\e[38;5;4m\u25b6\u25b6 {{ ansible_callback_diy.result.task.name }}\n"
on_skipped_msg_color: white
- name: Just stdout
ansible.builtin.command: echo some stdout
vars:
ansible_callback_diy_playbook_on_task_start_msg: "\n"
ansible_callback_diy_runner_on_ok_msg: "{{ ansible_callback_diy.result.output.stdout }}\n"
- name: Multiline output
ansible.builtin.debug:
msg: "{{ multiline }}"
vars:
ansible_callback_diy_playbook_on_task_start_msg: "\nDIY output(via task vars): task example: {{ ansible_callback_diy.task.name }}"
multiline: "line\nline\nline"
ansible_callback_diy_runner_on_ok_msg: |+2
some
{{ ansible_callback_diy.result.output.msg }}
output
ansible_callback_diy_playbook_on_task_start_msg_color: bright blue
- name: Indentation
ansible.builtin.debug:
msg: "{{ item.msg }}"
with_items:
- { indent: 1, msg: one., color: red }
- { indent: 2, msg: two.., color: yellow }
- { indent: 3, msg: three..., color: bright yellow }
vars:
ansible_callback_diy_runner_item_on_ok_msg: "{{ ansible_callback_diy.result.output.msg | indent(item.indent, True) }}"
ansible_callback_diy_runner_item_on_ok_msg_color: "{{ item.color }}"
ansible_callback_diy_runner_on_ok_msg: "GO!!!"
ansible_callback_diy_runner_on_ok_msg_color: bright green
- name: Using lookup and template as file
ansible.builtin.shell: "echo {% raw %}'output from {{ file_name }}'{% endraw %} > {{ file_name }}"
vars:
ansible_callback_diy_playbook_on_task_start_msg: "\nDIY output(via task vars): task example: {{ ansible_callback_diy.task.name }}"
file_name: diy_file_template_example
ansible_callback_diy_runner_on_ok_msg: "{{ lookup('template', file_name) }}"
- name: 'Look at top level vars available to the "runner_on_ok" callback'
ansible.builtin.debug:
msg: ''
vars:
ansible_callback_diy_playbook_on_task_start_msg: "\nDIY output(via task vars): task example: {{ ansible_callback_diy.task.name }}"
ansible_callback_diy_runner_on_ok_msg: |+2
{% for var in (ansible_callback_diy.top_level_var_names|reject('match','vars|ansible_callback_diy.*')) | sort %}
{{ green }}{{ var }}:
{{ white }}{{ lookup('vars', var) }}
{% endfor %}
ansible_callback_diy_runner_on_ok_msg_color: white
- name: 'Look at event data available to the "runner_on_ok" callback'
ansible.builtin.debug:
msg: ''
vars:
ansible_callback_diy_playbook_on_task_start_msg: "\nDIY output(via task vars): task example: {{ ansible_callback_diy.task.name }}"
ansible_callback_diy_runner_on_ok_msg: |+2
{% for key in ansible_callback_diy | sort %}
{{ green }}{{ key }}:
{{ white }}{{ ansible_callback_diy[key] }}
{% endfor %}