Terraform:有条件地包含资源的属性



对terraform来说很新,我有一个问题。

我要去'google_compute_image'资源查找图像-我的模块需要通过图像名称或图像族来做到这一点。一个或另一个,而不是两个。

当提供其中一个时,另一个为空。

现在我有这样的东西

data "google_compute_image" "my_image_from_family" {
family  = var.image_family
project = "my project"
}
data "google_compute_image" "my_image_from_name" {
name    = var.image
project = "my project"
}
module "my module" {
...
image = var.image == "" ? data.google_compute_image.my_image_from_family.self_link : data.google_compute_image.my_image_from_name.self_link
}

当指定image或image_family中的一个时,另一个数据资源失败,因为它说'需要名称,家庭或过滤器中的一个'

我的理解是,如果不需要,数据资源甚至不会被评估,但这似乎是错误的。

我想做的是(那些熟悉厨师的人可能会认出这个想法)

data "google_compute_image" "my_image_from_family" {
family  = var.image_family if var.image_family != ""
name    = var.image if var.image != ""
project = "my project"
}

但这似乎不可能。

有人能帮我解决这个问题吗?

感谢

你可以这样做:

data "google_compute_image" "my_image_from_family" {
family  = var.image_family != "" ? var.image_family : null
name    = var.image != "" ? var.image : null
project = "my project"
}

这是terraform[1]中的三元运算符。


[1] https://developer.hashicorp.com/terraform/language/expressions/conditionals语法

相关内容

  • 没有找到相关文章

最新更新