Help us understand the problem. What is going on with this article?

StackStormを使う Webhookを使って見る

More than 3 years have passed since last update.

インストールなどは
http://qiita.com/ko-he-8/items/953e1eb5267f43789861

Webhook

StackStormのTriggerには「Webhook」が用意されています。これを使うことでpackが用意されていないツールとも比較的簡単に連携できます。

WebhookのRuleを作成する。

サンプル(/usr/share/doc/st2/examples/rules/sample_rule_with_webhook.yaml)も用意されていますのでこれをつかいます。

/usr/share/doc/st2/examples/rules/sample_rule_with_webhook.yaml
---
name: "sample_rule_with_webhook"
pack: "examples"
description: "Sample rule dumping webhook payload to a file."
enabled: true

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

criteria:
    trigger.body.name:
        pattern: "st2"
        type: "equals"

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

---

このRulehが
* trigger
* webhookが受けつけるurlをhttps://localhost/api/v1/webhooks/sampleにしていしています。
* criteria
* 受け付けたpost requestのbodyのnameにst2という文字が含まれていればActionを実行します。
* action
* 実行ユーザがstanleyになるので/home/stanley/st2.webhook_sample.outにpostのbody部分を出力します。

操作

まずはトークンを取得します。StackStormのインストールで指定したuserとpasswordでトークンを取得します。

st2 auth <user> -p <password>

次に先ほど作成したRuleを登録します。

$ st2 rule create /usr/share/doc/st2/examples/rules/sample_rule_with_webhook.yaml

+-------------+--------------------------------------------------------------+
| Property    | Value                                                        |
+-------------+--------------------------------------------------------------+
| id          | 577b4eb45d698e258335e50b                                     |
| name        | sample_rule_with_webhook                                     |
| pack        | examples                                                     |
| description | Sample rule dumping webhook payload to a file.               |
| action      | {                                                            |
|             |     "ref": "core.local",                                     |
|             |     "parameters": {                                          |
|             |         "cmd": "echo "{{trigger.body}}" >>                   |
|             | ~/st2.webhook_sample.out"                                    |
|             |     }                                                        |
|             | }                                                            |
| criteria    | {                                                            |
|             |     "trigger.body.name": {                                   |
|             |         "pattern": "st2",                                    |
|             |         "type": "equals"                                     |
|             |     }                                                        |
|             | }                                                            |
| enabled     | True                                                         |
| ref         | examples.sample_rule_with_webhook                            |
| tags        |                                                              |
| trigger     | {                                                            |
|             |     "type": "core.st2.webhook",                              |
|             |     "ref": "core.1e4f1702-5213-4de0-a42c-001158753d9f",      |
|             |     "parameters": {                                          |
|             |         "url": "sample"                                      |
|             |     }                                                        |
|             | }                                                            |
| type        | {                                                            |
|             |     "ref": "standard",                                       |
|             |     "parameters": {}                                         |
|             | }                                                            |
| uid         | rule:examples:sample_rule_with_webhook                       |
+-------------+--------------------------------------------------------------+

ではルールで指定したurlにpostリクエストを投げてみましょう。'token'は先ほど取得したものに書き換えてください。

$ curl -k https://localhost/api/v1/webhooks/sample -d '{"foo": "bar", "name": "st2"}' -H 'Content-Type: application/json' -H 'X-Auth-Token: <token>'

確認

登録されているwebhookの確認します。

 $ st2 webhook list
 +------------------+------+------------------+-------------+------------------+
| type             | pack | name             | description | parameters       |
+------------------+------+------------------+-------------+------------------+
| core.st2.webhook | core | 1093a1f1-2c9a-   |             | {u'url':         |
|                  |      | 44aa-be3c-       |             | u'sample'}       |
|                  |      | 360c7f68a0f4     |             |                  |
+------------------+------+------------------+-------------+------------------+

実行結果を確認します。

$ cat /home/stanley/st2.webhook_sample.out 
{'foo': 'bar', 'name': 'st2'}

これでwebhookが正しく実行されていることが確認できました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away