Terraform: Как создать несколько подсетей aws из одного блока ресурсов? - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь создать несколько подсетей из одного блока ресурсов и получаю следующую ошибку

Ошибка: aws_subnet.private: cidr_block должен быть одним значением, а не списком

main.tf

resource "aws_subnet" "private" {
  vpc_id                  = "${aws_vpc.vpcname.id}"
  cidr_block              = "${var.private_subnet}"
  availability_zone       = "${data.aws_availability_zones.available.names[count.index]}"
  map_public_ip_on_launch = false

  tags {
    Name        = "${var.private}"
    Environment = "${terraform.workspace}"
  }
}

variable.tf

variable "private_subnet" {
  type    = "list"
  default = []
}

dev.tfvars

private_subnet = ["10.0.2.0/24", "10.0.3.0/24"]

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Вы должны создать несколько ресурсов aws_subnet, используя аргумент count, чтобы создать один ресурс для каждой записи в вашем списке var.private_subnet:

resource "aws_subnet" "private" {
  count                   = "${length(var.private_subnet)}"
  vpc_id                  = "${aws_vpc.vpcname.id}"
  cidr_block              = "${var.private_subnet[count.index]}"
  availability_zone       = "${data.aws_availability_zones.available.names[count.index]}"
  map_public_ip_on_launch = false
}

Это расширяет один ресурс aws_subnet на два, каждый с немного отличающимися значениями, основанными на перечислении count, когда каждый блок ресурса оценивается terraform.

0 голосов
/ 05 июля 2018

private_subnet - это список, поэтому вы должны выбрать один элемент, например,

cidr_block = "${element(var.private_subnet,count.index)}"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...