我们希望听到你的声音!帮助我们深入了解 Ansible 生态系统的现状。
参加 2024 年 Ansible 项目调查

使用过滤器进行 Ansible 数据操作

今年的峰会上,一位与会者提出了一个关于如何在 Ansible 中使用设置事实和更改数据的问题。很多时候,我们遇到过使用一个接一个的任务来操作数据的人,将项目转换为列表,过滤选项,尝试进行大量数据操作,并将数据从一个来源转换为另一个来源。尝试使用角色和剧本中的 YAML 和 Jinja 混合来进行这些编程更改本身就是一件头疼的事情。虽然这些选项中的许多都可行,但它们效率不高,也不易于实施。Ansible 剧本从未打算用于编程。

通常被忽视的一种解决方案是在模块或过滤器内部使用 Python 进行操作。本文将详细介绍如何创建过滤器来操作数据。此外,本文中引用的所有代码的存储库已经创建。

此示例最初是作为模块开发的。但是,经过审查,我们确定这些数据转换最好作为过滤器进行。过滤器可以接收多个数据输入,执行编程操作,然后可以在作为输入使用的地方内联使用或设置为事实。此外,这在本地运行,而不是在主机级别运行,因此它可以更快,避免不必要的连接。

起点

首先,我们需要一个数据集来进行处理。为此,我们使用了来自自动化控制器 API 的数据,即工作流;它提供了关于每个工作流中的节点的嵌套数据以进行循环。在这种情况下使用的变量文件可以在仓库中找到

目标是找出自动化控制器循环遍历嵌套列表时正在使用什么。虽然这不是一个非常实用的例子,但它确实为创建过滤器来操作任何数据集提供了一个起点。

过滤器基础知识

此过滤器的骨架取自ansible.netcommon.pop_ace。每个过滤器的开头都有一些必需的选项,例如 FilterModule,此外,AnsibleFilterError 有助于进行故障排除。

from ansible.errors import AnsibleFilterError

类调用将代码设置为过滤器,并调用用于过滤器的函数。这设置了在剧本中称为“used”的过滤器,以及要调用的函数。请注意,函数和过滤器名称不需要匹配。

class FilterModule(object):
    def filters(self):
        return {"example_filter": self.workflow_manip}

然后是文档部分:这可以包含输入、示例和其他元数据。这也是 ansible-docs 的填充方式。

EXAMPLES = r"""
    - name: Transform Data
        ansible.builtin.set_fact:
        data_out: "{{ workflow_job_templates | example_filter }}"
    """

在大多数情况下,这应该是标准信息。虽然文档字段对于过滤器不是必需的,但最好将其包含在内。虽然此处未显示,但链接的示例还包含已注释的预期输出,这对于将来回溯和进行故障排除非常有用。

设置

第一步是设置传入数据的过滤器参数。在我们的例子中,变量 data_in,以及输入的类型为字典。最好在此处将返回值设置为为空,以及需要定义的其他默认值。

def example_filter(self, data_in: dict):
        workflow_data = {}
        workflow_data["workflows"] = []
        workflow_data["job_templates"] = []
        workflow_data["inventory_sources"] = []
        workflow_data["approval_nodes"] = []

下一步是进行实际的数据操作。

深入其中

这里是我们真正想要做的事情,从源获取数据,对其进行循环,并提取所需的数据。由于数据包含在嵌套列表中,因此存在内外循环要遍历。

for workflow in data_in:
        workflow_data["workflows"].append(workflow["name"])
        for node in workflow["related"]["workflow_nodes"]:
            if node["unified_job_template"]["type"] == "inventory_source":
                workflow_data["inventory_sources"].append(
                        node["unified_job_template"]["name"]
                )
            elif node["unified_job_template"]["type"] == "job_template":
                workflow_data["job_templates"].append(
                    node["unified_job_template"]["name"]
                )
            elif node["unified_job_template"]["type"] == "workflow_approval":
                workflow_data["approval_nodes"].append(
                    node["unified_job_template"]["name"]
                )
            else:
                raise AnsibleFilterError(
                    "Failed to find valid node: {0}".format(workflow)
                )

第一个循环是找到工作流名称字段并将其追加到工作流列表中。下一个循环遍历每个工作流节点,找到它的类型,并将其追加到相应的列表中。

