В какой-то момент вы не можете или нет смысла абстрагироваться дальше.У вас всегда будет файл ресурсов верхнего уровня (например, main.tf
), в котором описаны используемые модули.Вы можете организовать эти файлы ресурсов верхнего уровня следующим образом:
Использовать рабочие пространства Terraform
Вы можете использовать рабочих пространств - в вашем случае, возможно, по одному на имя клиента.Каждое рабочее пространство имеет свое собственное состояние Terraform.Затем вы можете использовать переменную terraform.workspace
в вашем коде Terraform.Рабочие пространства также можно использовать для работы с различными средами.
Использовать отдельные файлы состояний
Для каждого из ваших клиентов предусмотрен один файл состояния верхнего уровня, т. Е. clienta.main.tf
, clientb.main.tf
и т. Д.все они находятся в одном репозитории и используют сценарий для их запуска по отдельности или по любому шаблону, который вы предпочитаете;или у вас может быть один репозиторий для каждого клиента.
Вы также можете комбинировать рабочие пространства с вашими отдельными файлами состояний для нацеливания на отдельные среды, то есть staging
, production
, для каждого клиента.Документы Terraform содержат более подробную информацию о рабочих пространствах и некоторых их недостатках.