zaki work log

作業ログやら生活ログやらなんやら

[Ansible] community.general.slackモジュールでSlack通知を行うタスク

先日AAP/AWXの通知機能でSlack連携をまとめたので、ついでにPlaybookのタスクから任意のメッセージを通知する方法について。
使うモジュールは以下

docs.ansible.com

たとえばAAP/AWX構築Playbookで資材内にSlackのトークンを持っているのであれば、ついでに作業完了を通知するのに使う、とかに応用できる。

トークンの作成

以下の「投稿用bot作成」を参照

zaki-hmkc.hatenablog.com

Slack通知を行うタスクの作成

最小限の内容であれば以下の通り。
トークン、メッセージ、投稿先チャンネル名を指定する。

---
- hosts: localhost
  gather_facts: false

  tasks:
  - community.general.slack:
      token: "{{ oauth_token }}"
      msg: 届け!ときめき――
      channel: develop
      color: '#f0a6b8'

このタスクが実行されると、以下のようにSlackに通知される。

ボットのカスタマイズ

community.general.slackはメッセージ毎にアイコンやボット名のカスタムも可能。
ただし、タスク(モジュール)からアイコンや名前を指定するにはchat:write:customize権限が必要。

スコープの設定

ボット作成時にchat:writeのみ権限を与えている場合は追加する必要がある。

Slackアプリ一覧から対象の設定画面の「OAuth & Permissions」の設定を開き、「Bot Token Scopes」で「Add an OAuth Scope」押下し、chat:write:customizeを追加する。

追加すると画面上部に追加完了と、アプリのreinstallが必要な必要な旨が表示されるので、書かれているリンクに進んで更新した権限で再インストールする。

これで準備OK

パラメタの追加

  • アイコンはicon_urlにURLを設定。未指定の場合は https://docs.ansible.com/favicon.ico が使用される。
  • 名前はusernameに指定。未指定の場合は「Ansible」となる。

実装例

  - community.general.slack:
      token: "{{ oauth_token }}"
      msg: 完全にときめいちゃった!
      channel: develop
      color: '#1d1d1d'
      icon_url: https://lovelive-anime.jp/nijigasaki/img/tv/member/c01s.png
      username: '高咲侑'

この内容でタスクが実行されると以下の通り🌈