回调插件介绍
ansible回调插件(callback plugins)允许为事件添加一些额外响应。这里的事件包括了执行任务(task)的结果,例如(ok、failed、unreachable、skipped),以及执行剧本(playbook)的过程(start、hosts_matched、task_start、stats)等等。丰富的事件回调使得回调插件能够做非常多的事情,不过,大多数时候他们都用来提供各种各样的输出,或者将日志传输到日志采集器,又或者当遇到特定事件时触发某些特定的任务。
修改默认的回调插件
- 同时只能有一个回调插件作为主要的管理者,用于输出到屏幕。
- 如果想替换,应该在这个插件中修改 `CALLBACK_TYPE = stdout`,
之后在 `ansible.cfg` 中配置 stdout 插件。
[defaults]
stdout_callback = json
或使用自定义的回调
[defaults]
stdout_callback = mycallback
默认 情况下这仅对 playbook 生效,如果想让 ad-hoc 方式生效应该在 `ansible.cfg` 文件中做如下设置:
[defaults]
bin_ansible_callbacks = True
验证:
[root@localhost home]# ansible-playbook -i hosts checkhost2.yml --limit dbservers
默认插件不输出信息
修改json插件输出信息
启用内置的回调插件
大部分情况下,无论是内置的回调插件还是自定义的回调插件,都需要在 `ansible.cfg` 中添加到白名单中,从而才能启用。
[root@localhost home]# vim /etc/ansible/ansible.cfg
callback_whitelist = timer, mail, profile_roles, custom_callback
- - `timer` 这个回调插件可以计算整个 playbook 的运行时间
- - `mail` 这个回调插件可以实现发送邮件的功能
- - `profile_roles` 这个插件是在执行中提添加用时时间
- - `custom_callback` 是自定义的插件
验证
vim /etc/ansible/ansible.cfg
callback_whitelist = timer
[root@localhost ~]# vim sleep.yml
vim sleep.yml //测试文件
- hosts: all
gather_facts: no
tasks:
- name: sleep 2
command: sleep 2
[root@localhost home]# ansible-playbook -i hosts .yml --limit dbservers
获取帮助
- ansible-doc -t callback -l` 可以查看当前可用的回调插件列表 ,q退出
- ansible-doc -t callback <callback plugins name> ` 可查看具体回调插件的帮助文档
比如:
[root@qfedu ~]# ansible-doc -t callback timer
> TIMER (/usr/lib/python2.7/site-packages/ansible/plugins/callback/timer.py)
This callback just adds total play duration to the play stats.
* This module is maintained by The Ansible Community
REQUIREMENTS: whitelist in configuration
CALLBACK_TYPE: aggregate
METADATA:
status:
- preview
supported_by: community