当发生需要销毁数据库并通过启用加密或重命名数据库等更新重新创建的更改时,我在 Terraform 提供程序配置中动态检索 RDS 集群端点时遇到问题。
这是我的 Terraform 配置的相关部分:
provider "postgresql" {
host = module.rds_cluster.endpoint
port = var.db_port
database = var.db_name
username = var.admin_user
password = var.admin_password
superuser = false
expected_version = var.engine_version
}
尽管配置
module.rds_cluster.endpoint
来动态获取 RDS 集群端点,Terraform 仍将其替换为本地主机 IP 地址。但是,当我对端点进行硬编码时,它工作得很好。
错误:
Error: Error connecting to PostgreSQL server (scheme: postgres): dial tcp 127.0.0.1:5432: connect: connection refused
错误来自以下资源,
resource "postgresql_role" "iam_user" {
name = var.db_user
login = true
roles = ["rds_iam"]
create_database = true
create_role = true
inherit = true
depends_on = [
module.rds_cluster
]
}
详情:
我正在使用, rds_cluster==1.3.1
Terraform 和提供商信息:
Terraform v1.5.5
on darwin_arm64
+ provider registry.terraform.io/cyrilgdn/postgresql v1.22.0
+ provider registry.terraform.io/hashicorp/archive v2.4.2
+ provider registry.terraform.io/hashicorp/aws v5.41.0
+ provider registry.terraform.io/hashicorp/kubernetes v2.27.0
+ provider registry.terraform.io/hashicorp/null v3.2.2
+ provider registry.terraform.io/hashicorp/random v3.6.0
+ provider registry.terraform.io/hashicorp/tls v4.0.5
任何有关故障排除或解决问题的见解都是有帮助的,值得赞赏!
awspostgres
模式。以下是向 postgresql
提供程序提供配置的方法:
provider "postgresql" {
host = split(":", module.rds_cluster.endpoint)[0]
port = split(":", module.rds_cluster.endpoint)[1]
scheme = "awspostgres"
username = var.admin_user
password = var.admin_password
superuser = false
}