Terraform - if 语句来选择合适的变量

Terraform - if statement to pick appropriate variable

使用 Terraform 部署到 OCI,我想将名为 "nonprod" 的变量传递给 select 我使用的哪个隔间是在另一个变量 [=14] 中定义的 true 或 false =].因此,根据变量 "nonprod" 是真还是假,我想在 "compartment_ocid" 中使用不同的值。根据我的阅读,如果它们是资源而不是变量,这似乎会起作用,因为它会因声明两次而出错。知道如何做到这一点或者实现相同目标的更简洁的方法吗?

variable "nonprod" {
  description = "If set to true, non-prod.  If false, prod"
  type        = bool
  default     = true
}

variable "compartment_ocid" {
  count = var.nonprod ? 1 : 0
  # Non-Prod compartment
  default = "nonprod_ocid_456"
}

variable "compartment_ocid" {
  count = var.nonprod ? 0 : 1
  # Prod compartment
  default = "prod_ocid_123"
}

一个选项是将值合并到由内联 if 的结果定义的 local 中。例如

locals {
  compartment_ocid = var.nonprod ? "nonprod_ocid_456" : "prod_ocid_123" 
}

然后您可以将该值引用为 local.compartment_ocid

有关详细信息,请参阅 terraform's documentation on locals