我需要添加 multiple scratch_disk
clauses到 Google Cloud VM 的资源。
我可以使用以下...
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
函数的返回值为 [0, 1, 2, 3]
,并将产生所需的行为。请注意,以这种方式在动态 block 中使用 range
函数也很常见。
关于for-loop - 在 Terraform 中,如何按整数计数重复动态 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71953012/