#postgresql #terraform #terraform-provider-aws #terraform0.12
#postgresql #terraform #terraform-provider-aws #terraform0.12
Вопрос:
Я не понимаю, как правильно указать поставщика postgres для версии 0.33.4 terraform.
Примечание: первоначально этот документ поставщика был в порядке для версии 12, чтобы заставить все работать: https://www.terraform.io/docs/providers/postgresql/index.html
и на версии 0.12 при запуске terraform providers
я получу что-то похожее на это:
.
├── 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
Когда я запускаю terraform init
(после —reconfigure) на версии 0.33.4, мое сообщение об ошибке содержит:
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:
Я полагаю, что моя проблема была связана с кешированной .terraform
папкой в репозитории и какой-то странной внутренней проблемой. в конечном итоге terraform 0.13upgrade
did действительно добавил правильную требуемую информацию о поставщике в version.tf .. если вы похожи на меня и все еще получаете ошибки, попробуйте выполнить terraform state list
удаление ресурсов postgres delete .terraform / git clean, а затем запустите terraform init / plan / apply / etc . Сработало для меня.