最后是错误消息,对于有效数据,不应出现此消息,但是当构建或调试模块时,将它插入其他地方是一个有用的代码段,以强制输出到控制台,以便找出发生了什么。在我们的操作结束时,使用结果变量返回。另一种方法是三个任务,其中两个将使用循环,以实现相同的结果。通过使用实际的编程语言、它可用的库和内嵌循环,它简化了剧本,并提供了比单独使用 YAML 和 Jinja2 可以拼凑出来的更好的逻辑。

总结

希望本文能为创建过滤器和简化剧本中的任务提供一个起点。就像 Ansible 中的一切一样,没有单一的解决方案,而是 10 个选项可供选择。并非所有解决方案都适合当前情况。希望这能提供另一个更好的选项来使用。




欢迎使用与 IBM Watson Code Assistant 技术预览版结合的 Ansible Lightspeed

欢迎使用与 IBM Watson Code Assistant 技术预览版结合的 Ansible Lightspeed

在 2023 年的 Red Hat 峰会和 AnsibleFest 上,我们宣布了 Ansible Lightspeed 与 IBM Watson Code Assistant,这是一种针对 Ansible 自动化的全新生成式 AI 服务。今天,我们很高兴地宣布 Ansible Lightspeed 技术预览版的推出。

在本篇博文中,我们将逐步介绍如何访问与 IBM Watson Code Assistant 技术预览版服务结合的 Ansible Lightspeed,并在您的 Visual Studio Code 环境中将其启动并运行。然后,我们将分享有关您可以在体验中期待什么以及如何使用生成式 AI 生成您的第一个 Ansible 任务的更多信息。

这是一件激动人心的事情,所以让我们直接进入主题。

技术预览版:使用 AI 赋能 Ansible 用户

与 IBM Watson Code Assistant 结合的 Ansible Lightspeed 是一种专门构建的生成式 AI 工具,旨在简化 Ansible 内容的创建。此功能通过Ansible VS Code 扩展原生集成到您的 VS Code 编辑器中。AI 功能由 Watson Code Assistant 提供支持,Watson Code Assistant 是一种经过 Ansible Galaxy、GitHub 和其他开源数据训练的基础模型。

技术预览版对所有 Ansible 用户开放,免费提供。随着越来越多的用户使用 Ansible Lightspeed,模型推荐将不断改进,这得益于社区的宝贵输入和参与。

建立连接:安装和配置

您需要在您的工作站上安装Visual Studio Code和 Ansible,还需要一个 GitHub 帐户才能访问 Ansible Lightspeed 服务。让我们开始吧!

  • 从 Visual Studio Code 市场安装Ansible VS Code 扩展,方法是搜索“ansible”,然后选择 Red Hat 发布的扩展。
  • 通过访问齿轮图标中的“扩展设置”在扩展中启用 Ansible Lightspeed 服务。
  • 在设置中,启用“Ansible Lightspeed 已启用”和“启用 Ansible Lightspeed 与 Watson Code Assistant 行内建议”这两个复选框。

注意:您可以根据自己的喜好,在“[用户]”或“[工作区]”设置中启用 Ansible Lightspeed。有关 VS Code 用户和工作区设置的更多信息,请参阅其文档

安装 Ansible Visual Studio Code 扩展。 安装 Ansible Visual Studio Code 扩展

  • 单击编辑器左侧 VS Code 活动栏上的 Ansible “A”,打开扩展。
  • 单击“连接”,然后按照提示使用您的凭据登录 GitHub。

使用您的 GitHub 凭据登录。 使用您的 GitHub 凭据登录

  • 阅读 Ansible Lightspeed 技术预览版条款和条件,然后单击“同意”。
  • 接下来,通过单击“授权”为 VS Code 授权 Ansible Lightspeed。
  • 按照浏览器提示将您重定向回 VS Code,最后,在 VS Code 确认对话框中单击“打开”。

授权 Ansible Lightspeed。 授权 Ansible Lightspeed

恭喜!您已成功在 VS Code 中配置 Ansible Lightspeed。

您可以通过检查编辑器窗口底部的 VS Code 状态栏来确认 Ansible Lightspeed 是否已启用。

请确保已选择 Python 环境,并且您的 Ansible YAML 文件与 Ansible 语言相关联。有关 VS Code 语言的更多信息,请参阅其文档

