我正在尝试使用Terraform扩展SQL Server的"data" / "log"磁盘。
我们目前使用Terraform来部署以下内容(用于测试部署的一些片段),它工作完美,并且可以完美地部署机器:
resource "azurerm_windows_virtual_machine" "vm_sql" {
name = "vm-...mssql01"
computer_name = "vm-mssql01"
resource_group_name = REDACTED
location = REDACTED
size = "Standard_D4as_v4"
admin_username = REDACTED
admin_password = REDACTED
license_type = "Windows_Server"
network_interface_ids = [
etc ...
}
resource "azurerm_managed_disk" "data_disk" {
name = "dsk-${azurerm_windows_virtual_machine.vm_sql.name}-data"
location = REDACTED
resource_group_name = REDACTED
storage_account_type = "StandardSSD_LRS"
create_option = "Empty"
disk_size_gb = "512"
}
resource "azurerm_virtual_machine_data_disk_attachment" "data-disk" {
managed_disk_id = azurerm_managed_disk.data_disk.id
virtual_machine_id = azurerm_windows_virtual_machine.vm_sql.id
lun = "2"
caching = "ReadWrite"
}
resource "azurerm_mssql_virtual_machine" "sql_setup" {
*all other parameters, shorted for readability*
storage_configuration {
disk_type = "NEW"
storage_workload_type = "GENERAL"
data_settings {
default_file_path = "F:\\data"
luns = [2]
}
log_settings {
default_file_path = "F:\\log"
luns = [2]
}
temp_db_settings {
default_file_path = "D:\\tempdb"
luns = []
}
当然,我们可以使用 Portal 扩展磁盘,这将添加一个额外的磁盘,并将其添加到 VM 中的存储池中,但是我的 Terraform 代码无法再次使用。
我尝试了以下操作:
1. 添加并附加一个额外的托管磁盘 (lun 3) 之后,我尝试了以下操作,并收到了来自 API 的以下错误。
storage_configuration {
disk_type = "EXTEND"
storage_workload_type = "GENERAL"
data_settings {
default_file_path = "F:\\data"
luns = [2,3]
}
log_settings {
default_file_path = "F:\\log"
luns = [2,3]
}
temp_db_settings {
default_file_path = "D:\\tempdb"
luns = []
}
错误:InvalidExtendPayload" 消息="无效的SQL存储设置扩展负载。一次只支持扩展一个驱动器。
storage_configuration {
disk_type = "EXTEND"
storage_workload_type = "GENERAL"
data_settings {
default_file_path = "F:\\data"
luns = [3]
}
}
创建 Sql 虚拟机时出错(Sql 虚拟机名称为 "vm-iss-sand-mssql01" / 资源组为 "rg-iss-sand-database"):sqlvirtualmachine.SQLVirtualMachinesClient#CreateOrUpdate: 发送请求失败:StatusCode=0 -- 原始错误信息:Code="InvalidArgument" Message="无效参数 'DefaultFilePath'。"
我尝试了许多选项和组合,但最终都未能扩展 VM 和 SQL 配置。 我开始觉得这在 Terraform 中可能不可行。 我使用的是最新的 azurerm 提供程序等。