Как перебрать подсети в ресурсе используя count - PullRequest
0 голосов
/ 24 июня 2019

В Terraform 0.11.14 было возможно выполнить цикл по различным подсетям, найденным ранее в переменной данных (см. https://www.terraform.io/docs/providers/aws/d/subnet_ids.html):

data "aws_subnet_ids" "private" {
  vpc_id = "${var.vpc_id}"

  tags = {
    Tier = "Private"
  }
}

resource "aws_instance" "app" {
  count         = "3"
  ami           = "${var.ami}"
  instance_type = "t2.micro"
  subnet_id     = "${element(data.aws_subnet_ids.private.ids, count.index)}"
}

Однако, поскольку я перешел на Terreform 0.12, этот синтаксис приводит к следующей ошибке:

Error: Error in function call

  on ..\..\modules\elk\es-proxy-server.tf line 21, in resource "aws_spot_instance_request" "kibana_proxy":
  21:   subnet_id = "${element(data.aws_subnet_ids.private.ids, count.index)}"
    |----------------
    | count.index is 0
    | data.aws_subnet_ids.private.ids is set of string with 2 elements

Call to function "element" failed: cannot read elements from set of string.

Я пытался использовать функцию tolist и выяснить, как воспользоваться следующими https://www.terraform.io/upgrade-guides/0-12.html#working-with-count-on-resources без какого-либо успеха.

1 Ответ

1 голос
/ 24 июня 2019

Вы должны быть в состоянии сделать:

subnet_id     = "${tolist(data.aws_subnet_ids.private.ids)[count.index]}"
...