我们在Azure(生产应用程序)中有一个实时数据库,通过terraform脚本进行管理。
resource "azurerm_sql_server" "application_sql_server" {
name = "name-${var.resource_suffix}"
resource_group_name = var.resource_group_name
location = var.location
version = "12.0"
administrator_login = "<Username>"
administrator_login_password = "<password>"
identity {
type = "SystemAssigned"
}
}
字符串
到目前为止,使用azurerm_sql_database类型的资源来管理数据库。最近遇到HashiCorp引入了一个新资源来取代azurerm_sql_database。新资源是azurerm_mssql_database。如果我们在terraform脚本中简单地将azurerm_sql_database资源替换为azurerm_mssql_database,则会创建新数据库。如何在不影响现有数据库的情况下更改资源类型?
1条答案
按热度按时间qacovj5a1#
当您使用Terraform创建资源时,Terraform状态备份文件将加载到包含已部署资源定义的后端。
创建
"azurerm_sql_databse"
资源后,首先使用terraform state backup
文件将其导入当前资源定义。这意味着旧的Azure资源需要导入到terraform中的新资源定义中。从terraform状态文件中删除旧的资源配置,并在导入后保存文件。
x1c 0d1x的数据
的
现在我想把它从
azurerm_sql_databse
迁移到azurerm_mssql_databse
。通过将先前创建的资源定义导入到当前terraform资源文件中以将其迁移到最新的资源
azurerm_mssql_databse
版本来获取资源定义。字符串
的
现在它被迁移到
azurerm_mssql_database
资源中。使用以下命令从状态文件中删除旧资源。
型
现在运行terraform apply来完成迁移,以达到您的要求。
有关相关迁移,请参阅@Christian皮尔斯的SO。