Обновление Terraform до .12 вызывает проблему с элементом - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть следующий код для создания ENI:

resource "aws_network_interface" "eth0" {
  private_ips     = "10.10.0.1"
  security_groups = ["${aws_security_group.secg1.id}"]
  subnet_id       = "${element(data.aws_subnet_ids.sub01.ids,0)}"

  lifecycle {
    ignore_changes = ["subnet_id"]
  }
}

Выше код перестал работать в версии .12, он работал в .11. Я попробовал следующее, чтобы заменить элемент:

"tolist(data.aws_subnet_ids.trust-sub01.ids)[0]"

и:

"index(data.aws_subnet_ids.trust-sub01.ids)[0]"

оба не работают, это выдает мне ошибку "Идентификатор подсети не существует"

1 Ответ

1 голос
/ 05 ноября 2019

Есть ли причина, по которой вы не просто используете источник данных aws_subnet . Вы можете набрать, какая подсеть будет возвращена с использованием фильтров, а затем использовать атрибут id из этого:

data "aws_subnet" "default" {
  vpc_id = "vpc-0dfc13e14b4e1fa57"
  filter {
    name   = "availability-zone-id"
    values = ["use1-az4"]
  }
}

resource "aws_network_interface" "eth0" {
  private_ips = "172.31.16.1"
  subnet_id = data.aws_subnet.default.id

  lifecycle {
    ignore_changes = ["subnet_id"]
  }
}

Если вам нужно использовать aws_subnet_ids, например, создать сетевой интерфейс для каждой подсети, вы можете сделать что-нибудькак это:

data "aws_subnet_ids" "default" {
  vpc_id = "vpc-0dfc13e14b4e1fa57"
}

resource "aws_network_interface" "eth0" {
  count = length(data.aws_subnet_ids.default.ids)
  subnet_id = element(tolist(data.aws_subnet_ids.default.ids),count.index)

  lifecycle {
    ignore_changes = ["subnet_id"]
  }
}
...