【问题标题】:terraform call a module in a loopterraform 在循环中调用模块
【发布时间】:2021-10-07 17:24:54
【问题描述】:

是否可以从另一个资源、数据、本地等调用具有 for_each 函数的 terraform 模块?

terraform required_version = ">= 0.15.4"


def.tfvar

name                         = "app-stage"
project                      = "stage-xyz"

main.tf


    source             = "../../src/codedeploy"
    name               = var.name
    project            = var.project
    s3_bucket_arn      = var.s3_bucket_arn
    environment        = var.environment
    app_name           = module.codedeploy.app_name

输出.tf

output "app_name" {
  value = aws_codedeploy_app.app.name
}

这个工作,但如果我想创建几个 codedeploy 那么我必须创建几个 tfvar 文件并应用它们。而不是这样做,我想创建一个 tfvar 文件并在 main.tf 文件中使用 for_each 函数。


abce.tfvar

codeDeploy_records = {
  "app-stage= {
      project                      = "stage-xyz",
    },
  "app-qa= {
      project                      = "qa-xyz",
   }
  }

main.tf

module "codedeploy" {
   
    for_each    = var.codeDeploy_records
        source             = "../../src/codedeploy"
        name               = each.key
        project            = each.value.project
        app_name           = module.codedeploy.app_name

那个人给出了以下错误。 此对象没有名为“app_name”的属性。

我们可以从下面调用一个模块吗?

local test {
for_each    = var.codeDeploy_records
        source             = "../../src/codedeploy"
        name               = each.key
        project            = each.value.projec
        app_name           = module.codedeploy.app_name 

}

module "codedeploy" {
   
    

【问题讨论】:

  • 我仔细检查了我之前的答案,是的,你可以这样做。对不起,我错了,你是对的。不过,完整的工作示例会很有用。

标签: amazon-web-services terraform aws-code-deploy


【解决方案1】:

在这种情况下我的解决方案

app_name           = module.codedeploy_app[each.key].app_name

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-06
    • 1970-01-01
    • 2021-10-04
    • 2021-06-26
    • 1970-01-01
    • 2021-11-25
    • 2022-01-02
    • 2021-12-04
    相关资源
    最近更新 更多