我目前正在尝试使用 Terraform 部署Azure Cosmos DB PostgreSQL 集群。
resource "azurerm_cosmosdb_postgresql_cluster" "example" {
name = "example-cluster"
resource_group_name = var.resource_group_name
location = var.resource_group_location
administrator_login_password = ""
coordinator_storage_quota_in_mb = 131072
coordinator_vcore_count = 2
node_count = 0
}
它可以工作,但我想知道是否有一种方法可以在部署结束时输出数据库的连接字符串,以便我可以使用 SQL 初始化脚本来创建所需的所有架构和表?
我对 Terraform 还很陌生,我已经阅读了文档的 “属性参考”,但如果我是对的,就不要读了。
我也已经阅读了这个主题,但它没有字,因为“connection_strings”字段在我的情况下不存在。
感谢您的帮助!
为 postgres sql 的 cosmos db 创建的集群没有用于检索连接字符串的直接属性。
resource "azurerm_cosmosdb_postgresql_cluster" "example" {
name = "examplekcluster"
location = data.azurerm_resource_group.example.location
resource_group_name = data.azurerm_resource_group.example.name
administrator_login_password = "kavyadmin@123"
coordinator_storage_quota_in_mb = 131072
coordinator_vcore_count = 2
node_count = 0
}
主机=“c-..postgres.cosmos.azure.com” 数据库名称=“citus” 用户 =“citus” 密码=“” sslmode =“需要”
格式:
psql "host=c-<cluster>.<uniqueID>.postgres.cosmos.azure.com port=5432 dbname=citus user=citus password={your_password} sslmode=require
一种方法是使用变量来配置/构造连接字符串,并输出值。
output "cosmosdb_connectionstrings" {
value = "host=c-${azurerm_cosmosdb_postgresql_cluster.example.name}.${var.uniqueID}.postgres.cosmos.azure.com port=5432;dbname=citus;user=citus;password=${azurerm_cosmosdb_postgresql_cluster.example.administrator_login_password};sslmode=require"
sensitive = true
}
从门户了解格式,并使用变量和引用资源块以相同的方式配置其他集群。
terraform apply
参考资料:
Terraform 提供商的域名列在
servers => fqdn
下。在 Pulumi,可以在
serverNames => fullyQualifiedDomainName
下找到域名。然后您可以以postgres://citus:${password}@${domainName}:5432/citus?sslmode=require
的形式构建连接字符串。