Terraform 地形v0.11.xx“;空“U资源”;不总是作为断言
如果动态创建的列表不是空的,我需要引发异常,然后是下面我创建的代码,如果列表不是空的,它应该会失败并出错,正如您看到的从null_资源列表构造的列表,并且它总是抛出断言:Terraform 地形v0.11.xx“;空“U资源”;不总是作为断言,terraform,Terraform,如果动态创建的列表不是空的,我需要引发异常,然后是下面我创建的代码,如果列表不是空的,它应该会失败并出错,正如您看到的从null_资源列表构造的列表,并且它总是抛出断言: resource "null_resource" "empty_string" { count = "10" triggers = { value = "" } } locals { compacted_list_length = "${length(compact(null_resource.em
resource "null_resource" "empty_string" {
count = "10"
triggers = {
value = ""
}
}
locals {
compacted_list_length = "${length(compact(null_resource.empty_string.*.triggers.value))}"
}
resource "null_resource" "is_array_empty" {
count = "${local.compacted_list_length}"
"Lsit is not empty" = true
}
output "compacted_list_length" {
value = "${local.compacted_list_length}"
}
如果您在下面添加注释,输出将显示0
resource "null_resource" "is_array_empty" {
count = "${local.compacted_list_length}"
"Lsit is not empty" = true
}
如果将局部变量设置为:
locals {
compacted_list_length = 0
}
即使是此代码也可以正常工作:
locals {
empty_list = ["", "", ""]
compacted_list_length = "${length(compact(local.empty_list))}"
}
resource "null_resource" "is_array_empty" {
count = "${local.compacted_list_length}"
"Lsit is not empty" = true
}
output "compacted_list_length" {
value = "${local.compacted_list_length}"
}
我的错误在哪里?此断言解决方案不适用于动态值,因为它在验证阶段工作。在此阶段,地形不计算动态值 此断言解决方案很好地验证了中两个示例中建议的变量值。请注意,在这两种情况下,计数值仅基于变量值。这些值在验证阶段可用,而动态值不可用
resource "null_resource" "is_environment_name_valid" {
count = "${contains(var.environment_list, var.env) == true ? 0 : 1}"
"ERROR: The env value can only be: dev, qa or prod" = true
}
我看不出
null\u资源
如何适合这里。似乎应该用其他东西来代替它,但不清楚这里的目标是什么。@MattSchuchard该问题建议使用本地exec
provisioner,这对我来说也更有意义。
resource "null_resource" "is_array_length_correct" {
count = "${length(var.array1) == length(var.array2) ? 0 : 1}"
"array1 and array2 must be the same length" = true
}