Ansible的事件驱动自动化
项目描述
ansible-events
自由软件:Apache软件许可证2.0
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=0 到 i<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>的< cite >fastapi cite>作业警报的事件。这将运行一个修复问题的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
鸣谢
本包是用Cookiecutter和audreyr/cookiecutter-pypackage项目模板创建的。
历史
0.1.0 (2022-02-16)
首次发布于PyPI。
项目详情
下载文件
下载适用于您的平台文件。如果您不确定选择哪个,请了解有关安装包的更多信息。