You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 13:31:11