我在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/