是否可以在 terraform 0.12 的条件下报告错误?

Is it possible to report error on a condition with terraform 0.12?

原始参考 -

是否还可以像上面的问题一样进行条件检查

resource "null_resource" "condition_checker" {
  count = "${var.variable == 1 ? 0 : 1}"
  "Insert your custom error message" = true
}

类似的格式在 terraform 0.12 和 0.13 中不起作用,我找不到任何关于删除此功能的参考。是否可以像这样检查 0.12 或 0.13?

您在这里指的从来都不是真正的 Terraform 功能,而是利用 Terraform 早期版本中的错误来获得 Terraform 没有明确支持的结果的示例。

话虽如此,现代版本的 Terraform 支持 custom variable validation rules,这使您可以直接在相应的 variable 块中编写变量验证检查。例如:

variable "variable" {
  type = number

  validation {
    condition     = var.variable == 1
    error_message = "Variable value must always be 1."
  }
}

话虽如此,我只是从此处的问题中复制了您人为设计的示例,因此这需要对真实示例进行一些调整。另请注意,变量验证规则只能取决于变量值和其他常量,因此您不能将其用于更复杂的检查,例如涉及两个不同变量的检查。对于这种情况,我建议重构,以便相关的值到达对象类型的单个变量,然后验证该对象是否有效。

目前仍然无法验证需要访问多个变量的输入。 (validation 块只允许访问经过验证的变量。)

使用 external 数据源仍然可以进行 hacky 验证:

data "external" "check_valid" {
  count = var.to_test == true && some_other_condition ? 1 : 0
  
  program = ["sh", "-c", ">&2 echo Condition must be satisfied when to_test is true; exit 1"]
}

在 Terraform 请求批准计划之前检查此条件。

输出结果如下:

Error: failed to execute "sh": Condition must be satisfied when to_test is true


  on variables.tf line 1, in data "external" "check_valid":
  1: data "external" "check_valid" {