【发布时间】:2020-10-16 23:00:48
【问题描述】:
我有一个现有的 Azure SQL Server 和 1 个最初未创建到弹性池中的数据库。 Terraform 已经部署了它并保留了状态。
# Define SQL Server 1
resource "azurerm_mssql_server" "go-1" {
name = "sql-sandbox-server01
resource_group_name = data.azurerm_resource_group.env-resourcegroup.name
location = data.azurerm_resource_group.env-resourcegroup.location
version = var.azsqlserver1version
administrator_login = var.azsqlserver1sauser
administrator_login_password = random_password.sql-password.result
public_network_access_enabled = "true" # set to false with vNet integration
}
# Define SQL Database 1 - non-ElasticPool
resource "azurerm_mssql_database" "go-1" {
name = "sqldb-sandbox-01"
server_id = azurerm_mssql_server.go-1.id
sku_name = "Basic"
}
由于现在决定使用弹性池(对于这个单一数据库和其他数据库),数据库“sqldb-sandbox-01”现在已经包含表和数据。
我已将此添加到我的 main.tf 文件中……它工作正常,弹性池被创建……
resource "azurerm_sql_elasticpool" "go-1" {
name = "sqlep-sandbox-pool01
resource_group_name = data.azurerm_resource_group.env-resourcegroup.name
location = data.azurerm_resource_group.env-resourcegroup.location
server_name = azurerm_mssql_server.go-1.name
edition = "Basic"
dtu = 50
db_dtu_min = 0
db_dtu_max = 5
pool_size = 5000
}
我的问题是...如何将现有的“sqldb-sandbox-01”移动到 Terraform 中的弹性池中而不破坏数据库并重新创建它?
我尝试了这个,只是添加了单行 elastic_pool_id,但正如文档所述,它将再次破坏/创建数据库...
# Define SQL Database 1 - non-ElasticPool
resource "azurerm_mssql_database" "go-1" {
name = var.azsqldb1name
server_id = azurerm_mssql_server.go-1.id
sku_name = var.azsqldb1sku
elastic_pool_id = azurerm_sql_elasticpool.go-1.id
}
我将不胜感激任何处于相同位置并设法找到方法的人的来信。
在 Azure 门户 GUI 中很容易实现将现有的同一服务器数据库移动到弹性池中,因此我希望在这里也有类似的东西。我进行了一些搜索,但找不到任何特定于这个简单任务的内容。
提前致谢
【问题讨论】:
-
您使用的是什么版本的 terraform 和 azurerm?我知道完成的更高版本有 azurerm_mssql_database(而不是 azurerm_sql_database)
-
TF 版本为 0.12.20,AzureRm 为 1.44.0
标签: azure azure-sql-database terraform terraform-provider-azure