我正在尝试编写一个回调插件,以对每个任务进行计时。那不是艰难的部分。
但是我有一系列的剧本,可以用来配置和配置实例。对于序列的每次运行,我都希望将runID传递给每个剧本,并且该runID对于一次运行是恒定的,如下所示:

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


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

我在回调插件中尝试了多个钩子和事件,但是无法将runID额外参数传递给剧本。有什么方法可以访问该变量?

最佳答案

您可以从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额外变量。

10-05 21:55