我试图弄清楚每次有人做
terraform apply
我已经经历了 https://github.com/terraform-aws-modules/terraform-aws-notify-slack,但这专门讨论了云监视警报。我正在考虑一些简单的事情,我可以通过在成功的地形应用程序结束时调用 webhook 来向 Slack 发送类似通知的东西。
有人可以指出我某个方向吗,我可以开发一些东西来弄清楚。只是指针也会有所帮助。
你可以通过使用 Terraform 的local-exec
配置器来实现这一点,它允许你在创建资源后在本地运行一些可执行代码:
resource "null_resource" "example2" {
provisioner "local-exec" {
command = "curl -X POST 'https://yourchannel.slack.com/api/chat.postMessage?channel=CXXXXXXXX&token=xoxp-#####' -F 'text={"text": "Terraform was applied"}'"
}
}
如果你使用 Terragrunt.
Terragrunt 有一个用于before
和after
钩子的功能,就可以实现这一点。
使用此机制,我们可以执行此类操作:
terragrunt.hcl
:
terraform {
after_hook "Send slack Notification" {
commands = ["apply"]
execute = ["sh","-c","${get_repo_root()}/scripts/send_slack_notification.sh ${path_relative_to_include()}"]
run_on_error = false
}
}
scripts/send_slack_notification.sh
:
#!/bin/bash
folder=$1
WEBHOOK_URL='https://hooks.slack.com/services/<WEBHOOK>'
MESSAGE="Terraform Apply was performed on resource:nt$foldernUser:nt$USER"
curl -H 'Content-type: application/json' --data
"{'text': '$MESSAGE'}"
$WEBHOOK_URL