【发布时间】:2020-10-14 07:23:38
【问题描述】:
如果我们创建多个aws_instance资源:
variable "cluster_size" {
type = number
default = 4
}
variable "private_subnets" {
type = list(string)
default = ["subnet-a", "subnet-b", "subnet-c"]
}
resource "aws_instance" "cassandra" {
instance_type = var.instance_type
count = var.cluster_size
ami = var.ami
key_name = var.security_key.name
subnet_id = var.private_subnets[count.index]
}
如您所见,我有 3 个私有子网,但要运行 4 个主机。如何循环浏览private_subnets的列表?
所以
- 主机 0 = 子网-a
- 主机 1 = 子网-b
- 主机 2 = 子网-c
- host 3 = subnet-a (即循环到第一个元素)。
例如 Python 有 itertools.cycle
如何在 Terraform 的声明式语言中实现循环?
【问题讨论】:
-
我不确定是否有循环函数,但会使用 var.private_subnets[count.index % length(private_subnets)] 工作 - 即使用计数除以子网数的余数) ?
标签: terraform terraform-provider-aws