gpt4 book ai didi

terraform - 子模块不继承提供者

转载 作者:行者123 更新时间:2023-12-04 08:30:41 28 4
gpt4 key购买 nike

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

问题描述:你好,

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

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

谢谢你的时间

错误:

Error: missing providermodule.vpc_peering.provider["registry.terraform.io/hashicorp/aws"].requester

代码:主.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
}

最佳答案

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

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

本质上你需要在每个模块中有一个空的提供者 block 来传递提供者,所以在我上面的例子中,这段代码需要进入 modules/peer/admin-peer.tf

provider "aws" {
}

provider "aws" {
alias = "requester"
}

provider "aws" {
alias = "accepter"
}

关于terraform - 子模块不继承提供者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65037305/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com