Ansible Lightspeed 状态。 Ansible Lightspeed 状态

快速浏览 Ansible Lightspeed:生成您的第一个任务

现在您已连接到 Ansible Lightspeed,是时候体验其 AI 增强的内容创建体验了。

让我们使用一个 示例 剧本 来演示如何向 Ansible Lightspeed 请求 AI 生成的任务建议,并重点介绍技术预览版的一些预期功能。这个示例剧本在 Red Hat Enterprise Linux 系统上安装了 Cockpit

注意:随着越来越多用户开始使用 Ansible Lightspeed,模型生成的建议的广度、深度和质量将得到提升。因此,以下示例中的 Ansible 任务建议可能与您的结果有所不同。

如何生成 Ansible Lightspeed 建议?

让我们使用 deploy_monitoring.yml 示例剧本中的第一个剧本任务来演示如何向 Ansible Lightspeed 请求 AI 建议。

  • 将光标移动到 "- name: Include redhat.rhel_system_roles.cockpit" 任务描述的末尾。
  • 按下 "ENTER" 生成建议。
  • 按下 "TAB" 接受建议。

正在生成 Ansible 任务。 正在生成 Ansible 任务

在这个建议中,我们要求 Ansible Lightspeed 包含 "cockpit" 角色,该角色是 Red Hat Enterprise Linux 系统角色 认证内容集合的一部分。建议使用了 完全限定的集合名称 (FQCN):ansible.builtin.include_role

使用 FQCN 是一个 推荐的最佳实践,也是我们融入 Ansible Lightspeed 服务中的众多独特后处理功能的示例之一。

让我们继续下一个任务。

Ansible 最佳实践。我们已经为您准备好了。

Ansible Lightspeed 最佳实践示例。 Ansible Lightspeed 最佳实践示例

此剧本任务将 cockpit.conf 复制到目标主机。请注意,建议中包含了 "mode:" 模块参数,并将 Linux 文件权限设置为 0*644*

Ansible Lightspeed 为 ansible.builtin.copy 模块提供了设置文件权限的健壮示例,这是另一个推荐的最佳实践。

随着服务不断成熟,我们将继续扩展这些本地集成的最佳实践。

完成剧本

让我们要求 Ansible Lightspeed 为剩下的两个剧本任务生成建议。第一个任务重启 Cockpit 服务以应用我们自定义的 cockpit.conf 配置文件,第二个任务允许 Cockpit 服务流量通过防火墙。

生成剩余的 Ansible 任务。 生成剩余的 Ansible 任务

带有 Watson Code Assistant 和上下文的 Ansible Lightspeed

生成具有上下文感知能力的准确 Ansible 内容建议可以节省您的时间,并帮助您高效地进行创建。Ansible Lightspeed 的一项强大功能就是上下文。

Ansible Lightspeed 使用 Ansible 任务描述和 YAML 文件内容生成适合您正在自动化的内容的建议。让我们用一个例子来说明这一点。

假设我们想为最后一个 Ansible 任务中的 ansible.posix.firewalld 模块设置模块默认值。具体来说,始终使防火墙规则更改永久生效。我们可以使用 module_defaults 剧本关键字来实现这一点,如下所示。

module_defaults:
  ansible.posix.firewalld:
    permanent: true

Ansible 剧本 module_defaults 部分

module defaults 部分告诉 Ansible 始终将 "permanent: true" 添加到剧本中每个 "ansible.posix.firewall" 任务中。让我们要求 Ansible Lightspeed 提供一个包含模块默认值的更新建议。

Ansible Lightspeed 上下文。 Ansible Lightspeed 上下文

请注意,它使用了完整的剧本上下文,并提供了一个修改后的建议,其中排除了 "permanent: true"。您也可以将其应用于其他剧本关键字,例如 "vars"。

透明度和开放性。Ansible Lightspeed 内容源匹配

最后,但同样重要的是 Ansible Lightspeed 内容源匹配。

Ansible Lightspeed 内容源匹配。 Ansible Lightspeed 内容源匹配

我们透明地分享了用于推荐的训练数据的潜在来源、作者和内容许可证。建立社区信任并支持作者和贡献者之间的关系是 Red Hat 的 DNA 中的一部分。这些建议来自 Ansible 社区;我们不想隐瞒这一点。

总结

