gpt4 book ai didi

Terraform:仅当变量匹配特定值时才创建 block

转载 作者:行者123 更新时间:2023-12-05 03:38:12 25 4
gpt4 key购买 nike

我正在尝试创建一个创建互连附件的模块,但某些部分仅在附件使用 ipsec 加密时才定义,如果不是,则该 block 不能存在于资源中,否则会导致错误(甚至如果它只包含一个设置为 null 的值。)我试过使用动态,但我无法完全正确地布局以使其正常工作:

resource "google_compute_interconnect_attachment" "interconnect-attachment" {
project = var.project
region = var.region
name = var.name
edge_availability_domain = var.availability_domain
type = var.type
router = google_compute_router.router.name
encryption = var.encryption
dynamic "ipsec_internal_addresses" {
for_each = var.encryption != "IPSEC" ? [] : [1]
content {
var.address
}
}
}

本质上,如果 var.encryption 设置为 IPSEC,那么我希望包含以下 block :

  ipsec_internal_addresses = [
var.address,
]

另一个问题是动态 block 似乎期望发生某种赋值,但 terraform 示例仅在 ipsec_internal_addresses 中具有值,所以我不确定如何实现这一点。

最佳答案

ipsec_internal_addresses 不是 google_compute_interconnect_attachment 资源中的 block 。这是一个论点。因此,您可以使用普通模式来指定可选参数,如果您不想指定值,则条件返回 null 类型。使用你的条件和变量:

ipsec_internal_addresses = var.encryption == "IPSEC" ? [var.address] : null

var.encryption 等于字符串 IPSEC [var.address] 分配给 ipsec_internal_addresses。否则,它将返回 null 并且 ipsec_internal_addresses 参数将被忽略。

关于Terraform:仅当变量匹配特定值时才创建 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69042288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com