【发布时间】:2021-08-09 08:17:53
【问题描述】:
我对 terraform 有问题,尤其是 google 负载平衡器 backend_service
这是我的示例 tf 配置
var backends {
default = [
{
'name':'red'
'service': 'abcd'
},
{
'name':'blue'
'service': 'efgh'
}
]
}
local {
backend = {for i in var.backends: "${i.name}-${i.service}" => i}
}
data "external" "mydata" {
for_each = local.backend
program = ["/bin/sh", "script.sh", each.value.name]
}
//that script will get some data like this //
{"id": "sometext"}
//
resource "google_compute_backend_service" "default" {
project = local.project_id
for_each = local.backend
name = each.key
dynamic "backend" {
for_each = {for zone in var.zone: zone => "projects/${local.project_id}/zones/${zone}/networkEndpointGroups/${data.external.mydata[each.key].result.id}"}
}
}
问题是,如果data.external.mydata[each.key].result.id 为空,则terraform plan 是成功/没有错误。
我希望 terraform plan 出错/失败,尤其是在 google_compute_backend_service 中。
这里是示例 external.data(如果为空)
{"id":""}
我希望这是错误/失败的,尤其是在google_compute_backend_service。
是否可以重现错误?
我知道它可以使用count 来检查external.data 的值,但是由于我使用for_each,所以我不能使用count
【问题讨论】:
-
您仍然可以使用 for_each 检查计数。我不确定实际的问题是什么?
-
如果我在同一资源上使用 count 和 for_each 会出错。terraform.io/docs/language/meta-arguments/count.html 我的实际问题是,当 data.external.result.id 为空时,terraform 计划是否成功。我想要它失败/错误..
-
你想做什么?如果
external.data为空,则跳过google_compute_backend_service的创建?如果是这样,local.backend是什么? -
我用 local.backend 更新我的问题.. 我不想跳过创建
google_compute_backend_service我希望它在 terraform 计划中重现错误,当external.data.id为空时 -
因为我在管道中使用它,当用户创建MR时,管道确实
terraform plan它显示成功..但由于external.data.id为空,应用时它将失败/错误,因为@ 987654340@没有找到自链接
标签: terraform terraform-provider-gcp