概要
前回 Mattermost のインストールと動作確認までやりました
今回は Mattermost と Hubot を連携させてチャットオプスの第一歩を踏み出したいと思います
環境
- CentOS 6.7 Final
- Mattermost 2.0.0
- npm 2.14.12
- node 4.2.5
- Hubot 2.18.0
Hubot インストール
まずは Hubot をインストールします
Hubot は npm でインストールできるのであらかじめ node と npm をインストールしておいてください
npm install -g yo generator-hubot --allow-root
また、Hubot の動作には保存領域として Redis が必要になるので Redis をインストールしておいてください
- yum -y install redis
hubot-mattermost アダプタのインストール
hubot-mattermost アダプタを使うことで Mattermost と Hubot の連携を行います
適当な作業ディレクトリに移動してアダプタをインストールしつつ bot を作成します
- chmod g+rwx /root /path/to/work
- chmod -R g+rwx /root/.npm
- cd /path/to/work
yo hubot --adapter mattermost
いきなり権限をいろいろと変更しています
これは YEOMAN が動作するために行っているのですが、 yo コマンドのトラブルシューティングとして権限周りのエラーが多発するみたいです
自分の場合は「作業ディレクトリ」と「npm 用のキャッシュディレクトリ」あたりの権限を変更しましたが、この辺は環境によってパスが変わってくるので臨機応変に対応してください
yo hubot
を実行して Try & Error で解決していく感じになると思います
とりあえず問題なく hubot-mattermost アダプタ入りの bot が作成されれば OK です
_____________________________
/ \
//\ | Extracting input for |
////\ _____ | self-replication process |
//////\ /_____\ \ /
======= |[^_/\_]| /----------------------------
| | _|___@@__|__
+===+/ /// \_\
| |_\ /// HUBOT/\\
|___/\// / \\
\ / +---+
\____/ | |
| //| +===+
\// |xx|
? Owner User <user@example.com>
? Bot name mattermost2
? Description A simple helpful robot for your Company
create bin/hubot
create bin/hubot.cmd
create Procfile
create README.md
create external-scripts.json
create hubot-scripts.json
create .gitignore
create package.json
create scripts/example.coffee
create .editorconfig
_____________________________
_____ / \
\ \ | Self-replication process |
| | _____ | complete... |
|__\\| /_____\ \ Good luck with that. /
|//+ |[^_/\_]| /----------------------------
| | _|___@@__|__
+===+/ /// \_\
| |_\ /// HUBOT/\\
|___/\// / \\
\ / +---+
\____/ | |
| //| +===+
\// |xx|
hubot-maps@0.0.2 node_modules/hubot-maps
hubot-help@0.1.3 node_modules/hubot-help
hubot-shipit@0.2.0 node_modules/hubot-shipit
hubot-google-images@0.2.6 node_modules/hubot-google-images
hubot-diagnostics@0.0.1 node_modules/hubot-diagnostics
hubot-rules@0.1.1 node_modules/hubot-rules
hubot-google-translate@0.2.0 node_modules/hubot-google-translate
hubot-pugme@0.1.0 node_modules/hubot-pugme
hubot-heroku-keepalive@1.0.2 node_modules/hubot-heroku-keepalive
hubot-redis-brain@0.0.3 node_modules/hubot-redis-brain
mqq redis@0.8.4
hubot-mattermost@1.0.7 node_modules/hubot-mattermost
mqq parent-require@1.0.0
hubot-scripts@2.16.2 node_modules/hubot-scripts
mqq redis@0.8.4
hubot@2.18.0 node_modules/hubot
tqq optparse@1.0.4
tqq async@0.9.2
tqq log@1.4.0
tqq scoped-http-client@0.11.0
tqq coffee-script@1.6.3
tqq chalk@1.1.1 (supports-color@2.0.0, escape-string-regexp@1.0.5, has-ansi@2.0.0, strip-ansi@3.0.1, ansi-styles@2.2.0)
tqq connect-multiparty@1.2.5 (qs@2.2.5, on-finished@2.1.1, type-is@1.5.7, multiparty@3.3.2)
mqq express@3.21.2 (commander@2.6.0, escape-html@1.0.2, cookie@0.1.3, merge-descriptors@1.0.0, cookie-signature@1.0.6, utils-merge@1.0.0, content-type@1.0.1, vary@1.0.1, methods@1.1.2, range-parser@1.0.3, etag@1.7.0, parseurl@1.3.1, basi
c-auth@1.0.3, fresh@0.3.0, content-disposition@0.5.0, depd@1.0.1, debug@2.2.0, proxy-addr@1.0.10, send@0.13.0, mkdirp@0.5.1, connect@2.30.2)
Mattermost の Incomming Webhooks を有効にする
Mattermost の UI 上で設定します
左上のオプションメニューから以下の項目を有効にします
- System Console -> Enable Incoming Webhooks: -> true -> [Save]
Incoming Webhook を有効にしたら、チャネルに対して Incoming Webook を追加します
- Account Setting -> Integrations -> Incoming Webhooks -> Add a new incoming webhook -> Town Square -> [Add]
ここで表示された Incoming 用の URL をメモしておきます
Mattermost の Outgoing Webhooks を有効にする
Mattermost の UI 上で設定します
左上のオプションメニューから以下の項目を有効にします
- System Console -> Enable Outgoing Webhooks: -> true -> [Save]
Outgoing Webhook を有効にしたら、チャネルに対して Outgoing Webook を追加します
- Account Setting -> Integrations -> Outgoing Webhooks
- -> Channel -> Town Square
- -> Callback URLs: ->
http://localhost:8080/hubot/incoming
-> [Add]
設定した URL と取得できた Token をメモしておきます
その他 Mattermost の設定
以下も設定しておきましょう
簡単に説明すると作成した bot のアイコンを上書きする設定や名前を上書きする設定を有効にしています
- System Console
- -> Enable Slash Commands: -> true
- -> Enable Integrations for Admin Only: -> false
- -> Enable Overriding Usernames from Webhooks and Slash Commands: -> true
- -> Enable Overriding Icon from Webhooks and Slash Commands: -> true
- -> [Save]
必要な環境変数を設定して hubot を起動
それでは Hubot を起動していきます
取得した各種 Webhook URL と Token を使って環境変数を設定し hubot を起動します
今回 hubot は Mattermost と同じホスト上で動作しているのでホスト名は localhost を使っていますが、hubot が別サーバにある場合は Mattermost 側のサーバ名を適切に設定してください
- cd /path/to/work
- export MATTERMOST_ENDPOINT=”/hubot/incoming”
- export MATTERMOST_INCOME_URL=”http://localhost:8065/hooks/9d8y79i6yigh8bg1pximy1w3sh”
- export MATTERMOST_TOKEN=”kap36u7ejtdo8cwbeag8fuhtxw”
- export MATTERMOST_ICON_URL=”https://s3-eu-west-1.amazonaws.com/renanvicente/toy13.png”
- export MATTERMOST_HUBOT_USERNAME=”matterbot”
- bin/hubot -a mattermost -n hubot
簡単に各種環境変数の説明をすると
- MATTERMOST_ENDPOINT・・・Outgoing Webhook の設定で取得できた URI を入力します、ここはホスト名部分は省略して記載します
- MATTERMOST_INCOME_URL・・・Incoming Webhook の設定で取得できた URL を入力します
- MATTERMOST_TOKEN・・・Outgoing Webhook の設定で取得できた Token を入力します
- MATTERMOST_ICON_URL・・・ bot のアイコンがある URL を指定します
- MATTERMOST_HUBOT_USERNAME・・・ Mattermost 上で表示される bot の名前を入力します
環境変数を指定したら起動するだけです
今回は -a
でアダプタを指定して、-n
で bot を呼び出すコマンド名を指定します
先程、環境変数で指定した bot の名前とは異なるので注意してください
起動後エラーがでないことを確認しましょう
動作確認
ここまでくればあとは Mattermost 上で bot を呼び出せば応答してくれるはずです
Town Square に戻って hubot help
と入力してみましょう
bot が応答してコマンドのヘルプを表示してくれるはずです
最後に
紹介は以上です
はまりそうなポイントは
- yo コマンドで bot 作成する部分
- Incoming, Outgoing Webhook を設定後にそれらの情報を環境変数に設定して hubot を起動する部分
- Mattermost
<-->
Hubot 間の ACL の設定
あたりかなと思います
hubot は特にエラーを吐いてくれないので環境変数の値を変更して再起動して試すみたいな感じで動作確認を進めました
あと、hubot の起動はフォアグランド起動なので、バックグランドで起動できるような起動スクリプトも本格的に運用するなら必要かなと思います
0 件のコメント:
コメントを投稿