StackStormでWebHookからトリガーを受け付ける
Pocket

StackStormでは、WebHookからトリガーを受け付けることでPackがないツールとも連携が可能になっている。
確かに、ここにあるPackだけだといろいろと少なかったりするので、この機能はあるとうれしい。

早速テストしてみよう。
といっても、以下のようなテスト用のルールを作成するだけだ。

 

●test_webhook.yml

---
    name: "webhook_test"
    pack: "default"
    description: "WebHook Test Rule."
    enabled: true

    trigger:
        type: "core.st2.webhook"
        parameters:
            url: "test"

    criteria:
        trigger.body.name:
            pattern: "abcd"
            type: "matchregex"

    action:
        ref: "core.local"
        parameters:
            cmd: "echo \"{{trigger.body}}\" >> /work/st2.webhook_sample.out"
Sponsored Links

yamlファイル作成後、以下のコマンドでRuleを作成する。

st2 rule create test_webhook.yml

 

…で、Ruleを作成したらそれで終わりというわけではなく、外部からWebHookにアクセスするためのAPIキーを作成する。
すでにAPI Tokenが払い出されているコンソールで以下のコマンドを実行する。

st2 apikey create -k -m '{"used_by": "WebHook Test"}'
[root@BS-PUB-STACKSTORM ~]# st2 apikey create -k -m '{"used_by": "WebHook Test"}'
YWI3Y2QwNzNiZjFlZDIzZWMxYjQ1NzU1MjI5Mzk3MzA0MDQyM2U5M2Y5YTQ5OGM0M2FkZDg3Y2I4YjU2M2ZmMw

 

あとは、払い出されたAPIキーをもって外部ノードから以下のようにcurlを実行すればよい。

curl --insecure -k https://IPアドレスorホスト名/api/v1/webhooks/test -d '{"foo": "ttt", "name": "abcdefgh"}' -H 'Content-Type: application/json' -H 'St2-Api-Key:APIキー'
blacknon@BS-PUB-GRAYLOG:~$ curl --insecure -k https://XXX.XXX.XXX.XXX/api/v1/webhooks/test -d '{"foo": "ttt", "name": "abcdefgh"}' -H 'Content-Type: application/json' - 'St2-Api-key:NzEyYTNhY2ZiNTNlMzFjNjFkOWFkZTgzZjdmOWNmMTZjNDQ0YTcyMDY4ZjVjMTMzMjBiYTk4MjU4YzIwOWFlYg'
{
    "foo": "ttt",
    "name": "abcdefgh"
}

 

これで、WebHook経由でのやり取りができるようになった。

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。