Я пытаюсь добавить роль в базу данных Postgresql после ее создания в RDS через Terraform.
У меня есть два отдельных модуля, один создает экземпляр RDS, другой добавляет новую роль к нему. Адрес базы данных является выходом модуля persistence
и входом модуля persistenceApplicationRole
. Кажется, проблема в том, что провайдер Postgresql запускается до создания экземпляра RDS, поэтому адрес пуст.
Я получаю ошибку:
Error: Error initializing PostgreSQL client: error detecting capabilities: error PostgreSQL version: dial tcp :5432: connect: connection refused
on ../modules/persistenceApplicationRole/main.tf line 9, in provider "postgresql":
9: provider postgresql {
Запуск модулей отдельно через флаг -target=module.persistence
работает, так как persistenceApplicationRole
выбирает адрес базы данных после ее создания. Я нашел пример с этим точным сценарием для провайдера MySQL в его документации здесь .
# module.persistenceApplicationRole
provider postgresql {
host = var.databaseAddress
username = data.external.root_credentials.result["username"]
password = data.external.root_credentials.result["password"]
superuser = false
}
resource "postgresql_role" "application_role" {
name = data.external.application_credentials.result["username"]
password = data.external.application_credentials.result["password"]
login = true
encrypted_password = true
skip_reassign_owned = true
skip_drop_role = true
}