我正在使用 terraform 部署 SQL 托管实例,并且需要将其附带的 4 个连接字符串存储在 azure key Vault 中。根据 SQL 托管实例的 terraform 文档: https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/mssql_managed_instance 连接字符串不是导出的属性,因此不能只进行输出并引用它。我如何识别这些连接字符串以将它们存储在密钥保管库中?
如果 terraform 无法实现,我愿意接受 powershell/arm 解决方案
一般来说,您可以使用 terraform 将任何秘密存储在密钥保管库中,如下所示:
resource "azurerm_key_vault_secret" "example" {
name = "the-secret-name"
value = "the-secret-value"
key_vault_id = var.keyvault_id
}
每个连接字符串都遵循一定的语法,因此我会根据名称、管理员用户和管理员密码将它们组合在一起作为字符串,并将它们添加到密钥保管库中,类似于:
locals {
username = "admin"
password = "abc"
}
resource "azurerm_mssql_managed_instance" "example" {
name = "managedsqlinstance"
resource_group_name = var.resource_group_name
location = var.location
administrator_login = local.username
administrator_login_password = local.password
...
}
resource "azurerm_key_vault_secret" "example" {
name = "sql-connectionstring"
value = "Server=tcp:${azurerm_mssql_managed_instance.example.name}.database.windows.net,1433;Persist Security Info=False;User ID=${local.username};Password=${local.password};MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
key_vault_id = var.keyvault_id
}
要查找连接字符串及其确切语法,您应该查看已在 azure 门户中创建的 sql 托管实例。
@mattymac,你能用 PowerShell 修复剩下的部分吗?如果是的话你愿意分享你的脚本吗?我也面临同样的问题。