Функция источников данных Terraform предназначена для выборки данных, которые изменяются нечасто и (обычно) изменяются только в результате преднамеренных действий от имени оператора. Следующий «доступный» блок CIDR, к сожалению, не является подходящим кандидатом для этого, поскольку сам процесс создания next VPC изменит результат, в результате чего полученная конфигурация никогда не сойдется.
Вместо этого Terraform ожидает, что такого рода назначение будет выполнено явно. В этой ситуации это будет означать установление явного соглашения о нумерации для ваших сетей, которое вы затем сможете описать в конфигурации Terraform, что позволит Terraform найти или рассчитать подходящий VPC на основе информации, уже имеющейся в конфигурации.
Например, пользователи AWS часто определяют отображение таким образом, что каждому региону и региональной зоне доступности присваивается номер в центральной таблице (например, значение карты непосредственно в конфигурации или внешняя система, доступ к которой осуществляется через источник данных), а затем адрес для VPC или подсети может быть обнаружен путем обращения к этой таблице.
Если ваша система имеет более необычную характеристику регулярного создания и разрушения сетей, не имеющих прямого отношения к регионам AWS и зонам доступности, я бы рекомендовал использовать некоторое внешнее программное обеспечение за пределами Terraform для управления назначением подсетей, а затем передавать решение, принятое этим программным обеспечением в Terraform в качестве входной переменной . Таким образом, решение может быть записано в этой внешней системе (например, в базе данных) и повторно вызвано позже, если необходимо применить изменения.
Пользователи с необычными вариантами использования также иногда находят, что лучше разложить основную часть своей конфигурации в модуль многократного использования, а затем динамически генерировать (используя инструмент предварительной обработки) минимальный корневой модуль, который вызывает этот модуль с использованием некоторых данных. или решения, принятые за пределами Terraform. Такой вид использования не входит в основные варианты использования Terraform, но его можно заставить работать. Для очень динамических сред Terraform может оказаться неподходящим инструментом для работы.