for-loop - 在 Terraform 中,如何按整数计数重复动态 block ?

标签 for-loop terraform

我需要添加 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/

相关文章:

地形数据结构

Terraform - 创建 OpenStack 负载均衡器 : Resource not found 时出错

azure - 设置 AKS 群集静态 IP、负载均衡器和入口 Controller 的正确方法是什么?

terraform - 如何让 Terraform 中的 Docker 提供程序在尝试连接之前等待地址可用?

Python:列表迭代仅返回最后一个值

for-loop - Rust 正在跳过 for 循环

c++ - 哪些编程语言使用它以及它是如何工作的

terraform - 允许使用 terraform 访问一个 AWS 安全组到另一个

java - 嵌套循环使字符居中

c - 当数字中的数字出现两次时打开标志 - C