Создание нескольких подсетей в нескольких VPC на AWS с использованием Terraform - PullRequest
0 голосов
/ 11 октября 2018

Я хочу создать скрипт terraform, который создает несколько VPC.Затем я хочу, чтобы мой сценарий создал n подсетей во всех VPC.Я хочу сделать это в одном блоке ресурсов подсети.Я могу создавать VPC, используя счетчик внутри блока ресурсов, но не могу использовать его с подсетью.Пожалуйста, помогите.

1 Ответ

0 голосов
/ 11 октября 2018

Нет такого положения для вашего требования непосредственно в 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"]
}
...