使用Terraform创建Azure CycleCloud服务器遇create_option参数错误求助
问题解决:Terraform Azure CycleCloud 数据盘创建选项错误
错误原因
你使用的azurerm_virtual_machine_data_disk_attachment资源,在azurerm provider 3.31.0版本中,create_option仅支持Attach(附加已有托管磁盘)和Empty(创建新的空数据盘)两个值,而你指定了FromImage,这是该资源不支持的选项。
FromImage选项仅适用于在虚拟机资源内部的data_disks块中使用,用来从镜像中部署附带的数据盘。
修复方案
移除独立的azurerm_virtual_machine_data_disk_attachment资源,将数据盘配置直接整合到azurerm_linux_virtual_machine资源的data_disks块中。
修改后的完整代码如下:
terraform { backend "local" {} required_providers { azurerm = { source = "hashicorp/azurerm" version = "3.31.0" } } } provider "azurerm" { features {} } resource "azurerm_linux_virtual_machine" "res-0" { admin_username = "cyclecloud" location = "westus2" name = "cc3" network_interface_ids = ["network_interfaces_id"] resource_group_name = "myrg" size = "Standard_DS1_v2" admin_ssh_key { public_key = "my_public_key" username = "cyclecloud" } boot_diagnostics {} os_disk { caching = "ReadWrite" storage_account_type = "Premium_LRS" } plan { name = "cyclecloud-81" product = "azure-cyclecloud" publisher = "azurecyclecloud" } source_image_reference { offer = "azure-cyclecloud" publisher = "azurecyclecloud" sku = "cyclecloud-81" version = "latest" } # 添加数据盘配置,使用FromImage选项 data_disks { caching = "None" create_option = "FromImage" lun = 0 storage_account_type = "Premium_LRS" } }
关键说明
network_interface_ids字段需要是数组格式,原代码中是字符串,这会导致另一个错误,已一并修正。data_disks块中的create_option = "FromImage"会自动从CycleCloud镜像中部署对应的附加数据盘,无需手动指定磁盘ID。- 如果需要附加已有的托管磁盘,才需要使用
azurerm_virtual_machine_data_disk_attachment资源,并设置create_option = "Attach"。
内容的提问来源于stack exchange,提问作者isb
相关产品推荐
相关产品推荐

