跳转到主要内容

Ansible的事件驱动自动化

项目描述

ansible-events

https://img.shields.io/pypi/v/ansible_events.svg https://img.shields.io/travis/benthomasson/ansible_events.svg Documentation Status

Ansible的事件驱动自动化。

现实世界充满了事件,这些事件会改变我们的软件和系统的状态。我们的自动化需要能够对这些事件做出反应。Ansible-events是一个命令行工具,允许您识别您关心的哪些事件,并通过运行playbook或其他操作来相应地做出反应。

让我们从一个简单的hello world示例开始,以便熟悉这些概念

---
- name: Hello Events
  hosts: localhost
  sources:
    - benthomasson.eda.range:
        limit: 5
  rules:
    - name: Say Hello
      condition: event.i == 1
      action:
        run_playbook:
          name: benthomasson.eda.hello
...

事件来自一个 事件源,然后与 规则 进行比较,以确定是否应该采取 行动。如果规则的 条件 与事件匹配,它将运行该规则的行动。

在这个示例中,事件源是Python的range函数。它产生从 i=0i<limit> 的计数事件。

i 等于1时,Say Hello 规则的条件匹配,并运行playbook。

通常,事件会来自监控和警报系统或其他软件。以下是一个更完整的示例,它接受来自Alertmanager的警报

---
- name: Automatic Remediation of a webserver
  hosts: all
  sources:
    - name: listen for alerts
      benthomasson.eda.alertmanager:
        host: 0.0.0.0
        port: 8000
  rules:
    - name: restart web server
      condition: event.alert.labels.job == "fastapi" and event.alert.status == "firing"
      action:
        run_playbook:
          name: benthomasson.eda.start_app
...

本示例设置了一个webhook,用于接收alertmanager的事件,然后匹配状态为< cite >firing的< cite >fastapi作业警报的事件。这将运行一个修复问题的playbook。

功能

  • 根据匹配事件流中的事件的条件启动playbook。

示例

规则使用类似于ansible-playbooks的语法组织到规则集中。

---
- name: Hello Events
  hosts: localhost
  sources:
    - benthomasson.eda.range:
        limit: 5
  rules:
    - name: Say Hello
      condition: event.i == 1
      action:
        run_playbook:
          name: benthomasson.eda.hello
...

每个规则集定义:传递给playbook的主机集、事件源集和规则集。主机集是来自ansible playbooks的正常主机模式。事件源是一种新的插件类型,它订阅事件流中的事件。规则具有匹配事件中值的条件以及可以运行playbook、断言事实、撤回事实并将信息打印到控制台的操作。

让我们更详细地看看事件源

- benthomasson.eda.range:
    limit: 5

本节YAML定义了一个事件源插件,来自benthomasson.eda,应加载并传递参数:limit=5。该源将生成从0到4的数字范围,然后退出。

规则YAML结构如下所示

- name: Say Hello
  condition: event.i == 1
  action:
    run_playbook:
      name: benthomasson.eda.hello

此YAML块定义了一个名为“Say Hello”的规则,当事件具有值“i”等于1时匹配条件,并运行benthomasson.eda集合中的playbook的操作。

如何安装

通过PyPi

pip install ansible-events

通过Docker

docker build -t ansible-events .

用法

ansible-events --help

鸣谢

本包是用Cookiecutteraudreyr/cookiecutter-pypackage项目模板创建的。

历史

0.1.0 (2022-02-16)

  • 首次发布于PyPI。

项目详情


下载文件

下载适用于您的平台文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

ansible_events-0.7.0.tar.gz (96.6 KB 查看哈希

上传时间:

构建分布

ansible_events-0.7.0-py3-none-any.whl (27.2 KB 查看哈希

上传时间: Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面