Event-Driven Ansible 控制器用户指南
了解如何配置和使用 Event-Driven Ansible 控制器增强和扩展自动化
摘要
前言
Event-Driven Ansible 控制器是一种新方法,通过提高 IT 速度和灵活性来增强和扩展自动化,同时实现一致性和弹性。它由红帽开发,用于提供简化和灵活性。
对红帽文档提供反馈
如果您对本文档有任何改进建议,或发现错误,请通过 https://access.redhat.com 联系技术支持来创建一个请求。
第 1 章 Event-Driven Ansible 控制器概述
Event-Driven Ansible 是一个高度可扩展的、灵活的自动化功能,可用于其他软件厂商的监控工具。这些工具监控 IT 解决方案并确定事件,并自动实施记录的更改或响应规则以处理该事件。
以下流程组成用户配置:
Event-Driven Ansible 控制器的 API 文档包括在 https://<eda-server-host>/api/eda/v1/docs
第 2 章 为 Event-Driven Ansible 控制器设置凭证
在启动规则手册时,Event-Driven Ansible 使用凭据进行身份验证。
2.1. 设置凭证
创建用于私有存储库(GitHub 或 GitLab)或私有容器 registry 的凭证。
如果您使用 GitHub 或 GitLab 存储库,请使用 基本的 auth
方法。两个 SCM 服务器都正式支持。您可以使用支持 基本身份验证 的任何 SCM 供应商
。
流程
- 登录 Event-Driven Ansible 控制器仪表板。
- 在导航面板中,选择 → 。
- 点 。
插入以下内容:
- 名称
- 插入名称。
- 描述
- 此字段是可选的。
- 凭证类型
- 可用的选项包括 GitHub 个人访问令牌、GitLab 个人访问令牌或容器 registry。
- 用户名
- 插入用户名。
- 令牌
插入允许您向目的地进行身份验证的令牌。
注意如果使用容器 registry,则 token 字段可以是令牌或密码,具体取决于 registry 供应商。如果使用 Ansible Automation Platform hub registry,请在 token 字段中插入该密码。
- 点 。
保存凭证后,会显示凭证详情页面。从这里或 Credentials 列表视图中,您可以编辑或删除它。
2.2. 凭证列表视图
在 Credentials 页面中,您可以查看您创建的凭证列表以及凭证的 Type。
在菜单栏中,您可以在 Name 字段中搜索凭证。
在菜单栏中还有以下选项:
- 单击 。
- 点图标在 或 之间进行选择。
2.3. 编辑凭证
流程
使用以下方法之一编辑凭证:
- 从 Credentials 列表视图中,单击所需凭据旁边的 图标。
- 从 Credentials 列表视图中,选择凭据的名称,单击 。
- 编辑相关详情并点 。
2.4. 删除凭证
流程
使用以下方法之一删除凭证:
- 在 Credentials 列表视图中,点所需凭证旁的 图标,然后点 。
- 在 Credentials 列表视图中,选择凭证的名称,点 旁边的 图标 Castle,然后点 。
- 在弹出窗口中,选择 Yes,我确认我要删除此凭据。
- 单击 。
您可以一次删除多个凭证,方法是选中每个凭证旁边的复选框,然后点击菜单栏中的
图标 apicurio,然后点 。第 3 章 项目
项目是规则手册的逻辑集合。它们必须是 git 存储库,且只支持 http 协议。项目的规则手册必须位于为 Ansible 集合中的 Event-Driven Ansible 内容定义的路径中: /extensions/eda/rulebooks
(项目的根目录)。
3.1. 设置新项目
先决条件
- 您已作为 Content Consumer 登录到 Event-Driven Ansible controller Dashboard。
- 如有必要,您可以设置一个凭证。如需更多信息,请参阅设置凭证 部分。
- 您有一个现有的存储库,其中包含了与自动化控制器使用的仓库中包含的 playbook 集成的规则手册。
流程
- 登录 Event-Driven Ansible 控制器仪表板。
- 在导航面板中,选择 → 。
插入以下内容:
- 名称
- 输入项目名称。
- 描述
- 此字段是可选的。
- SCM 类型
- Git 是可供使用的 SCM 类型。
- SCM URL
HTTP[S] 存储库的协议地址,如 GitHub 或 GitLab。
注意您无法在创建项目后编辑 SCM URL。
- 凭证
- 此字段是可选的。这是利用 SCM URL 所需的令牌。
- 选项
Verify SSL 选项默认为启用。启用此选项会在导入项目时验证 SSL 使用 HTTPS。
注意如果您有使用自签名证书的本地存储库,您可以禁用这个选项。
- 选择 。
您的项目现已创建,可以在 Projects 屏幕中进行管理。
保存新项目后,会显示项目的详情页面。从这里或项目列表视图中,您可以编辑或删除它。
3.2. 项目列表视图
在 Projects 页面中,您可以查看您创建的项目以及 Status 和 Git 哈希。
如果源控制中的规则手册更改,您可以通过从 Projects 列表视图中选择项目旁边的同步图标来重新同步项目。Git 哈希 更新代表该存储库的最新提交。如果要使用更新的项目,则必须重启或重新创建激活。
3.3. 编辑项目
流程
- 在 Projects 列表视图中,选择所需项目旁边的 icon ⋮ 图标。
- 选择 。
- 输入所需的更改,然后选择 。