恭喜您!您已成功在 VS Code 中配置 Ansible Lightspeed,并通过几个简单的步骤体验了其生成式 AI 功能。

我们鼓励您分享您对技术预览体验的反馈,并通过加入 Ansible Lightspeed Matrix 房间 来关注该项目的最新进展,提出问题并获取最新消息。请访问 Ansible Lightspeed 着陆页。

我们将向您提供新的资源,帮助您充分利用您的 Ansible Lightspeed with Watson Code Assistant 体验。

自动化快乐…借助 AI!




amazon.aws 6.0.0 的云自动化新增功能

amazon.aws 6.0.0 的云自动化新增功能

在 Amazon Web Services (AWS) 基础设施自动化方面,针对 Red Hat Ansible Automation Platform 的认证 amazon.aws 集合的最新版本带来了一系列增强功能,旨在改善整体用户体验,并加快从开发到生产的过程。

本博文将介绍此 Ansible 内容集合 6.0.0 版本中的更改,并重点介绍新功能。我们包含了许多错误修复、功能和代码质量改进,这些改进进一步增强了 amazon.aws 集合。让我们来看看其中的一些吧!

面向未来的更改

新的 boto3/botocore 版本控制

amazon.aws 集合已不再支持 botocore<1.25.0boto3<1.22.0。大多数模块将继续与旧版本的 AWS 软件开发工具包 (SDK) 兼容,但是,不保证与旧版本 AWS SDK 的兼容性,并且不会对其进行测试。使用旧版本 AWS SDK 时,Ansible 将显示警告信息。请查看模块 文档,了解每个模块所需的最低版本。

新的 Python 支持策略

2022 年 7 月 30 日,AWS 宣布 AWS 命令行界面 (AWS CLI) v1 和 AWS SDK for Python (boto3botocore) 将不再支持 Python 3.6。为了继续支持 Red Hat 客户使用安全且可维护的工具,我们将与这些弃用保持一致,并将弃用此集合对 Python 版本 3.7 以下的支持。但是,此集合对 Python 版本 3.7 以下的支持将在 7.0.0 版本中被移除。此外,根据当前可用的 时间表,预计将在 2024 年 12 月 1 日之后的一个版本中移除对 Python 版本 3.8 以下的支持。

已移除的功能

以下功能已从本集合版本中移除。

  • ec2_vpc_endpoint_info - 已移除对查询参数的支持。amazon.aws.ec2_vpc_endpoint_info 模块现在仅查询端点。可以使用 amazon.aws.ec2_vpc_endpoint_service_info 模块查询服务。
  • s3_object - 已移除使用 amazon.aws.s3_object 模块创建和删除 S3 存储桶的支持。可以使用 amazon.aws.s3_bucket 模块创建和删除 S3 存储桶。

已弃用的功能

本集合版本还引入了部分弃用。为了保持集合与 AWS 文档的一致性,已弃用 boto3_profileprofile 选项的别名。请使用 profile

amazon.aws.s3_objectamazon.aws.s3_object_info 模块也经历了一些弃用。

  • 同时传递 dualstackendpoint_url 已被弃用。当传递 endpoint_url 时,dualstack 参数将被忽略。将在 2024 年 12 月 1 日之后的一个版本中移除支持。
  • 传递 overwrite 的值(除 alwaysneverdifferentlast 之外的值)的支持已被弃用。布尔值应替换为字符串 alwaysnever。将在 2024 年 12 月 1 日之后的一个版本中移除支持。

代码质量和 CI 改进

本版本中的一部分工作致力于提高集合代码的质量。我们采用了多种 lint 和格式化工具,以帮助强制执行编码规范和最佳实践,所有代码都遵循相同的风格和标准。lint 工具有助于检测和标记可能不理想的代码,例如未使用的变量或函数、不必要的循环或条件、检测安全漏洞以及其他低效率问题。格式化工具有助于自动格式化和设置代码样式,以确保一致性和可读性。

总的来说,这项代码质量改进计划旨在带来更可靠、更高效和更易于维护的软件,从而提供更好的用户体验,并最终使开发人员和最终用户都受益。此外,许多插件已经过重构(例如,删除重复代码、简化复杂逻辑以及在适当的地方使用设计模式),以使代码更高效和更易于维护。我们还扩展了单元测试的覆盖范围,以确保代码按预期运行。

