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

Tim*_*ock 3 for-loop terraform

我需要向 Google Cloud 虚拟机的资源添加多个scratch_disk子句。

我可以使用以下...

resource ... {
  dynamic "scratch_disk" {
    for_each = var.scratch_disk_count
    content {
      interface = "SCSI"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

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

我尝试替换for_each为,count = 4但 terraform 说它没想到count那里。

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

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

谢谢。

Mat*_*ard 6

是的,您可以使用range该功能:

resource ... {
  dynamic "scratch_disk" {
    for_each = range(var.scratch_disk_count)
    content {
      interface = "SCSI"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

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