3.4. 删除项目
流程
- 在 Projects 列表视图中,选择所需项目旁边的 icon ⋮ 图标。
- 选择 。
- 在弹出窗口中,选择 。
- 选择 。
第 4 章 决策环境
决策环境是一个容器镜像,用于运行 Ansible 规则手册。它们创建用于通信自动化依赖项的通用语言,并提供构建和分发自动化环境的标准方法。默认决策环境在 Ansible-Rulebook 中找到。
要创建自己的决策环境,请参阅 在 Ansible Automation Platform 中为 Event-Driven Ansible 构建自定义决策环境。
4.1. 设置新的决策环境
以下步骤描述了如何将决策环境导入到您的 Event-Driven Ansible 控制器仪表板中。
先决条件
- 您已作为 Content Consumer 登录到 Event-Driven Ansible controller Dashboard。
- 如有必要,您可以设置一个凭证。如需更多信息,请参阅设置凭证 部分。
-
您已将决策环境镜像推送到镜像存储库,或者您选择使用 registry.redhat.io 提供的镜像
不受支持
。
流程
- 进入到 Event-Driven Ansible 控制器仪表板。
- 从导航面板中,选择 。
插入以下内容:
- 名称
- 插入名称。
- 描述
- 此字段是可选的。
- Image
- 这是完整的镜像位置,包括容器 registry表、镜像名称和版本标签。
- 凭证
- 此字段是可选的。这是利用决策环境镜像所需的令牌。
- 选择 。
您的决策环境现已创建,可以在决策环境屏幕上进行管理。
保存新的决策环境后,将显示决策环境的详细信息页面。您可以从那里或 Decision Environments 列表视图编辑或删除它。
4.2. 为 Ansible Automation Platform 中的 Event-Driven Ansible 构建自定义决策环境
如果您需要自定义决策环境,以提供默认决策环境中不可用的自定义维护或第三方事件源插件,请使用以下说明。
先决条件
- Ansible Automation Platform > = 2.4
- Event-Driven Ansible
- Ansible Builder > = 3.0
流程
添加
de-supported
决策环境。该镜像由红帽提供的基础镜像构建,名为de-minimal
。注意红帽建议在 Ansible Builder 中使用
de-minimal
作为基础镜像来构建自定义决策环境。
以下是使用 de-minimal
作为基础镜像的 Ansible Builder 定义文件示例,以使用 ansible.eda 集合构建自定义决策环境:
version: 3 images: base_image: name: 'registry.redhat.io/ansible-automation-platform-24/de-minimal-rhel8:latest' dependencies: galaxy: collections: - ansible.eda python_interpreter: package_system: "python39" options: package_manager_path: /usr/bin/microdnf
另外,如果您需要其他 Python 软件包或 RPM,您可以在单个定义文件中添加以下内容:
version: 3 images: base_image: name: 'registry.redhat.io/ansible-automation-platform-24/de-minimal-rhel8:latest' dependencies: galaxy: collections: - ansible.eda python: - six - psutil system: - iputils [platform:rpm] python_interpreter: package_system: "python39" options: package_manager_path: /usr/bin/microdnf
第 5 章 设置自动化控制器令牌
自动化控制器必须包含基于带有特定 playbook 的存储库的项目,以便与 Event-Driven Ansible 规则手册一起使用。自动化控制器还必须根据该项目中的 playbook 设置对应的作业模板。
5.1. 设置令牌以向自动化控制器进行身份验证
先决条件
- 您已作为 Content Consumer 登录到 Event-Driven Ansible controller Dashboard。
- 您已创建了用户。
- 您可以登录到 Event-Driven Ansible 控制器仪表板,或者作为机构中的用户添加。
流程
- 进入 Event-Driven Ansible 控制器仪表板。
- 在顶部导航面板中选择您的个人资料。
- 进入用户详情。
- 选择 → 。
插入以下内容:
- 名称
- 插入名称。
- 描述
- 此字段是可选的。
- 令牌
在自动化控制器中创建令牌。有关创建令牌的更多信息,请参阅自动化控制器用户指南中的 用户 - Tokens 部分。
注意您的令牌必须处于 write-scope 状态,并且如果您被分配了的用户,则必须有执行任务和工作流模板的权限。
- 选择 。
保存新令牌后,您将进入 Controller Tokens 选项卡,您可以在其中删除令牌。
第 6 章 规则手册激活
规则手册激活是由执行特定规则手册的决策环境定义的后台运行的进程。
6.1. 设置规则手册激活
先决条件
- 您已作为 Content Consumer 登录到 Event-Driven Ansible controller Dashboard。
- 您已设置了一个项目。
- 您已设置了决策环境。
- 您已设置了自动化控制器令牌。
流程
- 进入到 Event-Driven Ansible 控制器仪表板。
- 在导航面板中,选择 。
插入以下内容:
- 名称
- 插入名称。
- 描述
- 此字段是可选的。
- 项目
- 项目是规则手册的逻辑集合。
- 规则手册
- 规则手册会根据所选项目显示。
- 决策环境
决策环境是一个容器镜像,用于运行 Ansible 规则手册。
注意在 Event-Driven Ansible 控制器中,您无法自定义决策环境的拉取策略。默认情况下,它遵循 always 策略的行为。每次启动激活时,系统会尝试拉取镜像的最新版本。
- 重启策略
这是一个策略,用于决定何时重启规则手册。
策略:
- Always :当规则手册完成时重启
- Never :在规则手册完成后重启一个规则手册
- On failure:只在失败时重启
- 启用规则手册激活?
- 这会自动启用规则手册激活来运行。
- 变量
-
规则手册的变量采用 JSON/YAML 格式。内容等同于通过 ansible-rulebook 命令的
--vars
标志传递的文件。
- 点 。
现在,您的规则手册激活已创建,可以在 Rulebook Activations 页面上管理。
保存新的规则手册激活后,会显示规则手册激活的详细信息页面。从 there 或 Rulebook Activations 列表视图中,您可以编辑或删除它。
有时,当源插件关闭时,它会导致规则手册在一定时间后安全退出。当规则手册激活关闭时,任何等待执行的任务都会被取消,并将向激活日志发送信息级别消息。如需更多信息,请参阅 规则手册。
6.2. 规则手册激活列表视图
在 Rulebook Activations 页中,您可以查看您创建的规则手册激活,以及 激活状态, 与规则手册关联的规则数量, Fire 数量, 和 Restart 数量。
如果 Activation Status 为 Running,这表示规则手册激活在后台运行,并根据规则在规则手册中声明的规则执行必要的操作。
您可以从 Rulebook Activations 列表视图中选择激活来查看更多详情。
![Rulebook activation][width=25px](https://access.redhat.com/webassets/avalon/d/Red_Hat_Ansible_Automation_Platform-2.4-Event-Driven_Ansible_controller_user_guide-zh-CN/images/2b2fdf25e67d6f64b92e05f42a6918c4/eda-rulebook-activations-list-view.png)
对于已运行的所有激活,您可以查看 Details 和 History 选项卡,以获取有关发生情况的更多信息。
6.2.1. 查看激活输出
您可以在 History 选项卡中查看激活的输出。
流程
- 选择 选项卡来访问所有激活实例的列表。激活实例代表激活的单个执行。
- 然后,在问题中选择激活实例,这会显示由该特定执行生成的输出。

要查看处于和触发某个操作的事件,您可以使用 Event-Driven Ansible 控制器仪表板中的 Rule Audit 部分。
6.3. 启用和禁用规则手册激活
- 选择行级的切换,以启用或禁用您选择的规则手册。
- 在弹出窗口中,选择 。
- 选择 。
6.4. 重启规则手册激活
如果当前启用并且重启策略在创建时被设置为 Always,您只能重新启动一个规则手册激活。
- 选择 Rulebook Activation enabled/disabled 切换开关旁边的 图标 ⋮。
- 选择 。
- 在弹出窗口中,选择 。
- 选择 。
6.5. 删除规则手册激活
- 选择 Rulebook Activation enabled/disabled 切换开关旁的 图标 ⋮。
- 选择 。
- 在弹出窗口中,选择 。
- 选择 。
6.6. 激活 Webhook 规则手册
在 Openshift 环境中,您可以通过创建一个提供规则手册激活的 Kubernetes 服务的路由来允许 Webhook 通过给定端口访问 activation-job-pod。
先决条件
- 您已在 Event-Driven Ansible 控制器仪表板中创建了规则手册激活。
以下是带有给定 Webhook 的 rulebook 示例:
- name: Listen for storage-monitor events hosts: all sources: - ansible.eda.webhook: host: 0.0.0.0 port: 5000 rules: - name: Rule - Print event information condition: event.meta.headers is defined action: run_job_template: name: StorageRemediation organization: Default job_args: extra_vars: message: from eda sleep: 1
流程
创建一个路由(在 OpenShift Container Platform 中)以公开服务。以下是 ansible-rulebook 源的 Route 示例,它要求 POST 在决策环境 pod 的端口 5000 上:
kind: Route apiVersion: route.openshift.io/v1 metadata: name: test-sync-bug namespace: dynatrace labels: app: eda job-name: activation-job-1-5000 spec: host: test-sync-bug-dynatrace.apps.aap-dt.ocp4.testing.ansible.com to: kind: Service name: activation-job-1-5000 weight: 100 port: targetPort: 5000 tls: termination: edge insecureEdgeTerminationPolicy: Redirect wildcardPolicy: None
在创建路由时,使用 到 Route URL 的 Post 进行测试 :
curl -H "Content-Type: application/json" -X POST test-sync-bug-dynatrace.apps.aap-dt.ocp4.testing.ansible.com -d '{}'
注意您不需要端口,因为它在 Route (targetPort) 上指定。
6.7. 使用 Kubernetes 测试
使用 Kubernetes,您可以创建 Ingress,或公开端口,但不能用于生产环境。
流程
运行以下命令,为给定服务公开集群中的端口:
kubectl port-forward svc/<ACTIVATION_SVC_NAME> 5000:5000
对
localhost:5000
发出 HTTP 请求,以触发规则手册:curl -H "Content-Type: application/json" -X POST test-sync-bug-dynatrace.apps.aap-dt.ocp4.testing.ansible.com -d '{}'
第 7 章 规则审计
规则审计允许审计由某个时间点激活的所有规则触发的规则。
Rule Audit 列表视图显示每个事件与规则规则内的条件匹配时的列表,并触发一个操作。列表中显示您的规则规则,每个标题都与已执行的规则匹配。
7.1. 查看规则审计详情
从 Rule Audit 列表视图中,您可以检查触发特定操作的事件。

流程
- 在导航面板中,选择 。
- 选择所需的规则,这将进入 Details 选项卡。
在这里,您可以在创建时查看它,上次触发时,以及它对应的规则手册激活。
7.2. 查看规则审计事件
流程
- 在导航面板中,选择 。
- 选择所需的规则,这将进入 Details 选项卡。要查看触发某个操作的所有事件,请选择 Events 选项卡。这表明您触发了操作的事件。
- 选择一个事件来查看 事件日志,以及 Source type 和 Timestamp。

7.3. 查看规则审计操作
流程
- 在导航面板中,选择 。
- 选择所需的规则,这将进入 Actions 选项卡。
您可以在此处查看已执行的操作。有些操作链接到自动化控制器,您可以在其中查看输出。
第 8 章 Event-Driven Ansible 控制器的性能调整
事件驱动 Ansible 是一个高度可扩展的、灵活的自动化功能。Event-Driven Ansible 控制器提供 Event-Driven Ansible 自动化执行的接口。通过调优您的事件驱动 Ansible 控制器,以优化性能和可伸缩性:
- 特征您的工作负载
- 系统级别监控
- 性能故障排除
8.1. 特征您的工作负载
在 Event-Driven Ansible 控制器中,您的工作负载包括正在接收的规则手册激活和事件的数量。请考虑以下因素来特征您的 Event-Driven Ansible 控制器工作负载:
- 同步规则手册激活数量
- Event-Driven Ansible 控制器收到的事件数
8.1.1. 修改同时规则手册激活的数量
默认情况下,Event-Driven Ansible 控制器允许同时运行 12 个规则手册激活。如果创建超过 12 个规则手册激活,则预期的行为是后续规则手册激活等待等待,直到有可用的规则手册激活 worker。在这种情况下,规则手册激活状态将显示为"pending",即使您的 Event-Driven Ansible 控制器实例上有足够的可用内存和 CPU。要更改此行为,您必须更改运行规则手册激活的默认最大数量。
注意: EDA_MAX_RUNNING_ACTIVATIONS
的值不会随着实例大小的变化而改变,因此需要手动调整。
8.1.1.1. 在 Event-Driven Ansible 控制器安装过程中修改同时规则手册激活的数量
默认情况下,Event-Driven Ansible 控制器允许同时运行 12 个激活。您可以按照以下流程在安装过程中修改此默认值:
流程
为虚拟机安装程序提供变量:
- 导航到设置清单文件。
-
在 [all:vars] 部分添加
automationedacontroller_max_running_activations
。例如:automationedacontroller_max_running_activations=16
。 - 运行设置。
8.1.1.2. 在 Event-Driven Ansible 控制器安装后修改同时规则手册激活的数量
默认情况下,Event-Driven Ansible 控制器允许同时运行 12 个激活。您可以按照以下流程在安装后修改此默认值:
流程
-
导航到
/etc/ansible-automation-platform/eda
中的环境文件。 -
选择您需要的最大运行激活数。例如,
EDA_MAX_RUNNING_ACTIVATIONS = 16
-
使用以下命令重启 EDA 服务:
systemctl restart automation-eda-controller.target
Resources
有关规则手册激活的更多信息,请参阅 规则手册激活。
8.1.2. 修改每个规则手册激活的默认内存限值
内存用量基于 Event-Driven Ansible 控制器必须处理的事件数。每个规则手册激活容器都有 200MB 内存限制。例如,如果有 4 个 CPU 和 16GB RAM,一个分配了 200MB 内存限值的 rulebook 激活容器每分钟无法处理超过 150,000 个事件。如果并行运行规则手册激活的数量较高,则每个规则手册激活的最大事件数可以减少。如果速度非常高,则容器可能会耗尽处理事件的内存。这将终止容器,您的规则手册激活将失败,状态码为 137。
要解决这个问题,您可以增加分配给规则手册激活的内存量,以便使用以下方法之一处理大量事件:
- 在安装过程中修改每个规则手册激活的默认内存限值
- 安装后修改每个规则手册激活的默认内存限值
8.1.2.1. 在安装过程中修改每个规则手册激活的默认内存限值
默认情况下,每个规则手册激活容器都有 200MB 内存限制。您可以按照以下流程在安装过程中修改此默认值:
流程
- 导航到设置清单文件。
-
在 [all:vars] 部分添加
automationedacontroller_podman_mem_limit
。例如,Automationedacontroller_podman_mem_limit='400m'
。 - 运行设置。
8.1.2.2. 安装后修改每个规则手册激活的默认内存限值
默认情况下,每个规则手册激活容器都有 200MB 内存限制。您可以按照以下流程在安装后修改此默认值:
流程
-
导航到
/etc/ansible-automation-platform/eda
中的环境文件。 -
修改默认容器内存限值。例如,
EDA_PODMAN_MEM_LIMIT = '300m'
。 -
使用
systemctl restart automation-eda-controller.target
重启 Event-Driven Ansible 控制器服务。
8.2. Event-Driven Ansible 控制器的系统级别监控
在对工作负载进行定定,以确定您并行运行多少规则手册激活以及您在任意给定点接收的事件数量后,您必须考虑在系统级别监控事件-Driven Ansible 控制器主机。使用系统级监控来查看有关事件驱动 Ansible 的性能的信息,有助于诊断问题或在考虑未来增长容量时提供相应的容量。
系统级监控包括以下信息:
- 磁盘 I/O
- RAM 使用率
- CPU 使用率
- 网络流量
更高的 CPU、RAM 或磁盘利用率可能会影响 Event-Driven Ansible 控制器的整体性能。例如,任何这些系统资源的高利用率表示 Event-Driven Ansible 控制器运行太多规则手册激活,或者一些单独的规则手册激活正在使用大量资源。在这种情况下,您必须提高系统级资源来支持您的工作负载。
8.3. 对 Event-Driven Ansible 控制器的性能故障排除
根据 Event-Driven Ansible 控制器中的默认参数,您可能会遇到完成工作负载面临的挑战。下面的部分提供了这些场景和故障排除指南的描述。
我激活状态显示为"运行",但不处理事件。
- 确保您在 rulebook 激活中使用正确的事件源。如果您期望的事件来自规则手册之外的源,Event-Driven Ansible 控制器不会处理该事件。
我激活状态显示为"运行",Event-Driven Ansible 控制器也收到事件,但不会发生任何操作。
- 确保您设置了与事件匹配的正确条件,并在规则手册激活中执行操作。
我的激活会在无限循环中保持重启。
默认情况下,规则手册激活的重置策略被设置为 "on failure"。使用以下步骤更改 estart 策略:
- 导航到 Rulebook Activation 屏幕。
- 点 Restart Policy 下拉菜单。
- 选择适当的值:"On Failure", "Always", "Never"。