ansible - Ansible - 发送成功和失败任务的通知
问题描述
我一直在阅读和测试块模块以进行错误处理,并借助以下问题Ansible: execute task (or handler) if any task failed确实有助于理解案例。现在,我想要完成的是获得有关成功任务的通知。所以最终,我会收到有关成功和失败任务的通知。如果不将每个任务都放在专用的块模块中,如何完成它,我也想过使用include_tasks并循环任务,但我不确定这是正确的,而且任务必须按特定顺序执行。
那么我如何正确地编写它以使每个任务既有救援任务又有成功通知呢?另外,如何传递任务名称并将其作为消息输出给处理程序?
处理失败任务的伪代码:
--- # Event Handling
- hosts: localhost
connection: local
gather_facts: no
tasks:
- name: Installing packages
block:
- command1
- command2
- command3
notify: Success Handler
rescue:
- name: Sending alerts
notify: Failed task
handlers:
- name: Success Handler
debug:
msg: "task {{ task_id$ }} was success"
- name: Failed task
debug:
msg: "task {{ task_id$ }} failed, the error was {{ task_id: failed results }}""
提前致谢。
解决方案
你几乎给出了解决方案。为什么不创建导入剧本甚至角色并按顺序传递命令{{with_items}}
?
喜欢:
- name: Run My Tasks Role
include_role:
name: tasksandnotification
vars:
taskvalue: "{{ item }}"
with_items:
- task1
- task2
然后在 role/tasks/main.yml
- name: Installing packages
block:
- "{{ taskvalue }}"
notify: Success Handler
rescue:
- name: Sending alerts
notify: Failed task
和角色/处理程序/main.yml
- name: Success Handler
debug:
msg: "task {{ taskvalue }} was success"
- name: Failed task
debug:
msg: "task {{ taskvalue }} failed, the error was {{ taskvalue: failed results }}"
我还没有完全测试,但这是我脑海中的想法。
推荐阅读
- corda - 无法在 AWS Corda 映像 VM 上运行节点
- javascript - 战舰错误JavaScript
- wpf - 将所有控件标记为只读 WPF
- android-studio - 是否有在两个不同的 android studio 实例之间切换的捷径
- regex - 使用状态的 flex 中的注释模式匹配
- c# - User.Identity 在 ClaimsIdentity 和 WindowsIdentity 之间波动
- android - Unity3D 项目在模拟器中打开,但在手机上不打开
- java - Spring mvc:eclipse链接:尝试从“DATE”类型的数据值中获取“VARBINARY”类型的数据值
- java - 无法使用 javapackager 制作基于模块的 jar
- css - 如何更改 CSS 中径向渐变的曲线?