我正在使用Ansible回调,并希望使用在v2_playbook_on_start(self, playbook)
方法中执行的剧本的名称(例如“Ansible test”)。在
到目前为止,我是如何编写自定义回调的
class CallbackModule(CallbackBase):
CALLBACK_VERSION = 2.0
CALLBACK_TYPE = 'notification'
CALLBACK_NAME = 'XXXX'
CALLBACK_NEEDS_WHITELIST = True
def __init__(self, display=None):
super(CallbackModule, self).__init__(display=display)
def v2_playbook_on_start(self, playbook):
# How to get the playbook name?
def v2_playbook_on_stats(self, stats):
# ...
我已经试过好几种方法了,但到目前为止都没用:
playbook._load_playbook_data
,playbook.__module__
我在docs里找不到任何东西。在
我怎么知道这个名字?在
注意:在我的例子中,我不能使用playbook._basedir
编辑
一些更详细的细节来阐明我的观点。在
到目前为止,我的结构如下:
^{pr2}$在这里,术语集执行的任务在tasks/main.yml
中定义。在
playbook._file_name
给我的是main.yml
(不是内容,只是名称)tasks
。我想从回调方法ansible-deploy-apache
得到的是ansible-deploy-apache
。在
此代码为所有主机发布事实:
然后在您的行动手册中,您可以通过以下方式简单地访问事实:
^{pr2}$当然,你可以根据你的需要重命名事实。在
您可能想尝试
_file_name
:编写插件需要一些逆向工程:)
Context代表
v2_playbook_on_start
。在相关问题 更多 >
编程相关推荐