我正在尝试创建一个基于变量(当前是布尔值)的动态块。从我到目前为止的阅读来看,我唯一可用的选项似乎是 for_each 和 for (或组合)。我似乎无法使用 count,因为那只是资源级别的函数。
我相信 for 和 foreach 期望一个可迭代的,所以我最好的方法应该是基于 for/if 表达式创建一个可迭代的,尽管我没有太多运气。
实现这一目标的最佳方法是什么?
当前代码是:
dynamic "job_cluster" {
for_each = [for cluster in ["true"] : [] if var.jobs[0].uses_existing_cluster]
content {
job_cluster_key = var.jobs[0].cluster.cluster_key
new_cluster {
#num_workers = 2
node_type_id = data.databricks_node_type.smallest.id
}
}
Run Code Online (Sandbox Code Playgroud)
使用这种方法我没有收到任何错误消息,但是当bool=true
我猜测这里真正的问题是如何根据分配bool给 的类型值为动态块编写条件var.jobs[0].uses_existing_cluster。在这种情况下,我们可以简单地使用三元组来返回一个虚拟值list(for_each动态块中可接受的类型,但由于状态原因而不是资源)以进行true逻辑返回,并使用空值list来进行错误返回以延迟短路评估:
dynamic "job_cluster" {
for_each = var.jobs[0].uses_existing_cluster ? ["this"] : []
content {
job_cluster_key = var.jobs[0].cluster.cluster_key
new_cluster {
#num_workers = 2
node_type_id = data.databricks_node_type.smallest.id
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我还修复了上面几个丢失的终止括号。我认为枚举不是必需的,因为它不用于在您的问题中分配值。另外,如果动态块需要多次迭代,那么range通常使用该函数:
dynamic "job_cluster" {
# two iterations
for_each = var.jobs[0].uses_existing_cluster ? range(1) : []
content {
job_cluster_key = var.jobs[0].cluster.cluster_key
new_cluster {
#num_workers = 2
node_type_id = data.databricks_node_type.smallest.id
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2400 次 |
| 最近记录: |