aws_route_table_association не работает для всех частных * подсетей - terraform - PullRequest
0 голосов
/ 06 июля 2018

Я создал пару подсетей, используя блок ресурсов ниже.

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

  tags {
    Name        = "${var.private}-${format("%01d", count.index + 1)}"
    Environment = "${terraform.workspace}"
  }
} 

После этого я создал таблицу приватных маршрутов eip, nat, private, добавил маршрут в таблицу приватных маршрутов и, наконец, когда я пытаюсь связать таблицу приватных маршрутов с приватными * подсетями, терраформ работает частично, т.е. из 4 подсетей только 2 приватные подсети. связаны с таблицей приватных маршрутов.

resource "aws_route_table_association" "private-subnet-association" {
  subnet_id      = "${element(aws_subnet.private.*.id, count.index)}"
  route_table_id = "${aws_vpc.vpcname.private_route_table.id}"
}

Что мне нужно изменить, чтобы применить сопоставление ко всем частным подсетям.

subnet_id      = "${element(aws_subnet.private*.?.id, count.index)}"

1 Ответ

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

Откуда берется переменная nat_gateway_eip? Вам необходимо ссылаться на полный ресурс в формате TYPE.NAME.ATTR

Это должно выглядеть примерно так ... ${element(aws_eip.RESOURCE_NAME.*.id, count.index)}

Или вам нужно, чтобы любой модуль / файл, который создает nat_gateway, выводил значение eip_id и ссылался на него из удаленного состояния.

Редактировать: Обновление ответа при изменении вопроса.

Вам необходимо создать несколько ассоциаций, чтобы связать эту таблицу маршрутов с различными подсетями.

Ваш текущий блок ассоциации подсети ничего не повторяет. Синтаксис RESOURCE.NAME.*.ATTR не означает «подстановочный знак», он используется для ресурса, содержащего count.

...