通过 Terraform 在 RDS 中创建角色后,我试图将其添加到 Postgresql 数据库。
我有两个单独的模块,一个创建 RDS 实例,一个向其中添加新角色。数据库地址是persistence
模块的输出和模块的输入persistenceApplicationRole
。问题好像是在创建RDS实例之前运行了Postgresql provider,所以地址为空。
我得到的错误是:
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 {
Run Code Online (Sandbox Code Playgroud)
通过-target=module.persistence
标志单独运行模块是有效的,因为persistenceApplicationRole
一旦创建数据库地址就会获取它。我在此处的文档中为 MySQL Provider 找到了一个包含这种确切场景的示例。
# 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 …
Run Code Online (Sandbox Code Playgroud) postgresql amazon-web-services amazon-rds terraform terraform-provider-aws