Terraform部署Azure上SQL Server 2014 VM缺失配置选项及扩展问题
我之前也碰到过一模一样的问题——用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的专属配置面板,和你手动部署的效果完全一致。
验证部署结果
部署完成后,你可以通过以下方式确认扩展是否成功安装:
- 在Azure门户中查看VM的「扩展」选项卡,应该能看到
SqlIaasExtension - 执行Azure CLI命令:
az vm extension list --resource-group <你的资源组名> --vm-name ex-sql-vm --query "[?name=='SqlIaasExtension']"
如果返回非空数组,说明扩展安装成功。
内容的提问来源于stack exchange,提问作者Sidd Thota




