在 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
函数也很常见。
我需要将 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
函数也很常见。