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 } }
额外说明
- 当
storage_os_disk的create_option设为FromImage时,必须通过storage_image_reference块指定镜像的发行商、产品、SKU等信息,否则Terraform无法确定要使用的系统镜像。 - 如果你的项目依赖旧版AzureRM Provider(2.x及以下),可以保留
source_image_reference块,但更建议升级到最新稳定版Provider以获得更好的兼容性和功能支持。
内容的提问来源于stack exchange,提问作者Venki
相关产品推荐
相关产品推荐

