了解Postgres提供程序/ terraform注册表-升级v0.13

时间:2020-10-21 14:52:42

标签: postgresql terraform terraform-provider-aws terraform0.12+

我对如何正确为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,它仍然导致相同的错误消息。有人可以解释如何正确使用建议吗?

非常感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

我认为我的问题与存储库中的.terraform缓存文件夹以及一些奇怪的后端问题有关。 最终,terraform 0.13upgrade确实在version.tf中添加了正确的必需提供程序信息。如果您像我一样仍然遇到错误,请尝试执行terraform state list删除postgres资源,然后删除.terraform / git clean,然后运行terraform init / plan / apply / etc。对我有用。