terraform - 从 for_each 中访问模块(避免循环)
问题描述
我正在使用 for_each 循环创建模块。我想从模块块中访问前一个模块以获取变量,但由于循环,它阻止了我这样做。
locals{
deployment_plan = ["a", "b", "c"]
}
module "tier" {
source = "./modules/deployment"
for_each = { for tier,data in local.tier_config : tier => data }
tier_cfg = each.value
predecessors = [module.tier[local.deployment_plan[index(local.deployment_plan, each.key) - 1]].last_release_phase] : []
}
我在循环访问模块时为模块分配前任时看到错误。虽然我想访问上一个模块。
解决方案
module.tier
在创建之前您无法访问。因此你得到错误。在您的情况下,您必须为每个创建 3 个模块deployment_plan
:
locals{
deployment_plan = ["a", "b", "c"]
}
module "tier_a" {
source = "./modules/deployment"
for_each = { for tier,data in local.tier_config : tier => data }
tier_cfg = each.value
predecessors = []
}
module "tier_b" {
source = "./modules/deployment"
for_each = { for tier,data in local.tier_config : tier => data }
tier_cfg = each.value
predecessors = [module.tier_a.last_release_phase]
}
module "tier_c" {
source = "./modules/deployment"
for_each = { for tier,data in local.tier_config : tier => data }
tier_cfg = each.value
predecessors = [module.tier_b.last_release_phase]
}
推荐阅读
- azure - 天蓝色:附加磁盘上的“结构需要清理错误”
- https - Blazor WASM 托管 - 如何使用 HttpPost 下载文件
- javascript - 如何更改在另一个文件中声明的数组对象
- c# - 控制特定类型或属性的类型信息的发送
- python - Scipy稀疏矩阵 - 仅非零元素的元素乘法和除法
- pandas - groupby 结果到自定义数据框
- macros - 在 Common Lisp 中定义一个定义一组函数和函数调用的宏
- java - 返回由字符串的奇数索引号组成的字符串
- python - django模板比较文件中的数据执行错误的代码路径
- javascript - setTimeout on if else 语句