简介

什么是事件驱动的 Ansible (Event-Driven Ansible)?

事件驱动的 Ansible 是一种增强和扩展自动化能力的新方式。它在提高 IT 速度和敏捷性的同时,确保了的一致性和韧性。事件驱动的 Ansible 技术由 Red Hat 开发,目前以开发者预览版的形式提供。社区的反馈至关重要。由于我们正在构建一个旨在最佳满足您需求的解决方案,因此我们为您提供了为其需求发声的机会。

事件驱动的 Ansible 旨在实现简单性和灵活性。通过编写 Ansible Rulebook(类似于 Ansible Playbooks,但更倾向于“如果-那么”场景)并允许事件驱动的 Ansible 订阅事件监听源,您的团队可以更快速、更轻松地在整个组织中自动化各种任务。EDA 提供了一种将运维逻辑代码化的方法。

为什么需要事件驱动?

自动化使我们能够赋予系统和技术速度与敏捷性,同时最大限度地减少人为错误。然而,在面对故障工单和问题时,我们通常仍依赖传统的、且往往是手动的方法进行故障排除和信息收集。这在本质上降低了效率并中断了业务。我们需要收集信息,尝试常规的排障步骤,并与不同的团队进行确认。

事件驱动的 Ansible 的一个应用场景就是将这些运维知识代码化,以便近乎实时地修复技术问题,或者至少在支持团队处理其他问题时,触发故障排除和信息收集,从而尝试寻找停机的根本原因。

事件驱动的 Ansible 有潜力改变我们响应问题的方式,并开启许多新的自动化可能性。

它为更快速的问题解决和对环境更强大的自动化观测提供了可能。

为什么需要 Rulebooks?

事件驱动的 Ansible 包含一个使用 Drools 构建的决策框架。我们需要一个 rulebook 来告诉系统需要标记哪些事件以及如何响应这些事件。这些 rulebooks 同样使用 YAML 创建,且使用方式与传统的 Ansible Playbooks 类似,因此更容易理解并构建所需的 rulebooks。Playbooks 和 rulebooks 之间的一个关键区别是,rulebook 需要“如果-这样-那么-那样”的编码,以使事件驱动的自动化方法生效。

一个 rulebook 由三个主要组件组成:

  • Sources(源) 定义我们将使用哪个事件源。这些源来自为适配常见用例而构建的源插件。随着时间的推移,将有越来越多的源可用。目前已有一些可用的源插件,包括:webhooks、Kafka、Azure service bus、文件更改和 alertmanager。

  • Rules(规则) 定义我们要尝试从事件源中匹配的条件。如果满足条件,则可以触发一个动作。

  • Actions(动作) 触发在满足条件时需要发生的操作。目前的一些动作包括:run_playbook, run_module, set_fact, post_event, debug。

总结如下:

事件由规则引擎处理

  • 规则基于条件触发,动作由规则引擎执行

  • 规则被组织在 Ansible Rulebooks 中

  • Ansible 规则可应用于发生在特定主机或组上的事件

对事件执行动作的条件化管理

  • 逻辑条件采用简单的 YAML 结构

  • 事件可以触发不同类型的动作

  • 运行 Ansible Playbooks

  • 直接运行模块 (Modules)

  • 向事件处理器发送新事件

类 YAML 格式的熟悉感

  • 当前的 Ansible 用户可以快速学习并开始编写 Rulebook

入门指南

请参阅 入门指南

其他资源

无论您是刚开始自动化之旅还是资深专家,都有各种资源可以增强您的自动化知识