codecamp

Ansible 发送 notification 到 HipChat

HipChat 是相当老牌线上通讯服务,官方也提供了不少整合方案。冻仁曾通过它整合 Ansible, Git, Jenkins, Redmine, Skype  Zabbix 1 等服务,当资讯集中在一处后,维运起来也会轻松许多。这里冻仁将介绍 Ansible 整合 HipChat 的部份。2

automate_with_ansible_practice-22.jpg

▲ 上图为 Ansible 发送 notification 到 HipChat 的范例。

hipchat module 是什么?

hipchat module 是用来发送信息到 HipChat 上的通知模组 (notification modules),我们只需取得 Room notification Token 即可使用。

Ansible 怎么整合 HipChat?

  1. 撰写发送 notification 到 HipChat 的 Playbook:请依步骤 2 取得的参数设定 hipchat_token 和 hipchat_room 等变数。

     $ vi send_notification_to_hipchat.yml
     ---
     - name: Send notification to HipChat
       hosts: localhost
    
       vars:
         hipchat_token: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
         hipchat_room: "automate-with-ansible"
    
       post_tasks:
         - name: send notification to hipchat
           hipchat:
             api: "https://api.hipchat.com/v2/"
             token: ""
             room: ""
             color: gray
             msg: "Send a notification with Ansible !"
    
     # vim: ft=ansible :
    

    由于 HipChat 在设计是绑定房间 (Room) 使用的,不像 Slack 可用一组设定发送讯息到不同的频道,若有这类需求则可通过多个 Tasks 和 Tokens 进行实作。

  2. 取得 HipChat 的 Room Notification Token。

    1. 登入 HipChat 后,开启 web app。

      2016-12-17-ansible-hipchat-1.png

    2. 建立一间新的 Room。

      2016-12-17-ansible-hipchat-2.png

    3. 帮这个 Room 取个名字并简单介绍一下用途。

      2016-12-17-ansible-hipchat-3.png

    4. 回到 HipChat 的管理界面,并找到 Group Admin (群组管理) 。

      2016-12-17-ansible-hipchat-4.png

    5. 在 Rooms 底下找到要整合 Ansible 的 Room。

      2016-12-17-ansible-hipchat-5.png

    6. 点选左侧的 Tokens

      2016-12-17-ansible-hipchat-6.png

    7. 在 Create New Token 输入 Ansible 和选择 Send Notification 的 Scopes,之后接下 Create

      2016-12-17-ansible-hipchat-7.png

    8. Token 建立完毕后,即可在红框里取得刚建立的 Token

      2016-12-17-ansible-hipchat-8.png

  3. 执行 Playbook。

     $ ansible-playbook send_notification_to_hipchat.yml
    
     PLAY [Send notification to HipChat] ********************************
    
     TASK [setup] *******************************************************
     ok: [localhost]
    
     TASK [send notification to hipchat] ********************************
     changed: [localhost]
    
     PLAY RECAP *********************************************************
     localhost      : ok=2    changed=1    unreachable=0    failed=0
    
  4. 在 HipChat 接收从 Ansible 送出的 notification。

    2016-12-17-ansible-hipchat-9.png

  5. 现在我们可以在 HipChat 里接收来自 Ansible 的 notification 了!

后话

Ansible 与 HipChat 的组合在使用上会比 Slack 简单许多,虽然 HipChat 不比 Slack 的高度客制化,但冻仁认为它的门槛比较低,适合需求较单纯的团队。

至于要选哪一家作为 ChatOps 的平台?这就是另一门学问了。(笑)

相关连结

1. Zabbix 是企业级的 open source 监控系统,搭配 HipChat 使用后可以让我们在极短的时间内掌握服务器 (Server) 和网络设备等状况。 ↩
2. 冻仁先前于高雄任职的公司有使用 HipChat,但后期只剩 IT 维运部门在用就是。 ↩


Ansible 发送 notification 到 Slack
Ansible 在 Playbooks 使用 loops
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }