Event-Driven Ansible 控制器用户指南
了解如何配置和使用 Event-Driven Ansible 控制器增强和扩展自动化
摘要
前言
Event-Driven Ansible 控制器是一种新方法,通过提高 IT 速度和灵活性来增强和扩展自动化,同时实现一致性和弹性。它由红帽开发,用于提供简化和灵活性。
使开源包含更多
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息。
对红帽文档提供反馈
我们非常感谢您对我们的技术内容提供反馈,并鼓励您告诉我们您的想法。如果您想添加评论,提供见解、纠正拼写错误甚至询问问题,您可以在文档中直接这样做。
您必须有一个红帽帐户并登录到客户门户网站。
要从客户门户网站提交文档反馈,请执行以下操作:
- 选择 Multi-page HTML 格式。
- 点文档右上角的 反馈 按钮。
- 突出显示您要提供反馈的文本部分。
- 点高亮文本旁的添加反馈对话框。
- 在页面右侧的文本框中输入您的反馈,然后点 Submit。
每次提交反馈时,我们都会自动创建跟踪问题。打开在点 Submit 后显示的链接,并开始监视问题或添加更多注释。
第 1 章 Event-Driven Ansible 控制器概述
Event-Driven Ansible 是一个高度可扩展的、灵活的自动化功能,可用于其他软件厂商的监控工具。这些工具监视 IT 解决方案,识别事件,并自动实施记录的更改或响应规则以处理该事件。
以下流程组成用户配置:
第 2 章 项目
项目是规则手册的逻辑集合。它们必须是 git 存储库,且只支持 http 协议。项目的规则手册必须位于项目根目录下的 /rulebooks 文件夹中,或者位于为 Ansible 集合中的 Event-Driven Ansible 内容定义的路径: /extensions/eda/rulebooks。
2.1. 设置新项目
先决条件
- 您已作为 Content Consumer 登录到 Event-Driven Ansible controller Dashboard。
- 如有必要,您可以设置一个凭证。如需更多信息,请参阅自动化控制器文档中的凭证部分。
- 您有一个现有的存储库,其中包含了与自动化控制器使用的仓库中包含的 playbook 集成的规则手册。
流程
- 登录 Event-Driven Ansible 控制器仪表板。
- 在导航面板中,选择 Projects → Create project。
插入以下内容:
- 名称
- 输入项目名称。
- 描述
- 此字段是可选的。
- SCM 类型
- Git 是可供使用的 SCM 类型。
- SCM URL
HTTP[S] 存储库的协议地址,如 GitHub 或 GitLab。
注意您无法在创建项目后编辑 SCM URL。
- 凭证
- 此字段是可选的。这是利用 SCM URL 所需的令牌。
- 选择 Create project。
您的项目现已创建,可以在 Projects 屏幕中进行管理。
保存新项目后,会显示项目的详情页面。在有 或项目 列表视图中,您可以编辑或删除它。
2.2. 项目列表视图
在 Projects 页面中,您可以查看您创建的项目以及 Status 和 Git 哈希。
如果源控制中的规则手册更改,您可以通过从 Projects 列表视图中选择项目旁边的同步图标来重新同步项目。Git 哈希 更新代表该存储库的最新提交。如果要使用更新的项目,则必须重启或重新创建激活。
2.3. 编辑项目
流程
- 在 Projects 列表视图中,选择所需项目 旁边的 More Actions 图标。
- 选择 Edit project。
- 输入所需的更改,然后选择 Save project。

