第 12 章 事件过滤器插件
事件有时具有不必要的额外数据,并可能会给规则引擎造成混乱。使用事件过滤器删除该额外数据,以便您可以专注于规则的相关内容。事件过滤器也可以更改数据的格式,以便规则条件可以更好地匹配数据。
事件定义为 python 代码,并以集合的形式分发。默认 eda 集合 有以下过滤器:
| 名称 | 描述 |
|---|---|
| json_filter | 此过滤器包括和排除事件对象中的键 |
| dashes_to_underscores | 此过滤器将有效负载中的所有键中的短划线更改为下划线 |
| ansible.eda.insert_hosts_to_meta | 此过滤器用于将主机信息添加到事件中,以便 ansible-rulebook 可以找到并使用它来 |
| ansible.eda.normalize_keys | 如果要将非 alpha 数字键更改为下划线,则使用此过滤器 |
您可以在另一个过滤器后链接事件过滤器,并将更新的数据从一个过滤器发送到下一个过滤器。在定义了源后,事件过滤器在规则手册中定义。当规则手册启动源插件时,它会关联正确的过滤器并在将数据放入队列之前转换数据。
在本例中,数据首先通过 json_filter 传递,然后通过 dashes_to_underscores 过滤器。在事件有效负载中,键只能包含字母、数字和下划线。句点(.)用于访问嵌套密钥。
由于每个事件都应记录过滤器 eda.builtin.insert_meta_info 的起源,它由 ansible-rulebook 自动添加,以添加源名称、键入、和 received_at。receive _at 以 UTC ISO8601 格式存储一个日期时间,并包括微秒。uuid 存储事件的唯一 id。meta 键 用于存储有关事件及其在 aap-server 中正确报告事件所需的元数据。
12.1. 作者事件过滤器 复制链接链接已复制到粘贴板!
事件过滤器是 python 模块中对事件数据执行转换的功能。它们可以删除、添加、更改或移动事件数据结构中的任何数据。事件过滤器将事件作为第一个参数,其他关键字参数由规则手册中的配置提供。
基本结构如下:
my_namespace.my_collection/extensions/eda/plugins/event_filter/my_filter.py
def main(event: dict, arg1, arg2):
# Process event data here
return event
# my_namespace.my_collection/extensions/eda/plugins/event_filter/my_filter.py
def main(event: dict, arg1, arg2):
# Process event data here
return event
您可以通过在事件源的过滤器列表中将其添加到规则列表中使用此过滤器:
其他资源