Terraform 循环浏览地形列表
如果我们创建多个Terraform 循环浏览地形列表,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,如果我们创建多个aws\u实例资源: variable "cluster_size" { type = number default = 4 } variable "private_subnets" { type = list(string) default = ["subnet-a", "subnet-b", "subnet-c"] } resource "aws_
aws\u实例资源:
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个主机。如何循环浏览专用子网列表
所以
- 主机0=子网a
- 主机1=子网b
- 主机2=子网c
- 主机3=子网a(即循环到第一个元件)
例如,Python已经
如何在Terraform的声明性语言中实现循环?自动完成,在序列的末尾环绕。这几乎是该函数的主要用途,因为他们引入了带方括号的切片表示法
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 = element(var.private_subnets, count.index)
}
或者,您可以像在其他编程语言中一样,使用%
运算符取模:
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 % length(var.private_subnets)]
}
第一个选项在需要用方括号切片符号换行时更为常见,在不需要换行时更为常见。我不确定是否有循环函数,但使用var.private_子网[count.index%length(private_子网)]是否有效-即使用计数的剩余部分除以子网的数量)?