2.4. 删除项目
流程
- 在 Projects 列表视图中,选择所需项目 旁边的 More Actions 图标。
- 选择 Delete project。
- 在弹出窗口中,选择 Yes,我确认我要删除此项目。
- 选择 Delete project。
第 3 章 决策环境
决策环境是一个容器镜像,用于运行 Ansible 规则手册。它们创建用于通信自动化依赖项的通用语言,并提供构建和分发自动化环境的标准方法。默认决策环境在 Ansible-Rulebook 中找到。
要创建自己的决策环境,请参阅 在 Ansible Automation Platform 中为 Event-Driven Ansible 构建自定义决策环境。
3.1. 设置新的决策环境
以下步骤描述了如何将决策环境导入到您的 Event-Driven Ansible 控制器仪表板中。
先决条件
- 您已作为 Content Consumer 登录到 Event-Driven Ansible controller Dashboard。
- 如有必要,您可以设置一个凭证。如需更多信息,请参阅自动化控制器文档中的凭证部分。
-
您已将决策环境镜像推送到镜像存储库,或者您选择使用 registry.redhat.io 提供的镜像
不受支持。
流程
- 进入到 Event-Driven Ansible 控制器仪表板。
- 从导航面板中,选择 Decision Environments → Create decision environment。
插入以下内容:
- 名称
- 插入名称。
- 描述
- 此字段是可选的。
- Image
- 这是完整的镜像位置,包括容器 registry表、镜像名称和版本标签。
- 凭证
- 此字段是可选的。这是利用决策环境镜像所需的令牌。
- 选择 Create decision environment。
您的决策环境现已创建,可以在决策环境屏幕上进行管理。
保存新的决策环境后,将显示决策环境的详细信息页面。从那里或 Decision Environments 列表视图中,您可以编辑或删除它。
3.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 构建器定义文件的示例,以使用 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第 4 章 设置令牌
自动化控制器必须包含基于带有特定 playbook 的存储库的项目,以便与 Event-Driven Ansible 规则手册一起使用。自动化控制器还必须根据该项目中的 playbook 设置对应的作业模板。
4.1. 设置令牌以向 Ansible Automation Platform Controller 进行身份验证
先决条件
- 您已作为 Content Consumer 登录到 Event-Driven Ansible controller Dashboard。
- 您已创建了用户。
- 您可以登录到 Event-Driven Ansible 控制器仪表板,或者作为机构中的用户添加。
流程
- 进入到 Event-Driven Ansible 控制器仪表板。
- 在顶部导航面板中选择您的个人资料。
- 进入用户详情。
- 选择 Controller Tokens → Create controller 令牌。
插入以下内容:
- 名称
- 插入名称。
- 描述
- 此字段是可选的。
- 令牌
在自动化控制器中创建令牌。有关创建令牌的更多信息,请参阅自动化控制器用户指南中的用户 - 令牌部分。
注意令牌必须为写范围。
- 选择 Create controller token。
保存新令牌后,您将进入 Controller Tokens 选项卡,您可以在其中删除令牌。
第 5 章 规则手册激活
规则手册激活是由执行特定规则手册的决策环境定义的后台运行的进程。
5.1. 设置规则手册激活
先决条件
- 您已作为 Content Consumer 登录到 Event-Driven Ansible controller Dashboard。
- 您已设置了一个项目。
- 您已设置了决策环境。
- 您已设置了自动化控制器令牌。
流程
- 进入到 Event-Driven Ansible 控制器仪表板。
- 在导航面板中,选择 Rulebook Activations → Create rulebook activation。
插入以下内容:
- 名称
- 插入名称。
- 描述
- 此字段是可选的。
- 项目
- 项目是规则手册的逻辑集合。
- 规则手册
- 规则手册将根据所选的项目显示。
- 决策环境
- 决策环境是一个容器镜像,用于运行 Ansible 规则手册。
- 重启策略
这是一个策略,用于决定何时重启规则手册。
策略:
- Always :当规则手册完成时重启
- Never :在规则手册完成后重启一个规则手册
- On failure:只在失败时重启
- 启用规则手册激活?
- 这会自动启用规则手册激活来运行。
- 变量
-
规则手册的变量采用 JSON/YAML 格式。内容等同于通过 ansible-rulebook 命令的
--vars标志传递的文件。
- 选择 Create rulebook 激活。
您的规则手册激活现已创建,可以在 Rulebook Activations 屏幕中进行管理。
保存新的规则手册激活后,会显示规则手册激活的详细信息页面。您可以从那里或 Rulebook Activations 列表视图中编辑或删除它。
5.2. 规则手册激活列表视图
在 Rulebook Activations 页面上,您可以查看您创建的规则手册激活以及激活状态、与规则手册 关联的规则数量、Fire count 和 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 选项卡,以获取有关发生情况的更多信息。
5.2.1. 查看激活输出
您可以在 History 选项卡中查看激活的输出。
流程
- 选择 History 选项卡来访问所有激活实例的列表。激活实例代表激活的单个执行。
- 然后,在问题中选择激活实例,这会显示由该特定执行生成的输出。

要查看处于和触发某个操作的事件,您可以使用 Event-Driven Ansible 控制器仪表板中的 Rule Audit 部分。
5.3. 启用和禁用规则手册激活
- 选择行级的切换,以启用或禁用您选择的规则手册。
- 在弹出窗口中,选择 Yes, I confirm that I want to enable/disable these X rulebook activations。
- 选择 Enable/Disable rulebook activation。
5.4. 重启规则手册激活
如果当前启用并且重启策略在创建时被设置为 Always,您只能重新启动一个规则手册激活。
- 选择 Rulebook Activation enabled/disabled 切换旁边的 More Actions 图标。
- 选择 Restart rulebook 激活。
- 在弹出窗口中,选择 Yes, I confirm that I want to restart these X rulebook activations。
- 选择 Restart rulebook 激活。
5.5. 删除规则手册激活
- 选择 Rulebook Activation enabled/disabled 切换旁边的 More Actions 图标。
- 选择 Create rulebook 激活。
- 在弹出窗口中,选择 Yes, I confirm that I want to delete these X rulebook activations。
- 选择 Delete rulebook 激活。
5.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 spec: host: test-sync-bug-dynatrace.apps.aap-dt.ocp4.testing.ansible.com to: kind: Service name: activation-job-1 weight: 100 port: targetPort: 5000 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) 上指定。
5.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 '{}'
第 6 章 规则审计
规则审计允许审计由某个时间点激活的所有规则触发的规则。
Rule Audit 列表视图显示每个事件与规则规则内的条件匹配时的列表,并触发一个操作。列表中显示您的规则规则,每个标题都与已执行的规则匹配。
6.1. 查看规则审计详情
从 Rule Audit 列表视图中,您可以检查触发特定操作的事件。

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

6.3. 查看规则审计操作
流程
- 在导航面板中,选择 Rule Audit。
- 选择所需的规则,这将进入 Actions 选项卡。
您可以在此处查看已执行的操作。有些操作链接到自动化控制器,您可以在其中查看输出。