You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform创建Azure VM时遇语法错误,请求协助排查修复

问题修复:AzureRM虚拟机部署中的块类型错误

错误原因

你遇到的Unsupported block type错误,核心是块名称不匹配当前AzureRM Provider版本:在新版AzureRM Provider(3.x及以上)中,azurerm_virtual_machine资源的顶层镜像配置块名称是storage_image_reference,而非你代码里的source_image_reference——后者要么是旧版本Provider的用法,要么属于虚拟机规模集等其他资源。

修复后的代码

将原来的source_image_reference块替换为storage_image_reference,同时推荐添加Windows VM专属的os_profile_windows_config块(启用VM代理等必要配置):

resource "azurerm_virtual_machine" "my_vm" {
  name                  = "my-vm"
  location              = azurerm_resource_group.my_rg.location
  resource_group_name   = azurerm_resource_group.my_rg.name
  network_interface_ids = [azurerm_network_interface.my_nic.id]
    
  vm_size = "Standard_DS2_v2"

  storage_os_disk {
    name              = "myosdisk"
    caching           = "ReadWrite"
    create_option     = "FromImage"
    managed_disk_type = "Premium_LRS"
  }
    
  os_profile {
    computer_name  = "myvm"
    admin_username = "myadmin"
    admin_password = "myp@ssw0rd"
  }

  # 替换原source_image_reference为正确的storage_image_reference
  storage_image_reference {
    publisher = "MicrosoftWindowsServer"
    offer     = "WindowsServer"
    sku       = "2022-Datacenter"
    version   = "latest"
  }

  # Windows VM推荐配置:启用VM代理和自动升级
  os_profile_windows_config {
    provision_vm_agent        = true
    enable_automatic_upgrades = true
  }
}

额外说明

  1. 当storage_os_disk的create_option设为FromImage时,必须通过storage_image_reference块指定镜像的发行商、产品、SKU等信息,否则Terraform无法确定要使用的系统镜像。
  2. 如果你的项目依赖旧版AzureRM Provider(2.x及以下),可以保留source_image_reference块,但更建议升级到最新稳定版Provider以获得更好的兼容性和功能支持。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 07:10:28