Могу ли я иметь пространство имен или иерархию для ресурсов в терраформе? Или иначе сгруппируйте ресурсы вместе?

В качестве конкретного примера у меня есть группа подсетей, которые используются для одного и того же, но распределены по нескольким зонам доступности.

Я хотел бы иметь возможность ссылаться на все из них как на список, чтобы я мог сделать что-то вроде aws_subnet.myname[*].id, чтобы получить все идентификаторы подсети для этой группы подсетей.

Есть ли способ сделать что-то подобное?


person Thayne    schedule 12.07.2019    source источник


Ответы (1)


Специальной функции для группировки ресурсов нет, но вы можете сделать это самостоятельно, используя именованное локальное значение:

locals {
  subnets = flatten([aws_subnet.a, aws_subnet.b, aws_subnet.c])
}

Вызов flatten здесь предназначен для нормализации между ресурсами с установленным count и без него, поскольку без count выражение ресурса возвращает только один объект, а с count это последовательность экземпляров.

Затем в другом месте конфигурации в ситуациях, когда вам нужны все эти идентификаторы вместе, вы можете написать local.subnets[*].id.

person Martin Atkins    schedule 15.07.2019