在Ansible中,如何在回调插件中访问提供给playbook的额外参数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Ansible中,如何在回调插件中访问提供给playbook的额外参数?相关的知识,希望对你有一定的参考价值。

我正在尝试编写一个回调插件,它将为每个任务计时。那不是困难的部分。但我有一系列运行来配置和配置实例的剧本。对于序列的每次运行,我想将runID传递给每个playbook,并且runID对于一次运行是常量,如下所示:

ansible-playbook -e "runID=seq198837" provision.yml
ansible-playbook -e "runID=seq198837" build.yml
ansible-playbook -e "runID=seq198837" deploy.yml

我写的回调插件必须收集插件中每个任务的时间信息,用runID标记它们并将它们存放到日志代理中。

我在回调插件中尝试了几个钩子和事件但是无法将runID额外参数传递给playbook。有没有办法访问该变量?

答案

你可以从play对象获得它,你可以访问on_play_start内部。

像这样:

def v2_playbook_on_play_start(self, play):
    vm = play.get_variable_manager()
    extra_vars = vm.extra_vars
    self.run_id = extra_vars['runID']

然后,当您将结果转储到on_stats(例如)中时,您可以引用self.run_id来访问您的runID额外变量。

以上是关于在Ansible中,如何在回调插件中访问提供给playbook的额外参数?的主要内容,如果未能解决你的问题,请参考以下文章

关于Ansible使用CallBack插件分析Playbook执行性能的一些笔记

自动化运维工具Ansible(24)开发回调插件 mysql_plays

如何利用ansible callback插件对执行结果进行解析

python 用于人类可读结果记录的Ansible回调插件 - http://blog.cliffano.com/2014/04/06/human-readable-ansible-playbook

如何利用ansible callback插件对执行结果进行解析

python中Ansible模块的Playbook理解