Event-Driven Ansible 控制器用户指南

Red Hat Ansible Automation Platform 2.4

了解如何配置和使用 Event-Driven Ansible 控制器增强和扩展自动化

Red Hat Customer Content Services

摘要

本指南帮助您配置 Event-Driven Ansible 控制器,以设置新项目、决策环境、令牌以向 Ansible Automation Platform Controller 进行身份验证,以及规则手册激活。

前言

Event-Driven Ansible 控制器是一种新方法,通过提高 IT 速度和灵活性来增强和扩展自动化,同时实现一致性和弹性。它由红帽开发,用于提供简化和灵活性。

使开源包含更多

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息

对红帽文档提供反馈

我们非常感谢您对我们的技术内容提供反馈,并鼓励您告诉我们您的想法。如果您想添加评论,提供见解、纠正拼写错误甚至询问问题,您可以在文档中直接这样做。

注意

您必须有一个红帽帐户并登录到客户门户网站。

要从客户门户网站提交文档反馈,请执行以下操作:

  1. 选择 Multi-page HTML 格式。
  2. 点文档右上角的 反馈 按钮。
  3. 突出显示您要提供反馈的文本部分。
  4. 点高亮文本旁的添加反馈对话框。
  5. 在页面右侧的文本框中输入您的反馈,然后点 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 集成的规则手册。

流程

  1. 登录 Event-Driven Ansible 控制器仪表板。
  2. 在导航面板中,选择 ProjectsCreate project
  3. 插入以下内容:

    名称
    输入项目名称。
    描述
    此字段是可选的。
    SCM 类型
    Git 是可供使用的 SCM 类型。
    SCM URL

    HTTP[S] 存储库的协议地址,如 GitHub 或 GitLab。

    注意

    您无法在创建项目后编辑 SCM URL。

    凭证
    此字段是可选的。这是利用 SCM URL 所需的令牌。
  4. 选择 Create project

您的项目现已创建,可以在 Projects 屏幕中进行管理。

保存新项目后,会显示项目的详情页面。在有 或项目 列表视图中,您可以编辑或删除它。

2.2. 项目列表视图

Projects 页面中,您可以查看您创建的项目以及 StatusGit 哈希

注意

如果源控制中的规则手册更改,您可以通过从 Projects 列表视图中选择项目旁边的同步图标来重新同步项目。Git 哈希 更新代表该存储库的最新提交。如果要使用更新的项目,则必须重启或重新创建激活。

2.3. 编辑项目

流程

  1. Projects 列表视图中,选择所需项目 旁边的 More Actions 图标。
  2. 选择 Edit project
  3. 输入所需的更改,然后选择 Save project
编辑项目

2.4. 删除项目

流程

  1. Projects 列表视图中,选择所需项目 旁边的 More Actions 图标。
  2. 选择 Delete project
  3. 在弹出窗口中,选择 Yes,我确认我要删除此项目
  4. 选择 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 提供的镜像不受支持

流程

  1. 进入到 Event-Driven Ansible 控制器仪表板。
  2. 从导航面板中,选择 Decision EnvironmentsCreate decision environment
  3. 插入以下内容:

    名称
    插入名称。
    描述
    此字段是可选的。
    Image
    这是完整的镜像位置,包括容器 registry表、镜像名称和版本标签。
    凭证
    此字段是可选的。这是利用决策环境镜像所需的令牌。
  4. 选择 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 控制器仪表板,或者作为机构中的用户添加。

流程

  1. 进入到 Event-Driven Ansible 控制器仪表板。
  2. 在顶部导航面板中选择您的个人资料。
  3. 进入用户详情
  4. 选择 Controller TokensCreate controller 令牌
  5. 插入以下内容:

    名称
    插入名称。
    描述
    此字段是可选的。
    令牌

    在自动化控制器中创建令牌。有关创建令牌的更多信息,请参阅自动化控制器用户指南中的用户 - 令牌部分。

    注意

    令牌必须为写范围。

  6. 选择 Create controller token

保存新令牌后,您将进入 Controller Tokens 选项卡,您可以在其中删除令牌。

第 5 章 规则手册激活

规则手册激活是由执行特定规则手册的决策环境定义的后台运行的进程。

5.1. 设置规则手册激活

先决条件

  • 您已作为 Content Consumer 登录到 Event-Driven Ansible controller Dashboard。
  • 您已设置了一个项目。
  • 您已设置了决策环境。
  • 您已设置了自动化控制器令牌。

流程

  1. 进入到 Event-Driven Ansible 控制器仪表板。
  2. 在导航面板中,选择 Rulebook ActivationsCreate rulebook activation
  3. 插入以下内容:

    名称
    插入名称。
    描述
    此字段是可选的。
    项目
    项目是规则手册的逻辑集合。
    规则手册
    规则手册将根据所选的项目显示。
    决策环境
    决策环境是一个容器镜像,用于运行 Ansible 规则手册。
    重启策略

    这是一个策略,用于决定何时重启规则手册。

    • 策略:

      1. Always :当规则手册完成时重启
      2. Never :在规则手册完成后重启一个规则手册
      3. On failure:只在失败时重启
    启用规则手册激活?
    这会自动启用规则手册激活来运行。
    变量
    规则手册的变量采用 JSON/YAML 格式。内容等同于通过 ansible-rulebook 命令的 --vars 标志传递的文件。
  4. 选择 Create rulebook 激活

您的规则手册激活现已创建,可以在 Rulebook Activations 屏幕中进行管理。

保存新的规则手册激活后,会显示规则手册激活的详细信息页面。您可以从那里或 Rulebook Activations 列表视图中编辑或删除它。

5.2. 规则手册激活列表视图

Rulebook Activations 页面上,您可以查看您创建的规则手册激活以及激活状态、与规则手册 关联的规则数量Fire countRestart 计数

如果 Activation StatusRunning,这表示规则手册激活在后台运行,并根据规则在规则手册中声明的规则执行必要的操作。

您可以从 Rulebook Activations 列表视图中选择激活来查看更多详情。

rulebook activation][width=25px

对于已运行的所有激活,您可以查看 DetailsHistory 选项卡,以获取有关发生情况的更多信息。

5.2.1. 查看激活输出

您可以在 History 选项卡中查看激活的输出。

流程

  1. 选择 History 选项卡来访问所有激活实例的列表。激活实例代表激活的单个执行。
  2. 然后,在问题中选择激活实例,这会显示由该特定执行生成的输出。
规则手册激活历史记录

要查看处于和触发某个操作的事件,您可以使用 Event-Driven Ansible 控制器仪表板中的 Rule Audit 部分。

5.3. 启用和禁用规则手册激活

  1. 选择行级的切换,以启用或禁用您选择的规则手册。
  2. 在弹出窗口中,选择 Yes, I confirm that I want to enable/disable these X rulebook activations
  3. 选择 Enable/Disable rulebook activation

5.4. 重启规则手册激活

注意

如果当前启用并且重启策略在创建时被设置为 Always,您只能重新启动一个规则手册激活。

  1. 选择 Rulebook Activation enabled/disabled 切换旁边的 More Actions 图标。
  2. 选择 Restart rulebook 激活
  3. 在弹出窗口中,选择 Yes, I confirm that I want to restart these X rulebook activations
  4. 选择 Restart rulebook 激活

5.5. 删除规则手册激活

  1. 选择 Rulebook Activation enabled/disabled 切换旁边的 More Actions 图标。
  2. 选择 Create rulebook 激活
  3. 在弹出窗口中,选择 Yes, I confirm that I want to delete these X rulebook activations
  4. 选择 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

流程

  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
  2. 在创建路由时,使用 到 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,或公开端口,但不能用于生产环境。

流程

  1. 运行以下命令,为给定服务公开集群中的端口:

    kubectl port-forward svc/<ACTIVATION_SVC_NAME> 5000:5000
  2. 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 列表视图中,您可以检查触发特定操作的事件。

规则审计列表视图

流程

  1. 在导航面板中,选择 Rule Audit
  2. 选择所需的规则,这将进入 Details 选项卡。

在这里,您可以在创建时查看它,上次触发时,以及它对应的规则手册激活。

6.2. 查看规则审计事件

流程

  1. 在导航面板中,选择 Rule Audit
  2. 选择所需的规则,这将进入 Details 选项卡。要查看触发某个操作的所有事件,请选择 Events 选项卡。这表明您触发了操作的事件。
  3. 选择一个事件来查看 事件日志,以及 Source typeTimestamp
事件详情

6.3. 查看规则审计操作

流程

  1. 在导航面板中,选择 Rule Audit
  2. 选择所需的规则,这将进入 Actions 选项卡。

您可以在此处查看已执行的操作。有些操作链接到自动化控制器,您可以在其中查看输出。

法律通告

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.