这项计划并没有止步于此。我们还决定从 Zuul 转移到 GitHub Actions 以进行 CI。这一决定有助于我们简化 CI 管道,因为它与 GitHub 本地集成,并提高了可扩展性、协作、工作流程管理和开发过程的效率。

由于提高代码质量是一个持续的过程,需要不断付出努力和关注,因此这项工作仍在进行中,并将反映在未来的版本中。

重命名

由于命名通常很繁琐,误导性的模块或选项名称可能会使用户体验复杂化。

我们决定在本集合版本中重命名 amazon.aws.aws_secret 查找插件。这一决定是继本集合 5.0.0 版本中开始的重命名计划的后续举措。因此,amazon.aws.aws_secret 模块已重命名为 amazon.aws.secretsmanager_secret

我们还决定将 amazon.aws.aws_ssm 查找插件重命名为 amazon.aws.ssm_parameter

但是,aws_secretaws_ssm 仍然是别名,将来它们将被弃用。

为了使我们的插件和模块保持一致,我们重命名了以下选项

  • aws_profile 重命名为 profile (aws_profile 仍然是别名)
  • aws_access_key 重命名为 access_key (aws_access_key 仍然是别名)
  • aws_secret_key 重命名为 secret_key (aws_secret_key 仍然是别名)
  • aws_security_token 重命名为 security_tokenaws_security_token 仍然作为别名)。

这些更改对模块/插件文档之外的用户应该没有明显的影响。

新模块

此版本带来了许多新的基础支持模块,这些模块实现了 AWS Backup 功能。

AWS Backup 是一款完全托管的备份服务,使您能够集中并自动备份跨 AWS 服务和本地应用程序的数据,无需自定义脚本和手动流程。

使用 AWS Backup,您可以创建备份策略,为您的 AWS 资源定义备份计划和保留期,包括 Amazon EBS 卷、Amazon RDS 数据库、Amazon DynamoDB 表、Amazon EFS 文件系统和 Amazon EC2 实例。

下表重点介绍了这些新的 Red Hat 支持模块涵盖的功能

  • backup_restore_job_info - 获取有关启动以恢复已保存资源的 AWS Backup 恢复作业的详细信息。
  • backup_vault - 管理 AWS Backup 存储库。
  • backup_vault_info - 获取有关 AWS Backup 存储库的详细信息。
  • backup_plan - 管理 AWS Backup 计划。
  • backup_plan_info - 获取有关 AWS Backup 计划的详细信息。
  • backup_selection - 管理 AWS Backup 选择。
  • backup_selection_info - 获取有关 AWS Backup 选择的详细信息。
  • backup_tag - 管理 AWS 备份计划、AWS 备份存储库、AWS 恢复点的标签。
  • backup_tag_info - 列出 AWS Backup 资源上的标签。

使用新的 AWS Backup 支持模块自动备份您的 AWS 资源

在此示例中,我将向您展示如何备份标记为 backup: "daily" 的 RDS 实例。此示例可以扩展到所有当前支持的资源类型(例如,EC2、EFS、EBS、DynamoDB),这些资源类型标记为 backup: "daily"。以下剧本展示了实现此目标所需的步骤

