首页 > 解决方案 > 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 }}""

提前致谢。

标签: ansible

解决方案


你几乎给出了解决方案。为什么不创建导入剧本甚至角色并按顺序传递命令{{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 }}"

我还没有完全测试,但这是我脑海中的想法。


推荐阅读