Нет такого положения для вашего требования непосредственно в Terraform, но мы можем настроить количество, чтобы выполнить ваше требование.Сначала создайте блок ресурсов, который создает некоторое количество VPC.
resource "aws_vpc" "main" {
count = "${var.vpc_count}"
cidr_block = "${element(var.cidr_prefix, count.index)}.0.0/16"
enable_dns_support = "true"
enable_dns_hostnames = "true"
tags {
Name = "${var.vpc_name}${count.index}"
}
}
Вы также можете использовать интерполяцию для подсчета, передав значение через файл variables.tf или файл .tfvars.
Теперь используйте этот скрипт для создания «подсчета» количества подсетей во всех VPC и равномерного распределения по всем зонам доступности.
resource "aws_subnet" "private_subnet" {
count = "${var.subnet_count * var.vpc_count}"
vpc_id = "${element(aws_vpc.main.*.id, count.index % var.vpc_count)}"
cidr_block = "${element(var.cidr_prefix, count.index)}.${count.index}.0/24"
availability_zone = "${element(data.aws_availability_zones.all.names, count.index)}"
tags {
Name = "${var.vpc_name}-${element(var.availability_zone, count.index)}-${count.index}"
}
}
Вы можете отдельно определить блоки Cidr VPC как список, а блоки CIDR подсетей - каксписок.Хотя я использовал префикс CIDR и использовал count для настройки значения блоков CIDR для подсетей.
Посмотрите на переменную cidr_prefix.
variable "cidr_prefix"{
type = "list"
description = "The first 16 bits of the desired cidr block/s. Note: The number of elements in the list should not be less than the specified count of VPCs."
default = ["172.16", "10.0", "143.14", "100.10"]
}