如何使用Terraform为vSphere虚拟机添加动态数量的数据磁盘
你可以使用Terraform内置的dynamic动态块功能,遍历每个虚拟机实例的disks列表批量生成disk配置块,无需调整现有变量和变量值定义,仅需修改resource.tf中vsphere_virtual_machine资源的磁盘部分即可。
修改后的磁盘配置段
在你现有disk1的配置块之后,新增如下dynamic块:
# 批量遍历disks列表创建额外数据盘 dynamic "disk" { for_each = each.value.disks iterator = disk_item content { label = "disk${disk_item.index + 2}" unit_number = disk_item.index + 2 size = disk_item.value eagerly_scrub = data.vsphere_virtual_machine.template.disks.0.eagerly_scrub thin_provisioned = data.vsphere_virtual_machine.template.disks.0.thin_provisioned } }
逻辑说明
- 你原有代码中已经定义了
unit_number = 0的系统盘、unit_number = 1的110G固定数据盘,所以批量生成的磁盘索引从2开始,避免设备号冲突 disk_item.index为disks列表的遍历索引,从0开始计数,加2后自动生成连续不重复的label和unit_numberdisk_item.value直接读取disks列表中存储的磁盘容量值,其余磁盘参数沿用模板的默认配置,和你现有逻辑保持一致
可选优化
如果你不需要单独维护system_disk1_size参数,可以把110G的磁盘也合并到disks列表中,删除原来的disk1固定配置块,将dynamic块中的索引偏移改为+1即可,进一步简化配置。
内容的提问来源于stack exchange,提问作者sfgroups
相关产品推荐
相关产品推荐

