使用Terraform为已部署VMware Server添加磁盘配置报错求助
问题原因
vsphere_virtual_disk资源仅负责创建独立的虚拟磁盘文件,它不支持嵌套disk块来配置挂载逻辑。disk块是vsphere_virtual_machine资源的专属配置项,用于将已创建的虚拟磁盘挂载到指定虚拟机上。你把挂载配置放错了资源块,因此才会触发Blocks of type "disk" are not expected here错误。
正确配置方案
需要拆分两步操作:先创建独立虚拟磁盘,再在目标虚拟机资源中添加挂载配置。
1. 创建独立虚拟磁盘(保留你的基础配置)
resource "vsphere_virtual_disk" "disk_2" { vmdk_path = "${var.name}.2.vmdk" size = 112 datacenter = "${var.datacenter}" datastore = "${var.storage}" type = "thin" }
2. 在虚拟机资源中添加磁盘挂载配置
找到你已部署的vsphere_virtual_machine资源块,在其中插入disk块来挂载刚才创建的磁盘:
resource "vsphere_virtual_machine" "your_vm" { # 原有虚拟机配置(名称、CPU、内存、网络等) name = var.vm_name resource_pool_id = data.vsphere_resource_pool.pool.id datastore_id = data.vsphere_datastore.datastore.id # ... 其他原有配置 ... # 添加磁盘挂载块 disk { attach = true path = vsphere_virtual_disk.disk_2.vmdk_path label = "diskshared" unit_number = 2 datastore_id = data.vsphere_datastore.datastore.id } }
关键注意事项
unit_number要确保和虚拟机现有磁盘不冲突(通常系统盘为0,数据盘从1开始递增)- 如果是用于集群的共享磁盘,需额外添加
sharing = "sharingMultiWriter"参数 - 确保
datastore_id与虚拟磁盘所在的存储资源一致
内容的提问来源于stack exchange,提问作者user312307
相关产品推荐
相关产品推荐

