我对如何正确为terraform v0.13.4指定postgres提供程序感到困惑。
注意:最初,此提供程序文档适合v12使一切正常运行:https://www.terraform.io/docs/providers/postgresql/index.html
以及在运行terraform providers
的v0.12上
我会得到类似的东西:
.
├── provider.aws
└── <some module>
├── provider.aws
├── provider.postgresql
├── provider.template
├── provider.terraform
我还可以检查插件箱,并查看下载了哪个版本的插件及其哈希值。 在版本0.13.x中,我们现在需要使用新架构指定提供程序。 在这里,我可以看到2个社区postgresql提供程序..这使我困惑于最初是如何指定另一个。 https://registry.terraform.io/browse/providers?category=database
似乎我正在使用此提供程序?: https://registry.terraform.io/providers/cyrilgdn/postgresql/latest
当我在v0.13.4上运行terraform init
(在--reconfigure之后)时,我的错误消息包含:
Initializing provider plugins...
- terraform.io/builtin/terraform is built in to Terraform
- Using previously-installed hashicorp/template v2.2.0
- Using previously-installed hashicorp/aws v3.11.0
- Using previously-installed terraform-providers/postgresql v1.7.1
- Finding latest version of hashicorp/postgresql...
Error: Failed to install providers
Could not find required providers, but found possible alternatives:
hashicorp/postgresql -> terraform-providers/postgresql
If these suggestions look correct, upgrade your configuration with the
following command:
The following remote modules must also be upgraded for Terraform 0.13
compatibility:
- module.<some value> at
git::git@git<some value>
问题:
如何指定一个Postgres社区提供者而不是另一个? (至少是最初)
为什么要尝试引用hashicorp / posgresql。
为什么告诉我使用terraform-providers/postgresql
而不是cyrilgdn/terraform-provider-postgresql
的源提供程序之类的东西?
最后一个问题,即使添加之后:
terraform {
required_providers {
aws = {
source = "hashicorp/aws"
}
postgresql = {
source = "terraform-providers/postgresql"
}
}
required_version = ">= 0.13"
}
terraform providers
输出
├── provider[registry.terraform.io/hashicorp/aws]
└── <some module.repo>
├── provider[registry.terraform.io/hashicorp/aws]
├── provider[registry.terraform.io/terraform-providers/postgresql]
├── provider[registry.terraform.io/hashicorp/postgresql]
├── provider[terraform.io/builtin/terraform]
├── provider[registry.terraform.io/hashicorp/template]
它确实添加了新的提供程序,但没有删除看似不需要的hashicorp / postgresql,它仍然导致相同的错误消息。有人可以解释如何正确使用建议吗?
非常感谢您的帮助:)
答案 0 :(得分:1)
我认为我的问题与存储库中的.terraform
缓存文件夹以及一些奇怪的后端问题有关。
最终,terraform 0.13upgrade
确实在version.tf中添加了正确的必需提供程序信息。如果您像我一样仍然遇到错误,请尝试执行terraform state list
删除postgres资源,然后删除.terraform / git clean,然后运行terraform init / plan / apply / etc。对我有用。