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

如何在Terraform中向Proxmox模块动态磁盘块原封传入变量内容

解决方案

直接用三层嵌套动态块就能完美匹配你的vm_disk变量结构,生成目标的磁盘配置嵌套块。以下是具体实现:

模块内的资源配置代码

resource "proxmox_vm_qemu" "vm" {
  # 这里填写VM的基础配置(如name、memory、cores、agent等)

  disks {
    # 第一层动态块:遍历virtio/ide/sata/scsi这类控制器类型
    dynamic "${ctrl_type.key}" {
      for_each = var.vm_disk
      content {
        # 第二层动态块:遍历当前控制器下的所有设备(如virtio0/virtio1)
        dynamic "${disk_dev.key}" {
          for_each = ctrl_type.value
          content {
            # 直接生成disk块,自动展开所有配置参数
            disk {
              for k, v in disk_dev.value.disk : k => v
            }
          }
        }
      }
    }
  }
}

说明

  • 第一层动态块用ctrl_type作为迭代器,遍历你vm_disk里的顶层键(比如virtio),自动生成对应的控制器块
  • 第二层动态块用disk_dev作为迭代器,遍历当前控制器下的设备(比如virtio0、virtio1),生成对应设备名的块
  • 最内层的disk块通过for表达式自动展开你定义的所有磁盘参数,完全不用逐个枚举,实现“原封不动传入”的需求

这样配置后,你的vm_disk变量会直接转换成你期望的嵌套结构,不管后续新增控制器类型、设备或者磁盘参数,都不需要修改模块代码。

内容的提问来源于stack exchange,提问作者RiddleMeThis

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 11:01:28