You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ansible Tower作业完成后发送作业输出至邮箱?

在Ansible Tower中实现作业完成后发送邮件通知

当然可以实现!在Ansible Tower里有几种不同的方式来搞定作业完成后的邮件通知,比你现在每个任务发邮件要省心多了,我给你拆解下最常用的几个方法:

方法一:利用Tower内置的通知功能(最推荐)

这是最简单直接的方式,不需要修改任何Playbook,完全通过Tower的界面配置就能实现:

  • 第一步:创建邮件通知模板
    进入Tower界面,找到「Notifications」菜单,点击「Add」按钮,通知类型选择「Email」。然后填写SMTP服务器地址、端口、发件人邮箱、收件人邮箱(支持多个),如果需要SMTP认证的话填上用户名和密码,最后保存这个模板。
  • 第二步:给作业模板绑定通知
    打开你需要配置的作业模板(Job Template),切换到「Notifications」标签页,在「On Success」(作业成功时)、「On Failure」(作业失败时)甚至「On Timeout」(作业超时时)选项里,添加刚才创建的邮件通知模板。保存后,每次这个作业模板执行完成,Tower就会自动发送包含作业状态、执行时间、输出链接的邮件给指定收件人。

方法二:用Tower工作流串联作业与邮件任务

如果你需要自定义邮件内容(比如包含作业的具体输出细节),可以用工作流来实现:

  • 第一步:创建一个专门发送通知的作业模板
    写一个极简的Playbook,只包含mail模块任务,比如:
    ---
    - name: 发送作业完成通知
      hosts: localhost
      tasks:
        - name: 发送邮件
          mail:
            subject: "Ansible作业 {{ job_name }} 执行完成"
            body: |
              作业名称: {{ job_name }}
              执行状态: {{ job_status }}
              作业链接: {{ job_url }}
            to: your-team@example.com
            from: tower-alerts@example.com
            smtp_server: smtp.example.com
    
    这里的job_name、job_status、job_url都是Tower自动提供的内置变量,直接就能用。把这个Playbook上传到Tower,创建对应的作业模板。
  • 第二步:构建工作流模板
    新建一个工作流模板,先添加你原来的作业模板,再添加刚才创建的邮件作业模板,设置执行顺序为「串行」(即原作业完成后再执行邮件任务)。这样就能保证原作业全部执行完毕后,才会发送自定义内容的邮件。

方法三:在Playbook内用always块实现(适合单个Playbook场景)

如果你的需求是在Playbook层面控制,不管任务成功失败都发送邮件,可以用block+always块来包裹任务:

---
- name: 主作业任务
  hosts: all
  tasks:
    - block:
        # 这里放你的所有作业任务
        - name: 执行核心任务1
          command: echo "完成任务1"
        - name: 执行核心任务2
          command: echo "完成任务2"
      always:
        - name: 作业完成后发送邮件
          delegate_to: localhost
          mail:
            subject: "Playbook {{ ansible_play_name }} 执行完成"
            body: |
              作业整体状态: {{ ansible_playbook_status }}
              执行节点组: {{ ansible_inventory_sources }}
            to: your-email@example.com
            from: playbook-alerts@example.com
            smtp_server: smtp.example.com

这个方法会在所有任务执行完毕(不管成功还是失败)后,在本地主机执行邮件发送任务,避免每个节点都发邮件的问题。

内容的提问来源于stack exchange,提问作者Smily

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:13:31