缺少Terraform提供程序?我做错了什么?(Terraform v0.13.5)



正如您在下面看到的,我试图将一个特定的提供程序传递给一个模块,然后该模块将其作为主提供程序(aws = aws.some_profile)传递给第二个嵌套模块。

terraform plan上,我得到以下错误:

Error: missing provider module.module_a.provider["registry.terraform.io/hashicorp/aws"].some_profile

我一定是做错了什么,或者认为语言在某种程度上是有效的。想法?

文件结构:


├── main.tf
├── module_a
│   ├── main.tf
│   └── module_b
│       └── main.tf
└── providers.tf

main.tf(顶级(:

module "module_a" {
source = "./module_a"
providers = {
aws.some_profile = aws.some_profile
}
}

main.tf(模块内部_a(:

module "module_b" {
source = "./module_b"
providers = {
aws = aws.some_profile
}
}

main.tf(模块b内部(:

resource "null_resource" "null" {}

供应商.tf:

terraform {
required_providers {
aws = {
source  = "hashicorp/aws"
version = ">= 3.22.0"
}
}
}
provider "aws" {
profile = "default"
region = "us-west-2"
}
provider "aws" {
alias = "some_profile"
profile = "some_profile"
region = "us-west-2"
}

好的,所以在Reddit上得到一些答案后,看起来尽管你将提供者传递到子模块,但你仍然需要在每个子模块中声明所述提供者,如下所示:

provider "aws" { alias = "some_provider" }

它看起来像是一种"地形";所需提供者";块仅在最顶层上是必需的。但是,如果它不起作用,您也可以尝试将它添加到每个子模块中。

希望这能帮助到别人。

相关内容

  • 没有找到相关文章

最新更新