[1] https://developer.hashicorp.com/terraform/language/expressions/conditionals语法
对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语法