在 Terraform 中,如何按整数计数重复动态块?

In Terraform, how do I repeat a dynamic block by an integer count?

我需要将 multiple scratch_disk clauses 添加到 Google 云虚拟机的资源中。

我可以使用以下...

resource ... {
  dynamic "scratch_disk" {
    for_each = var.scratch_disk_count
    content {
      interface = "SCSI"
    }
  }
}

但是 var.scratch_disk_count 需要 [ 1, 2, 3, 4 ] 这看起来有点傻。

我尝试用 count = 4 替换 for_each 但 terraform 说它没想到会有 count

是否有从 4 生成 [ 1, 2, 3, 4 ] 的函数,或者只是一些通常更好的方法?

这是问题的简单描述 - 我知道我可以将列表设为 [“SCSI”、“SCSI”、“NVME”] 或类似的。

谢谢。

是的,您可以为此使用 range 函数:

resource ... {
  dynamic "scratch_disk" {
    for_each = range(var.scratch_disk_count)
    content {
      interface = "SCSI"
    }
  }
}

在上面的示例中,var.scratch_disk_count 的值为 4,那么 range 函数的 return 将为 [0, 1, 2, 3],并且产生所需的行为。请注意,以这种方式在动态块中使用 range 函数也很常见。