You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Terraform部署Azure上SQL Server 2014 VM缺失配置选项及扩展问题

解决Terraform部署Azure SQL Server 2014 VM无SQL配置的问题

我之前也碰到过一模一样的问题——用Terraform部署了SQL Server镜像的VM后,Azure门户里完全看不到SQL Server的专属配置选项,查了一圈才发现核心问题:你虽然用了SQL Server的镜像,但没安装Azure的SqlIaasExtension扩展。这个扩展是Azure用来管理SQL Server VM的核心组件,门户手动部署会自动添加,但Terraform手动部署镜像时需要我们自己配置。

先纠正你的Azure CLI命令错误

你之前找扩展的命令用错了发布者,正确的SqlIaasExtension发布者是Microsoft.SqlServer.Management,不是Microsoft.Compute。正确的查询命令应该是:

az vm extension image list-names --publisher Microsoft.SqlServer.Management --location centralus --query "[?starts_with(name, 'SqlIaasExtension')]"

执行后应该能看到SqlIaasExtension的条目,记得加上--location参数,避免跨区域的版本差异影响结果。

解决方案1:给现有VM添加SqlIaasExtension

如果你想继续用现有的Windows VM模块,只需要在Terraform代码中添加一个azurerm_virtual_machine_extension资源,手动安装该扩展:

resource "azurerm_virtual_machine_extension" "sql_iaas_extension" {
  name                 = "SqlIaasExtension"
  virtual_machine_id   = module.ms-sql-vm.vm_id # 替换为你的VM资源ID,确保模块输出了vm_id字段
  publisher            = "Microsoft.SqlServer.Management"
  type                 = "SqlIaasExtension"
  type_handler_version = "2.0" # 针对SQL Server 2014,推荐使用2.x版本(可通过之前的az命令确认最新兼容版本)
  location             = "centralus"

  # 基础配置,可根据你的需求调整
  settings = jsonencode({
    "AutoTelemetrySettings" : {
      "Region" : "centralus"
    },
    "SQLManagement" : {
      "SQLInstanceName" : "MSSQLSERVER" # 默认实例名,若使用命名实例请修改
    },
    "AutoBackupSettings" : {
      "Enable" : false # 按需开启自动备份功能
    }
  })

  protected_settings = jsonencode({}) # 无需加密配置时留空即可

  depends_on = [module.ms-sql-vm] # 确保VM创建完成后再安装扩展
}

解决方案2:使用专门的azurerm_sql_virtual_machine资源(推荐)

AzureRM提供了专门的azurerm_sql_virtual_machine资源,它会自动处理SqlIaasExtension的安装和配置,和门户手动部署的SQL Server VM体验完全一致,更符合Azure SQL VM的最佳实践。

用法示例:

# 假设你的模块已经创建了基础Windows VM(使用SQL Server镜像)
resource "azurerm_sql_virtual_machine" "sql_vm" {
  name                 = "ex-sql-vm-sql-config"
  resource_group_name  = module.ms-sql-vm.vm_resource_group_name
  virtual_machine_id   = module.ms-sql-vm.vm_id
  sql_license_type     = "PAYG" # 按需选择:PAYG(按需付费)或 AHUB(自带许可)
  location             = "centralus"

  # 可选:配置SQL Server的自动补丁、备份等功能
  sql_server_configuration {
    auto_patching_enabled        = true
    auto_patching_day_of_week    = "Sunday"
    auto_patching_start_time     = 2 # 凌晨2点开始补丁安装
    auto_patching_duration       = 60 # 补丁时长60分钟
    auto_backup_enabled          = true
    auto_backup_retention_period = 7 # 备份保留7天
  }
}

使用这个资源后,Terraform会自动安装SqlIaasExtension,并且在Azure门户中显示SQL Server的专属配置面板,和你手动部署的效果完全一致。

验证部署结果

部署完成后,你可以通过以下方式确认扩展是否成功安装:

  1. 在Azure门户中查看VM的「扩展」选项卡,应该能看到SqlIaasExtension
  2. 执行Azure CLI命令:
az vm extension list --resource-group <你的资源组名> --vm-name ex-sql-vm --query "[?name=='SqlIaasExtension']"

如果返回非空数组,说明扩展安装成功。

内容的提问来源于stack exchange,提问作者Sidd Thota

火山引擎 最新活动