【问题标题】:Accessing the module from within for_each(avoiding cycle)从 for_each 中访问模块(避免循环)
【发布时间】:2021-05-28 05:37:59
【问题描述】:

我正在使用 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] : []
}

我在循环访问模块时为模块分配前任时看到错误。虽然我想访问上一个模块。

【问题讨论】:

    标签: terraform


    【解决方案1】:

    module.tier 在创建之前无法访问。因此你得到错误。在您的情况下,您必须为每个 deployment_plan 创建 3 个模块:

    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]
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-05
      • 1970-01-01
      • 2020-12-24
      • 1970-01-01
      • 2021-10-04
      • 1970-01-01
      相关资源
      最近更新 更多