gpt4 book ai didi

postgresql - 通过 Terraform 创建 RDS 实例后向数据库添加 Postgresql 角色

转载 作者:行者123 更新时间:2023-12-04 02:40:21 25 4
gpt4 key购买 nike

在通过 Terraform 在 RDS 中创建角色后,我试图将角色添加到 Postgresql 数据库。

我有两个独立的模块,一个创建 RDS 实例,一个添加新角色。数据库地址是 persistence 的输出。模块和 persistenceApplicationRole 的输入模块。问题似乎是在创建RDS实例之前运行了Postgresql提供程序,因此地址为空。
我得到的错误是:

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创建数据库地址后获取它。
我在他们的文档 here 中找到了一个与 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
}

最佳答案

1.4.0 release of the Postgresql provider已添加 expected_version您可以使用它来避免在计划时尝试连接到数据库的功能检测。这是在 0.1.1 release 中引入的。不久前,打破了人们能够同时创建底层实例和配置数据库的能力。

使用 expected_version你会做这样的事情:

provider postgresql {
host = var.databaseAddress
username = data.external.root_credentials.result["username"]
password = data.external.root_credentials.result["password"]
superuser = false

expected_version = "10.1"
}

更常见的用例是创建一个 RDS 实例或其他东西并将其插入:
resource "aws_db_instance" "database" {
# ...
}

provider "postgresql" {
version = ">=1.4.0"

host = aws_db_instance.database.address
port = aws_db_instance.database.port
username = aws_db_instance.database.user
password = aws_db_instance.database.password
sslmode = "require"
connect_timeout = 15
superuser = false
expected_version = aws_db_instance.database.engine_version
}

关于postgresql - 通过 Terraform 创建 RDS 实例后向数据库添加 Postgresql 角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59668254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com