Могу ли я иметь пространство имен или иерархию для ресурсов в terraform?Или иначе сгруппировать ресурсы вместе? - PullRequest
0 голосов
/ 12 июля 2019

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

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

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

1 Ответ

1 голос
/ 15 июля 2019

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

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

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

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

...