为弄清主题,这是关于Terraform Infrastructure作为代码和Azure分支代码,而不是Windows Server / SQL。
通过阅读ms文档并使用Azure门户GUI进行确认。可以使用多个数据磁盘为SQL日志,数据和临时文件创建一个虚拟驱动器。
与每个驱动器使用一个大型超高级SSD相比,这提供了更好的IOPS和更低的成本。
但是,我正在努力使terraform代码能够工作,该代码可以分配各个磁盘并将它们条带化。
我的代码创建了VM,还创建了所需数量的数据磁盘,并使用指定的lun编号将它们附加到VM。
根据调查,您需要附加一个Azure VM扩展,该扩展调用通过各种参数调用SQL代理。文档缺少正确的参数,因此建议您在门户中创建一个参数,并从此处以手臂代码作为模板。
这是事情开始失败的地方。我可以看到VM扩展已创建,可以从门户网站看到它的其他部分(例如维护窗口和工作负载类型类型)已正确设置,但是它不想将磁盘合并到跨接驱动器中。它们仍显示为操作系统中未分配的单个磁盘。
因此,我假设我在涵盖磁盘配置的JSON中有问题。
下面列出了我用于添加SQL代理的terraform代码。为简便起见,我没有包括完整的TF代码,但假定VM创建正常,并且列出的lun处连接了数据磁盘。任何帮助将不胜感激。
resource "azurerm_virtual_machine_extension" "SqlIaaSAgent-sql1" {
name = "${azurerm_windows_virtual_machine.sql1.name}-SqlIaaSAgent-vmext"
virtual_machine_id = azurerm_windows_virtual_machine.sql1.id
publisher = "Microsoft.SqlServer.Management"
type = "SqlIaaSAgent"
type_handler_version = "2.0"
auto_upgrade_minor_version = true
settings = <<SETTINGS
{
"AutoTelemetrySettings": {
"Region": "${var.location}"
},
"AutoPatchingSettings": {
"PatchCategory": "WindowsMandatoryUpdates",
"Enable": true,
"DayOfWeek": "Sunday",
"MaintenanceWindowStartingHour": "2",
"MaintenanceWindowDuration": "60"
},
"KeyVaultCredentialSettings": {
"Enable": false,
"CredentialName": ""
},
"ServerConfigurationsManagementSettings": {
"SQLConnectivityUpdateSettings": {
"ConnectivityType": "Private",
"Port": "1433"
},
"SQLWorkloadTypeUpdateSettings": {
"SQLWorkloadType": "GENERAL"
},
"DiskConfigurationType": "NEW",
"SQLDataSettings": {
"LUNs": "[10,11,12]",
"DefaultFilePath": "S:\\SQLData"
},
"SQLLogSettings": {
"Luns": "[20,21,22]",
"DefaultFilePath": "H:\\SQLLog"
},
"SQLTempDbSettings": {
"Luns": "[28,29]",
"DefaultFilePath": "T:\\SQLTmp"
},
"AdditionalFeaturesServerConfigurations": {
"IsRServicesEnabled": "false"
}
}
}
SETTINGS
}