是否可以在 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" {
原始参考 -
是否还可以像上面的问题一样进行条件检查
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" {