将 Runner 状态和事件发送到外部系统
Runner 可以将事件和状态数据本地存储以便检索,也可以通过提供给模块接口的回调来发出这些信息。
或者,可以将 Runner 配置为通过可安装插件将事件发送到外部系统。目前,有两个示例插件可用。
HTTP 状态/事件发射器插件 - ansible-runner-http GitHub 仓库
ZeroMQ 状态/事件发射器插件 - ansible-runner-zeromq GitHub 仓库
请参考各自的仓库以配置这些插件。
事件结构
有两种类型的事件通过插件发出
状态事件
每当 Runner 的状态发生变化时,都会发送这些事件(请参阅 Runner.status_handler)例如
{"status": "running", "runner_ident": "XXXX" }
ansible 事件
这些事件是在剧本执行过程中,对于从 Ansible 收到的每个事件发送的(请参阅 剧本和主机事件)例如
{"runner_ident": "XXXX", <rest of event structure> }
编写您自己的插件
为了编写您自己的插件接口并使其被 Runner 识别并使用,您需要做几件事。
在您的设置文件中声明模块作为 Runner 入口点(ansible-runner-http 有一个很好的例子)
entry_points=('ansible_runner.plugins': 'modname = your_python_package_name'),
在包的顶部实现
status_handler()
和event_handler()
函数,例如,请参阅 ansible-runner-http events.py 和__init__
导入 位于模块包顶部
安装完此插件后,Runner 将看到该插件并在发送状态和事件时调用这些函数。如果您的插件中存在任何错误,它们将立即被引发,Runner 将失败。