如何在Terraform中为Proxmox虚拟机条件添加第二块磁盘
仅为指定索引的Proxmox虚拟机添加第二块磁盘的Terraform实现方案
你当前的写法会给所有虚拟机都创建virtio1磁盘,只是通过条件设置不同的size,这会导致非索引0的虚拟机生成一块0G的无效磁盘,不符合需求。正确的做法是条件性地创建整个virtio1磁盘设备块,而非仅修改size参数。
可以通过Terraform的dynamic块实现这一点,仅在count.index == 0时生成第二块磁盘:
resource "proxmox_vm_qemu" "workers" { count = 2 name = "${local.vm_worker_name}-${count.index + 1}" target_node = local.target_node vmid = "21${count.index}" agent = 1 os_type = "linux" onboot = true cores = 4 sockets = 1 memory = 4046 scsihw = "virtio-scsi-pci" tags = local.vm_worker_tags disks { virtio { virtio0 { disk { size = "15G" storage = "local-lvm" backup = true } } # 动态生成第二块磁盘,仅为索引0的虚拟机创建 dynamic "virtio1" { for_each = count.index == 0 ? [1] : [] content { disk { size = "50G" storage = "local-lvm" backup = true } } } } ide { ide0 { cdrom { iso = local.talos_linux_iso } } } } network { id = 0 model = "virtio" bridge = "vmbr0" tag = "100" } ipconfig0 = "ip=dhcp" }
关键说明
dynamic "virtio1"块通过for_each控制是否生成:当count.index == 0时,[1]会让块执行一次,创建virtio1磁盘;其他索引时[]会跳过该块,不生成第二块磁盘。- 这种方式从根本上避免了为非目标虚拟机创建无效磁盘,完全符合你的需求。
内容的提问来源于stack exchange,提问作者kegham
相关产品推荐
相关产品推荐

