Ste*_*ley 6 terraform terraform-provider-aws terraform0.12+
正如您在下面看到的,我尝试将特定的提供程序传递给模块,然后该模块将其作为主提供程序传递(aws = aws.some_profile)给第二个嵌套模块。
我收到terraform plan以下错误:
Error: missing provider module.module_a.provider["registry.terraform.io/hashicorp/aws"].some_profile
我一定是犯了一些基本错误,或者假设该语言以一种它不工作的方式工作。有想法吗?
\n文件结构:
\n\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 main.tf\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 module_a\n\xe2\x94\x82 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 main.tf\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 module_b\n\xe2\x94\x82 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 main.tf\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 providers.tf\nRun Code Online (Sandbox Code Playgroud)\nmain.tf(顶层):
\nmodule "module_a" {\n source = "./module_a"\n providers = {\n aws.some_profile = aws.some_profile\n }\n}\nRun Code Online (Sandbox Code Playgroud)\nmain.tf(在 module_a 内):
\nmodule "module_b" {\n source = "./module_b"\n providers = {\n aws = aws.some_profile\n }\n}\nRun Code Online (Sandbox Code Playgroud)\nmain.tf(模块 b 内部):
\nresource "null_resource" "null" {}\nRun Code Online (Sandbox Code Playgroud)\n提供商.tf:
\nterraform {\n required_providers {\n aws = {\n source = "hashicorp/aws"\n version = ">= 3.22.0"\n }\n }\n}\n\nprovider "aws" {\n profile = "default"\n region = "us-west-2"\n}\n\nprovider "aws" {\n alias = "some_profile"\n profile = "some_profile"\n region = "us-west-2"\n}\nRun Code Online (Sandbox Code Playgroud)\n
好吧,在 Reddit 上得到一些答案后,看起来虽然您将提供程序传递给子模块,但您仍然需要在每个子模块中声明所述提供程序,如下所示:
provider "aws" { alias = "some_provider" }
Run Code Online (Sandbox Code Playgroud)
似乎 terraform“所需提供者”块仅在最顶层需要。但是,如果它不起作用,您也可以尝试将其添加到每个子模块中。
希望这可以帮助别人。
| 归档时间: |
|
| 查看次数: |
18132 次 |
| 最近记录: |