- name: Automated backups of your AWS resources with AWS Backup
  hosts: localhost
  gather_facts: false


  tasks:
  - name: Create a mariadb instance tagged with backup; daily
     amazon.aws.rds_instance:
       id: "demo-backup-rdsinstance"
       state: present
       engine: mariadb
       username: 'test'
       password: 'test12345678'
       db_instance_class: 'db.t3.micro'
       allocated_storage: 20
       deletion_protection: true
       tags:
         backup: "daily"
     register: result


   - name: Create an IAM Role that is needed for AWS Backup
     community.aws.iam_role:
       name: "backup-role"
       assume_role_policy_document: '{{ lookup("file", "backup-policy.json") }}'
       create_instance_profile: no
       description: "Ansible AWS Backup Role"
       managed_policy:
         - "arn:aws:iam::aws:policy/service-role/AWSBackupServiceRolePolicyForBackup"
     register: iam_role


   - name: Create an AWS Backup vault for the plan to target
     # The AWS Backup vault is the data store for the backed up data.
     amazon.aws.backup_vault:
       backup_vault_name: "demo-backup-vault"


   - name: Get detailed information about the AWS Backup vault
     amazon.aws.backup_vault_info:
       backup_vault_names:
         - "demo-backup-vault"
     register: _info


   - name: Tag the AWS backup vault
     amazon.aws.backup_tag:
       resource: "{{ _info.backup_vaults.backup_vault_arn }}"
       tags:
           environment: test


   - name: Create an AWS Backup plan
     # A backup plan tells AWS Backup service to backup resources each day at 5 oclock in the morning. In the backup rules we specify the AWS Backup vault to target for storing recovery points.
     amazon.aws.backup_plan:
       backup_plan_name: "demo-backup-plan"
       rules:
         - rule_name: daily
           target_backup_vault_name: "demo-backup-vault"
           schedule_expression: "cron(0 5 ? * * *)"
           start_window_minutes: 60
           completion_window_minutes: 1440
     register: backup_plan_create_result


   - name: Get detailed information about the AWS Backup plan
     amazon.aws.backup_plan_info:
       backup_plan_names:
         - "demo-backup-plan"
     register: backup_plan_info_result


   - name: Create an AWS Backup selection
     # AWS Backup selection supports tag-based resource selection. This means that resources that should be backed up by the AWS Backup plan needs to be tagged with backup: daily and they are then automatically backed up by AWS Backup.
     amazon.aws.backup_selection:
      selection_name: "demo-backup-selection"
      backup_plan_name: "demo-backup-plan"
      iam_role_arn: "{{ iam_role.iam_role.arn }}"
      list_of_tags:
         - condition_type: "STRINGEQUALS"
           condition_key: "backup"
           condition_value: "daily"
     register: backup_selection_create_result


   - name: Get detailed information about the AWS Backup selection
     amazon.aws.backup_selection_info:
       backup_plan_name: "demo-backup-plan"

此剧本执行完成后,AWS Backup 将开始创建标记为 backup=daily 的资源的每日备份。您可以在 AWS 控制台中监控备份服务演示的状态。如果我们转到作业,我们会看到一些已经完成的备份作业。备份作业是 AWS Backup 计划规则和资源选择的結果。它将尝试在备份计划规则中定义的时间窗口内备份选定的资源。

screenshot

如果我们看一下我们创建的 AWS Backup 存储库,您会看到它包含 RDS 实例的恢复点。恢复点是快照或时间点恢复备份。恢复点中的数据不能编辑。如果备份存储库允许,可以更改标签和保留期。您可以使用恢复点恢复数据。

screenshot

AWS Backup 恢复作业用于从使用 AWS Backup 服务进行的备份中恢复数据。此版本不包含允许您创建 AWS 备份恢复作业的模块,但我们计划在将来包含此功能。但是,在此版本中,我们包含了 amazon.aws.backup_restore_job_info 模块来获取有关恢复作业的信息。

- name: Get detailed information about the AWS Backup restore job
  amazon.aws.backup_restore_job_info:
    restore_job_id: "{{ restore_job_id }}"



事件驱动的 Ansible 来了

您可能还记得,我们在去年秋天的 AnsibleFest 上推出了开发预览版的事件驱动的 Ansible。从那时起,社区、Red Hat 开发团队、客户以及最重要的 Red Hat 合作伙伴一直在共同努力。今天,我们很高兴地宣布 事件驱动的 Ansible 将结束其开发预览阶段,并将作为 Red Hat Ansible Automation Platform 2.4 的一部分正式发布。

如果您不熟悉事件驱动的 Ansible,请查看我去年秋季撰写的开发预览博客 以了解基础知识,您可能还会对这个关于 Ansible 规则手册的视频 感兴趣,以及此播放列表中的其他视频。

使用事件驱动的 Ansible 转变您的工作

对于许多 IT 团队来说,要做的工作太多,而完成所有工作的时间却不够。事件驱动的 Ansible 可以帮助您的团队更聪明地工作,而不是更努力地工作。您多久会执行一次阻碍关键优先事项的例行任务?您多久需要“放下所有事情”来响应工单丰富请求或处理用户管理问题?您是否不得不半夜醒来修复问题?您多久会调整应用程序和基础技术以支持波动的负载?

您会很高兴知道有一种更好的方法,那就是事件驱动的自动化。许多重复的运营逻辑和流程可以通过将它们捕获在 Ansible 规则手册中来自动化,包括问题修复、服务工单的收集事实、用户管理任务等等。但是什么是 Ansible 规则手册?基于 YAML,它们是事件驱动的 Ansible 的基础,包含条件“如果这样,那么那样”逻辑。

