第19章 Webhook の使用
Webhook は、Web ページまたは Web アプリケーションが他のアプリケーションにリアルタイムで情報を提供するための方法です。Webhook は、イベントが発生した後にのみトリガーされます。リクエストには通常、イベントの詳細が含まれています。イベントは、ホストがプロビジョニングされたことを確認する電子メールの送信などの呼出しをトリガーします。Webhook を使用すると、fire-and-forget メッセージ交換パターンを使用して、Satellite の内部イベントに基づいて外部 API への呼び出しを定義できます。リクエストを送信するアプリケーションは、レスポンスを待たないか、無視します。
Webhook のペイロードは、Webhook テンプレートから作成されます。Webhook テンプレートは、プロビジョニングテンプレートと同じ ERB 構文を使用します。使用可能な変数:
-
@event_name
: イベントの名前。 -
@webhook_id
: 一意のイベント ID。 -
@payload
: ペイロードデータ。イベントタイプごとに異なります。個々のフィールドにアクセスするには、@payload[:key_name]
Ruby ハッシュ構文を使用します。 -
@payload[:object]
: データベースアクション (作成、更新、削除) によってトリガーされるイベントのデータベースオブジェクト。カスタムイベントには使用できません。 -
@payload[:context]
: リクエストやセッションの UUID、リモート IP アドレス、ユーザー、組織、ロケーションなどのハッシュなどの追加情報。
Webhook は HTTP を使用するため、既存の Web サービスに新しいインフラストラクチャーを追加する必要はありません。
Satellite での Webhook の一般的な使用例は、ホストが作成または削除されたときにモニタリングシステムを呼び出すことです。
Webhook は、外部システムで実行するアクションを API を介して実行できる場合に役立ちます。追加のコマンドを実行したりファイルを編集したりする必要がある場合は、Capsules 用の shellhooks プラグインを利用できます。shellhooks プラグインを使用すると、API を介して実行できる Capsule 上のシェルスクリプトを定義できます。
shellhooks プラグインをインストールしなくても、webhook を正常に使用できます。
利用可能なイベントのリストは、利用可能な Webhook イベント を参照してください。
19.1. Webhook テンプレートの作成 リンクのコピーリンクがクリップボードにコピーされました!
Webhook テンプレートは、Webhook のトリガー時に、設定されたターゲットに対して HTTP リクエストの本文を生成するために使用されます。次の手順を使用して、Satellite web UI で Webhook テンプレートを作成します。
手順
- Satellite Web UI で、Administer > Webhook > Webhook Templates に移動します。
- Clone an existing template または Create Template をクリックします。
- テンプレートの名前を入力します。
エディターを使用して、テンプレートペイロードに変更を加えます。
Webhook HTTP ペイロードは、Satellite テンプレート構文を使用して作成する必要があります。Webhook テンプレートは、イベントのメインオブジェクトを表すことができる
@object
と呼ばれる特別な変数を使用できます。特定のイベントの場合、@object
が欠落する可能性があります。@payload
変数を使用して、実際にどのデータが利用可能であるかを判断できます。詳細は、ホストの管理 の テンプレート作成リファレンス を参照してください。使用可能なテンプレートマクロとメソッドは、Satellite Server の
/templates_doc
を参照してください。- オプション: 説明と監査コメントを入力します。
- 組織とロケーションを割り当てます。
- Submit をクリックします。
例
Webhook テンプレートを作成するときは、テンプレートの対象となるターゲットアプリケーションの形式に従う必要があります。たとえば、アプリケーションでは、Webhook メッセージを含む "text"
フィールドが想定できます。Webhook テンプレートの形式の詳細は、対象アプリケーションのドキュメントを参照してください。
- リモート実行ジョブの実行
この Webhook テンプレートは、リモート実行ジョブの ID と結果を含むメッセージを定義します。このテンプレートを使用する Webhook は、
Actions Remote Execution Run Host Job Succeeded
またはActions Remote Execution Run Host Job Failed
などのイベントにサブスクライブできます。{ "text": "job invocation <%= @object.job_invocation_id %> finished with result <%= @object.task.result %>" }
{ "text": "job invocation <%= @object.job_invocation_id %> finished with result <%= @object.task.result %>" }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ユーザーの作成
この Webhook テンプレートは、作成されたユーザーのログインとメールを含むメッセージを定義します。このテンプレートを使用する Webhook は、
User Created
イベントにサブスクライブする必要があります。{ "text": "user with login <%= @object.login %> and email <%= @object.mail %> created" }
{ "text": "user with login <%= @object.login %> and email <%= @object.mail %> created" }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow