我在ansible中为不同的操作创建了不同的剧本。

我还为不同种类的剧本创建了不同的回调脚本(并将其与Ansible打包并安装)。

可以从许多不同的脚本/定时作业中调用这些剧本。

现在,是否可以为特定的剧本指定要调用的特定callback script? (可能使用命令行参数吗?)

现在正在发生的事情是,为每个剧本调用所有的Callback脚本。

我无法将callback script相对于剧本的位置/文件夹放置,因为它已经包装在ansible包中。同样,所有剧本也位于同一位置。

如果需要的话,我也可以修改一些Ansible源代码以适应它。

最佳答案

看完Ansible的代码后,我可以使用以下代码解决它...

在每个callback_plugin中,您可以指定self.disabled = True,并且根本不会调用该回调函数。

另外,在调用剧本时,可以选择将额外参数解析为key=value对。它将作为extra_vars字段作为playbook对象的一部分。

所以我在callback_plugin中做了这样的事情。

def playbook_on_start(self):
    callback_plugins = self.playbook.extra_vars.get('callback_plugin', '') // self.playbook is populated in your callback plugin by Ansible.
    if callback_plugins not in ['email_reporter', 'all']:
        self.disabled = True

在调用剧本的同时,我可以做类似的事情,
ansible-playbook -e callback_plugin=email_reporter //Note -e is the argument prefix key for extra vars.

关于ansible - 指定要在剧本中使用的特定回调,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32470801/

10-12 21:11