HCP Terraform No Code ProvisioningでWorkspaceが作成された際にSlack通知をしてみた
HCP TerraformのNo Code ProvisioningでWorkspaceが作成された際に通知ができるのか、気になったため調査してみました。
結論、現時点(2025/5時点)ではHCP Terraformの機能では実現できませんでした。ユーザーによる作り込みが必要です。
No Code ModuleにSlack通知のlocal-execを仕込むことで実現してみたので、ブログにします。
HCP Terraformの通知機能
HCP Terraformには以下の通知機能があります。
名前の通り、それぞれWorkspaceやTeam単位で通知できる機能です。
Workspace Notificationでは、Runのイベントを通知可能です。
この機能を使えば要件は達成できます。
しかし、この機能は存在するWorkspaceのみに設定可能です。
No Code Provisioningでは、実行時に自動的にWorkspaceが作成されます。
現時点では、Workspace作成前に作成されるWorkspaceに対してWorkspace Notificationの設定はできません。(Workspace作成後は可能です)
そのため、この機能を使う場合は、以下の流れになり少し煩雑です。
- No Code Provisioning Workspaceを作成する(Manual Applyを設定して、Workspace作成時に自動でApplyしないようにしておく)
- 作成されたWorkspaceに対して、Workspace Notificationを設定する
- WorkspaceでRunを作成して、リソースを作成する
- 通知が飛ぶ
今後のアップデートで、ProjectレベルでWorkspace Notificationのデフォルト設定ができたら嬉しいですね。
Team Notificationは現時点では、通知イベントが「Change Request」のみで今回のケースでは使えません。
[HCP Terraform]Team Notificationを試してみた | DevelopersIO](https://dev.classmethod.jp/articles/hcp-tf-team-notification/)
やってみた
No Code Moduleにlocal-execを追加して、Slackに通知する方法をご紹介します。
No Code Moduleにlocal-execを追加
No Code Moduleに以下の記述を追加します。
# ProjectのVariable Setで設定
variable "slack_webhook_url" {
description = "Slack webhook URL for notifications"
type = string
default = null
}
slack_webhook_url
はHCP TerraformのVariables Setで渡します。
No Code Provisioning時に渡すことも可能です。
しかし、WebhookURLを変更したいときに、Workspace毎に変更する必要があり手間です。
Variables SetでWebhook URLを設定してProjectに割り当てることで、変更時の修正が一箇所で済みます。
resource "null_resource" "slack_notification" {
count = var.slack_webhook_url != null && var.slack_webhook_url != "null" ? 1 : 0
provisioner "local-exec" {
command = "curl -X POST -H 'Content-type: application/json' --data '{\"text\":\"Workspace ${var.waypoint_application} has been created\"}' ${var.slack_webhook_url}"
}
}
今回は、HCP Waypoint経由でNo Code Provisioningを行っています。
var.waypoint_application
には、自動的にWaypoint Application名が入ります。
No Code Moduleで作成されるWorkspace名も同一の値が入ります。
そのため、Workspace <作成されたWorkspace名> has been created
という内容で通知されます。
Slack Webhookの用意
以下を参考にSlack Webhook URLを作成します。
Sending messages using incoming webhooks | Slack
Variables Setの作成・Projectへの適用
HCP Terraformに移動して、Variables Setを作成します。
作成したVariables Setは、No Code Provisioning利用先のProjectに割り当てます。
Key | Value | Category | Actions |
---|---|---|---|
slack_webhook_url | <作成したSlack Webhook URL> | terraform | None |
動作確認
変更を適用して、通知をテストしてみます。
以下を実施し、No Code Moduleを最新版にアップデートします。
- GitHub: リリースタグを作成
- HCP Terraform: No Code Moduleのバージョン最新化
HCP Waypointを使っているため、HCP Waypoint経由でWorkspaceを作成します。
Waypoint Applicationが作成され、HCP Terraform Workspaceが作成されたことも確認できました。
問題なく通知も飛んでいました。
おわりに
No Code Provisioning時の通知についてでした。
今回はlocal-execを使った少し強引な方法で実現しました。
HCP Terraformの機能としてサポートされることを期待しています。(もしくは、ProjectレベルでのWorkspace Notificationが追加されると嬉しい)
以上、AWS事業本部の佐藤(@chari7311)でした。