Terraform списки в версии 0.12+ - PullRequest
1 голос
/ 22 июня 2019

Я обновляюсь с terraform 0.11.4 до 0.12.2. Я исправил большинство вещей, следуя этому руководству , но я не могу найти решение для следующего выражения списка.

variable "subnetIds" {
  type = "list"
}

resource "aws_lb" "main" {
  name            = "myload-balancer"
  subnets         = ["${var.subnetIds}"] # <-- problem row
  security_groups = ["${var.securityGroupIds}"]
}

Сообщение об ошибке:

  on main.tf line 10, in resource "aws_lb" "main":
  10:   subnets         = ["${var.subnetIds}"]

Inappropriate value for attribute "subnets": element 0: string required.

Если я уберу скобки [], я получу следующую ошибку:

  on main.tf line 10, in resource "aws_lb" "main":
  10:   subnets         = "${var.subnetIds}"

Inappropriate value for attribute "subnets": incorrect set element type:
string required.

Как правильно выразить subnets для ресурса aws_lb, используя terraform 0,12 +?

Ответы [ 2 ]

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

Нашел проблему.subnetIds были переданы с выхода предыдущего слоя (удаленное состояние).

subnetIds = ["${data.terraform_remote_state.eventsource.outputs.subnetIds}"]

По сути это означает, что переменная subnetIds стала списком списков.

После измененияна это все работает:

subnetIds = data.terraform_remote_state.eventsource.outputs.subnetIds
1 голос
/ 23 июня 2019

Хотя вы не показываете типичное значение для var.securityGroupIds и var.subnetIds, я предполагаю, что это оба списка.В Terraform <0.12 вам иногда приходилось ставить избыточную запись массива для аргументов параметров, и у вас не было поддержки первого класса для переменных.В Terraform> = 0.12 вы больше не должны помещать избыточную запись массива, и у вас есть первоклассная поддержка переменных.Вы можете обновить свой код для обработки обоих:

resource "aws_lb" "main" {
  name            = "myload-balancer"
  subnets         = var.subnetIds
  security_groups = var.securityGroupIds
}

Таким образом, избыточные [] удаляются и ненужная интерполяция строк также удаляется.

...