使用 Terraform 输出 Azure Cosmos DB for PostgreSQL 连接字符串

问题描述 投票:0回答:2

我目前正在尝试使用 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”字段在我的情况下不存在。

感谢您的帮助!

azure terraform azure-cosmosdb terraform-provider-azure
2个回答
0
投票

为 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

参考资料:

  1. 通过CLI检索Postgresql集群的Azure cosmosdb的连接端点 - 代码日志
  2. 如何使用 terraform 创建 azure-cosmos-db-for-postgresql-cluster-with-terraform |StackOverflow

0
投票

Terraform 提供商的域名列在

servers => fqdn

下。在 Pulumi,可以在

serverNames => fullyQualifiedDomainName
下找到域名。
然后您可以以

postgres://citus:${password}@${domainName}:5432/citus?sslmode=require

的形式构建连接字符串。

    

© www.soinside.com 2019 - 2024. All rights reserved.