notebook

都内でWEB系エンジニアやってます。

rundeck + slack

rundeckでjobの一元管理が出来るようになりました。

次は通知が欲しい!となりますよね。

デフォルトでメール送信機能やwebhook機能がついていますがwebhookに関してはURLしか指定できないのでPOSTで色々送るということが出来ないようです

職場でもちょうどslackが導入されたのでいい機会という事でプラグインを探したところ二つほど見つかりました

rundeck-slack-plugin

rundeck-slack-incoming-webhook-plugin

前者に関してはここ1年ほど更新されていない + slackのwebhookの仕様が変わる前の仕様で作られた物だったようで通知できませんでした

なので後者の導入を進めていきます

インストール

release からjarを取得してlibext以下に置くだけでいい...はずだったのですがうまく動作してくれませんでした

今のところgradleを使ってビルドしてjarを生成しないとうまく設定できない模様(2015-10-31現在)

git clone https://github.com/higanworks/rundeck-slack-incoming-webhook-plugin.git
cd rundeck-slack-incoming-webhook-plugin
./gradlew compileJava
./gradlew jar
mv build/libs/rundeck-slack-incoming-webhook-plugin-0.5.jar /var/lib/rundeck/libext/

slack integrationの設定

Incoming WebHooksの設定を行います

f:id:swfz:20151111135607p:plain

デフォルトでPOSTするチャンネルを選んでボタンを押下するとURLが作成されます

後でも変更できるようなので特に考える必要はなさそうです

integrationを追加したら次の画面で各種設定項目を入力します

説明、名前、アイコン、送信するチャンネルなどが設定できます

ここで作成したWebhook URLの項目をメモしておきます

rundeck 設定

後はジョブを作成、編集時にnotificationの項目でslackで生成したURLを入力するだけ

f:id:swfz:20151111135618p:plain

jobスタート時、失敗時、成功時に通知が選べるので通知が必要な所に設定します

実際に通知がきたところ

f:id:swfz:20151111135628p:plain

f:id:swfz:20151111135635p:plain

簡単ですね!

ポストする内容に関してはいじる事が出来ないようです、メンション飛ばせる設定くらいは欲しいですね。。

incoming-webhookについてはcurlとかでもメッセージが送信できてしまうので結構便利に使えそうです