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。
项目详情
下载文件
下载适用于您的平台文件。如果您不确定选择哪个,请了解有关安装包的更多信息。