【发布时间】:2020-01-10 19:23:09
【问题描述】:
我正在尝试为 prod 和 dev 编写一个 google_monitoring_alert_policy 资源,但我似乎在为每个环境设置单独的通知通道时遇到了问题。
这就是我现在拥有的:
resource "google_monitoring_notification_channel" "pagerduty" {
#Only use pagerduty in prod
count = "${var.environment == "production" ? 1 : 0}"
display_name = "Pagerduty Alerting"
type = "pagerduty"
labels = {
service_key = "${var.pagerduty_service_key}"
}
}
resource "google_monitoring_alert_policy" "noisy_zk" {
...
notification_channels = [
"${split(" ", var.environment == "production" ? "${google_monitoring_notification_channel.pagerduty.name} ${google_monitoring_notification_channel.slack.name}" : "${google_monitoring_notification_channel.slack.name}")}",
]
基本上我想要实现的是我只想在生产环境中创建和使用 pagerduty 资源。我得到的错误是:
Error: Error running plan: 1 error occurred:
* module.stackdriver.google_monitoring_alert_policy.noisy_zk: 1 error occurred:
* module.stackdriver.google_monitoring_alert_policy.noisy_zk: Resource 'google_monitoring_notification_channel.pagerduty' not found for variable 'google_monitoring_notification_channel.pagerduty.name'
这似乎表明 TF 想要渲染所有变量,即使它们没有被使用。欢迎任何想法!
【问题讨论】:
-
您使用的是哪个版本的 Terraform?乍一看,这应该可以在 0.12 中使用,但需要一些丑陋的 hack 才能在 0.11 中使用。
-
是的,不幸的是,我们在 0.11,但在通往 0.12 的道路上。我刚刚创建了资源并在频道列表中将其断开连接。一旦我们升级,我将直接核对资源。谢谢你找我!
标签: terraform