gpt4 book ai didi

sql-server - Terraform - Azure - 一起使用 "azurerm_windows_virtual_machine"和 "azurerm_mssql_virtual_machine"- 但 SQL 存储未配置

转载 作者:行者123 更新时间:2023-12-03 01:24:57 28 4
gpt4 key购买 nike


这是关于 Azure 上的 Terraform。在我之前的项目中,我使用旧的“azurerm_virtual_machine”资源+ ARM 模板来配置“Microsoft.SqlVirtualMachine/SqlVirtualMachines”资源并配置数据磁盘、luns。

这效果很好。
在我当前的项目中,我们正在同时使用较新的资源“azurerm_windows_virtual_machine”+“azurerm_mssql_virtual_machine”来启动 SQL VM。然而,到目前为止,它一直是一个哑弹。

Terraform 文档示例使用旧资源“azurerm_windows_virtual_machine”。

问题

  • 在“azurerm_windows_virtual_machine”中找不到描述数据磁盘和lun id的方法,结果

  • 当我没有在“azurerm_mssql_virtual_machine”中提及 storage_configuration block 时,Azure 门户显示“在卷列表中找不到驱动器”。在 SQL 虚拟机资源(不是虚拟机资源)> 配置部分下。我已附上屏幕截图。

  • 请参阅以下错误: enter image description here

  • 如果我尝试在“azurerm_mssql_virtual_machine”的 storage_configuration block 中提及​​数据磁盘和 lun,则配置会失败并出现错误

    creating Sql Virtual Machine (Sql Virtual Machine Name "ASQLVM" / Resource Group "a-resource-group"): 
    sqlvirtualmachine.SQLVirtualMachinesClient#CreateOrUpdate: Failure sending request: StatusCode=0 --
    Original Error: Code="InvalidDefaultFilePath" Message="Invalid Default File Path"

有没有一种好方法可以同时使用新的“azurerm_windows_virtual_machine”+“azurerm_mssql_virtual_machine”来配置 SQL 虚拟机?

最佳答案

查看以下代码。如果您还没有成功,我希望它能回答您的问题。

resource "azurerm_windows_virtual_machine" "vm" {    
count = length(var.instances)
name = upper(element(var.instances, count.index))
location = azurerm_resource_group.resourcegroup[count.index].location
resource_group_name = azurerm_resource_group.resourcegroup[count.index].name
network_interface_ids = [azurerm_network_interface.nic[count.index].id]
size = var.instancesize
zone = var.instancezone
admin_username = var.vmadmin
admin_password = data.azurerm_key_vault_secret.vmadminpwd.value
enable_automatic_updates = "false"
patch_mode = "Manual"
provision_vm_agent = "true"
tags = var.tags

source_image_reference {
publisher = "MicrosoftSQLServer"
offer = "sql2019-ws2019"
sku = "enterprise"
version = "latest"
}

os_disk {
name = "${element(var.instances, count.index)}-osdisk"
caching = "ReadWrite"
storage_account_type = "StandardSSD_LRS"
disk_size_gb = 250
}
}

# add a data disk - we were going to iterate through a collection, but this is easier for now
resource "azurerm_managed_disk" "datadisk" {
count = length(var.instances)
name = "${azurerm_windows_virtual_machine.vm[count.index].name}-data-disk01"
location = azurerm_resource_group.resourcegroup[count.index].location
resource_group_name = azurerm_resource_group.resourcegroup[count.index].name
storage_account_type = "Premium_LRS"
zones = [var.instancezone]
create_option = "Empty"
disk_size_gb = 1000
tags = var.tags
}

resource "azurerm_virtual_machine_data_disk_attachment" "datadisk_attach" {
count = length(var.instances)
managed_disk_id = azurerm_managed_disk.datadisk[count.index].id
virtual_machine_id = azurerm_windows_virtual_machine.vm[count.index].id
lun = 1
caching = "ReadWrite"
}

# add a log disk - we were going to iterate through a collection, but this is easier for now
resource "azurerm_managed_disk" "logdisk" {
count = length(var.instances)
name = "${azurerm_windows_virtual_machine.vm[count.index].name}-log-disk01"
location = azurerm_resource_group.resourcegroup[count.index].location
resource_group_name = azurerm_resource_group.resourcegroup[count.index].name
storage_account_type = "Premium_LRS"
zones = [var.instancezone]
create_option = "Empty"
disk_size_gb = 500
tags = var.tags
}

resource "azurerm_virtual_machine_data_disk_attachment" "logdisk_attach" {
count = length(var.instances)
managed_disk_id = azurerm_managed_disk.logdisk[count.index].id
virtual_machine_id = azurerm_windows_virtual_machine.vm[count.index].id
lun = 2
caching = "ReadWrite"
}

# configure the SQL side of the deployment
resource "azurerm_mssql_virtual_machine" "sqlvm" {
count = length(var.instances)
virtual_machine_id = azurerm_windows_virtual_machine.vm[count.index].id
sql_license_type = "PAYG"
r_services_enabled = true
sql_connectivity_port = 1433
sql_connectivity_type = "PRIVATE"
sql_connectivity_update_username = var.sqladmin
sql_connectivity_update_password = data.azurerm_key_vault_secret.sqladminpwd.value

#The storage_configuration block supports the following:
storage_configuration {
disk_type = "NEW" # (Required) The type of disk configuration to apply to the SQL Server. Valid values include NEW, EXTEND, or ADD.
storage_workload_type = "OLTP" # (Required) The type of storage workload. Valid values include GENERAL, OLTP, or DW.

# The storage_settings block supports the following:
data_settings {
default_file_path = var.sqldatafilepath # (Required) The SQL Server default path
luns = [azurerm_virtual_machine_data_disk_attachment.datadisk_attach[count.index].lun]
}

log_settings {
default_file_path = var.sqllogfilepath # (Required) The SQL Server default path
luns = [azurerm_virtual_machine_data_disk_attachment.logdisk_attach[count.index].lun] # (Required) A list of Logical Unit Numbers for the disks.
}

# temp_db_settings {
# default_file_path = var.sqltempdbfilepath #- (Required) The SQL Server default path
# luns = [3] #- (Required) A list of Logical Unit Numbers for the disks.
# }

}

}

关于sql-server - Terraform - Azure - 一起使用 "azurerm_windows_virtual_machine"和 "azurerm_mssql_virtual_machine"- 但 SQL 存储未配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66809817/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com