Обновлен до terraform v0.12.2 и большинство вещей перестало работать прямо. (мой плохой, я не проверял эту страницу: https://www.terraform.io/upgrade-guides/0-12.html до обновления)
В любом случае исправлено большинство вещей, но переменная интерполяция типа map
все еще не работает. в pre-v012.x это отлично работало:
security_groups.tf
// SecurityGroup: default access
resource "aws_security_group" "default" {
count = "${length(var.s_zones)}"
vpc_id = "${element(aws_vpc.vpcs.*.id, count.index)}"
name = "${var.vpc_names[count.index]}-default"
ingress {
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = ["${var.vpn_cidrs["lan"]}",
"${var.vpn_cidrs["ovp"]}"]
description = "SSH from vpn"
}
}
vars.tf
// Variable: vpn_cidrs
variable "vpn_cidrs" {
type = "map"
default = {
lan = ["10.0.11.0/28", "10.0.12.0/28"]
ovp = ["10.1.13.0/28", "10.1.14.0/28"]
}
}
С версией 0.12.2 возвращается:
Ошибка: неверный тип значения атрибута
в ../../modules/vpc/security_groups.tf строка 55, в ресурсе
"aws_security_group" "по умолчанию": 55: cidr_blocks =
[ "$ {Var.vpn_cidrs [" LAN "]}",
Недопустимое значение для атрибута "cidr_blocks": элемент 0: строка
требуется.
Я пытался использовать новый конструктор:
// Variable: vpn_cidrs
variable "vpn_cidrs" {
type = map(string)
default = {
lan1 = "10.0.11.0/28",
lan2 = "10.0.12.0/28",
ovp1 = "10.1.13.0/28",
ovp2 = "10.1.14.0/28",
}
}
Но тогда я не могу понять, как использовать это для правил SG в модуле. Кто-нибудь знает, что мне не хватает или как это исправить? Действительно застрял с вечера пятницы. Любой заостренный пример кода будет высоко оценен.
-S