使用Ansible向Slack发送通知

我使用Ansible部署时,发现将“部署完成”日志记录到Slack有点麻烦,所以我尝试让Ansible通知Slack。

Ansible 频道通知

发送Slack通知- Ansible文档

如果版本低于1.6,则需要升级Ansible至1.6以上。

将Ansible升级至1.6以上版本

$ ansible --version
ansible 1.7

添加Slack Incoming WebHooks

通过以下URL,向团队中的任意频道添加入站Webhook。入站WebHooks

準備Playbook

在用于部署的playbook中添加用于Slack通知的配置。

[staging]
2xx.1xx.2xx.x1 ansible_ssh_user=sshuser

[staging:vars]
app_domain=example.com
app_root_path=/apps/example.com
app_user=appuser
app_group=admins

nginx_use_basic=true

### ここから追加
[local]
localhost ansible_connection=local

[local:vars]
app_url=http://example.com
- hosts: staging
  sudo: true
  tasks:
    - include: roles/app/tasks/deploy.yml

# ここから追加
- hosts: local
  sudo: false
  tasks:
    - include: roles/app/tasks/notify_complete_deploy.yml
#(省略)

发送通知到Slack

- name: Send notification message via Slack
  local_action:
    module: slack
    domain: yourteam.slack.com
    token: slackapitoken
    msg: "{{ app_url }} deploy completed"
    channel: "#channel"

部署

执行用于部署的playbook。

$ ansible-playbook -i ansible/staging ansible/deploy.yml

如果部署成功完成,将会在 Slack 上通知一条消息:“http://example.com 部署完成”。

广告
将在 10 秒后关闭
bannerAds