事件驱动的 Ansible 还可与可伸缩性逻辑一起使用,或使用规则手册对可伸缩性操作进行编码,以实现快速且无缝的响应,例如在应用程序或工作负载需要时添加容量或调整缓冲池大小,或在满足特定条件时扩展混合云解决方案等等。

事件驱动的自动化模式可以更快地对重复事件采取行动,并且还提供了一种简单的方法来分发运营或可伸缩性知识,使其成为易于阅读和验证的结构。事件驱动的 Ansible 足够易于使用,可以由 IT 领域专家解决跨基础设施、网络、安全、云等各种用例的各种需求。

当您的组织采用事件驱动的自动化技术时,您的整个团队都可以以一致且准确的方式执行。您将获得更高水平的效率,并能够更好地专注于使您的业务具有竞争优势的创新。

新功能和增强功能

作为此版本的一部分,您对事件驱动的 Ansible 有哪些期待?添加了几个新组件和功能。其中包括

  • 事件驱动的 Ansible 控制器,它支持多个规则手册的编排,并提供一个单一界面来管理和审核所有事件源的所有响应。这些事件源通常是第三方监控和可观察性工具,但可以是提供有关您的 IT 环境的智能的任何来源。

  • 与 Ansible Automation Platform 中的自动化控制器集成,使您可以调用已使用 run_job_template 操作构建的现有工作流,从而将现有可信自动化扩展到事件驱动的自动化场景中。这是一种从规则手册中指定操作的可选方法。如果您愿意,也可以在规则手册中调用现有的 Ansible 剧本。

  • 事件节流,使您能够使用使用 once_within

事件驱动的 Ansible 生态系统集成

Ansible 内容集合的生态系统对于事件驱动的 Ansible 非常重要,因为它依赖于来自事件源的不断变化的 IT 条件的智能,例如第三方监控和可观察性工具。Ansible 内容集合是各种资产,可以帮助您快速启动新的自动化项目。在事件驱动的 Ansible 的情况下,这些资产通常是源插件和规则手册,但也可能包括其他类型的有用内容。Red Hat Ansible 认证内容集合由 Red Hat 和/或合作伙伴支持,通常侧重于某种类型的自动化的“操作方法”。Ansible 验证内容更侧重于“做什么”场景,包括最佳实践。

社区和第三方 Red Hat 合作伙伴在事件驱动的 Ansible 生态系统中进行了大量工作,包括新内容。以下是已完成的工作和即将发布的内容的概述

认证和验证内容

正在或将要认证或验证内容的合作伙伴的初始列表包括:Cisco ThousandEyes、CrowdStrike、CyberArk、Dynatrace、F5、IBM、Palo Alto Networks 和 Zabbix,并且还会有更多合作伙伴加入。Red Hat 还开发了关键集成,包括 Apache Kafka、webhook、Red Hat Insights、Red Hat OpenShift、Cisco NX-OS 和模型驱动的遥测、AWS 等等。请参考下图。更多集成即将推出,包括 ServiceNow、Microsoft Azure、Google Cloud Platform 等等。

事件驱动的 Ansible 的认证内容通常是使用 python 编写的认证事件源插件,它将事件源连接到 Ansible 规则手册。事件驱动的 Ansible 的验证内容通常是 Ansible 规则手册,这些规则手册已通过验证,并包含常见用例的最佳实践。

社区和自定义开发的内容

社区和自定义内容可从上游或通过私有客户源获得。社区开发的集成包括 gcp pubsub 和 syslogd 等。

无论您是否拥有自制的监控工具,或者是否需要立即获得特定解决方案,您都可以构建自己的事件驱动的 Ansible 插件。构建插件后,请考虑是否可以将其贡献给 Ansible 社区。

参与事件驱动的 Ansible

准备开始探索事件驱动的 Ansible?您可以通过多种方式做到这一点。访问Red Hat 的事件驱动的 Ansible 页面,您会发现一系列免费的、自定进度的交互式实验室、信息和分析师研究。

您还可以加入一个关于事件驱动的 Ansible 网络研讨会 的入门研讨会,该研讨会将于 2023 年 6 月 20 日举行。

其他资源