Terraform - 确保根据是否还设置了另一个值来设置值

Terraform - ensure value is set depending on if another value is also set

如果其他值之一是特定字符串,我想强制设置一个值而不是使用默认值“”。

例如我有:

module "test_beanstalk" {
  tier = "Worker"
  queue = "myQueue"
///
}

在此,当 tier 设置为 worker 时,我想强制执行 queue 也已设置。在上面的示例中,有一个场景可以省略队列,导致 aws 生成一个通用队列,而不是使用该特定应用程序所需的队列。

此类功能在 TF 中不直接支持。但是您可以使用 locals 强制 TF 出错,如果您的验证失败,一些条件只会导致错误。例如,在你的 test_beanstalk 中你可以有:

variable "tier" {
  default = "Worker"
}

variable "queue" {
  default = ""
}

locals {
  if_queue_given = var.tier == "Worker" && var.queue == "" ? tonumber("queue can't be empty") : 1
}

如果条件 var.tier == "Worker" && var.queue == ""true.

,则 tonumber("queue can't be empty") 将被执行并导致 TF 错误