【问题标题】:submodule not inheriting providers子模块不继承提供者
【发布时间】:2021-03-10 05:37:43
【问题描述】:

问题总结: 提供程序未传递给子模块

问题描述: 你好,

我正在尝试按照我的 Hashicorp 的建议将提供程序从根传递到子模块模块,尤其是现在我需要使用 for_each 循环遍历根模块。但是,我收到一个错误,表明子模块没有将提供程序传递给它。

有人对我做错了什么有任何指导吗?

感谢您的宝贵时间

错误:

错误:缺少提供程序 module.vpc_peering.provider["registry.terraform.io/hashicorp/aws"].requester

代码: main.tf

# Requestors's credentials
provider "aws" {
  alias  = "requester"
  region = var.aws_region
  assume_role {
    role_arn = local.workspace_role_arn_requester
  }
}


# Accepter's credentials
provider "aws" {
  alias   = "accepter"
  region  = var.aws_region
  assume_role {
    role_arn = local.workspace_role_arn_accepter
  }
}

#################################################
# VPC peer from Admin to Current
#################################################
module "vpc_peering" {
  for_each  = toset(local.accepter_ids)
  source    = "./modules/peer"
  providers = {
    aws.requester = aws.requester
    aws.accepter = aws.accepter
  }

modules/peer/admin-peer.tf

module "vpc_peering_cross_account" {
  source    = "git::https://github.com/YouLend/terraform-aws-vpc-peering-multi-account?ref=aws_profile_accepter_version_0.13"
  providers = {
    aws.requester = aws.requester
    aws.accepter = aws.accepter
  }

【问题讨论】:

    标签: terraform terraform-provider-aws


    【解决方案1】:

    我得到了它的工作,但对于那些遇到同样问题的人,github上的这条评论解释了需要做什么

    https://github.com/hashicorp/terraform/issues/17399#issuecomment-367342717

    本质上,您需要在每个模块中都有一个空的提供程序块来传递提供程序,因此在我上面的示例中,此代码需要进入 modules/peer/admin-peer.tf

    provider "aws" {
    }
    
    provider "aws" {
      alias  = "requester"
    }
    
    provider "aws" {
      alias  = "accepter"
    }
    

    【讨论】:

      猜你喜欢
      • 2021-06-13
      • 2021-07-13
      • 2011-12-19
      • 1970-01-01
      • 1970-01-01
      • 2019-09-21
      • 1970-01-01
      • 2017-03-23
      • 2018-07-24
      相关资源
      最近更新 更多