【发布时间】:2022-01-13 14:10:29
【问题描述】:
我目前正在将我们的云基础架构迁移到 Terraform;到目前为止一切顺利。不过,现在我正在尝试设置 SQL Server 应用程序,而我需要镜像以进行迁移的当前设置采用现有资源组对象 ID 并将其附加到唯一的字符串上,例如 sqldatabase23456-resource group object id.
在 arm 中,这是通过以下方式完成的:
"sqlServerAdministratorUsername": "[concat('l', uniqueString(resourceGroup().id))]",
除了我在 Terraform 中制作资源组,所以变量需要使用元参数depends on,因为在资源组存在之前变量值不能存在。在阅读来自 Terraform 的依赖材料时,我认为这是不可能的;它似乎只适用于资源,而不适用于其他项目。文档链接:https://www.terraform.io/docs/language/meta-arguments/depends_on.html
我已经看到这里稍微讨论过:
Terraform, can a resource be passed as a variable into a module?
我很高兴将此 SQL 服务器构建为一个模块。我需要这个以这种方式工作;否则,我们不会迁移到 Terraform。由于我们无法使用 SQL 更改当前设置,因此过多地依赖它。
我需要将值传递到下面 SQL Server 代码示例的登录部分:
resource "azurerm_mssql_server" "example" {
name = "mssqlserver"
resource_group_name = azurerm_resource_group.example.name
location = azurerm_resource_group.example.location
version = "12.0"
administrator_login = var.resourcegroup_withuniquestring
administrator_login_password = var.resourcegroup_withuniquestring_password
minimum_tls_version = "1.2"
tags = {
environment = "production"
}
}
【问题讨论】:
-
你知道
random_id存在于 Terraform 中吗? registry.terraform.io/providers/hashicorp/random/latest/docs/… -
是的,我知道,我在设置中的其他地方使用它。但此设置必须使用资源组 ID 和随机数。
标签: sql-server azure azure-devops terraform terraform-provider-azure