#amazon-web-services #terraform
Вопрос:
Мой вариант использования заключается в том, что у меня есть большой список подсетей, которые охватывают такие вещи, как локальные сети сотрудников, VPN, офисные локальные сети, гостевые локальные сети и т. Д. Они не управляются в AWS, так как конечные точки на самом деле не находятся в VPC.
Однако я хотел бы использовать их в группах безопасности для предоставления доступа к внутренним ресурсам.
Каков наилучший способ кодирования их в TF таким образом, чтобы их было легко повторно использовать? Должен ли я создать модуль, который будет доступен всем? Лучше ли использовать удаленное состояние? Есть ли поставщик, который хорошо подходит для такого рода приложений?
Комментарии:
1. В зависимости от сложности их структуры, похоже, что они могут быть просто входными переменными в формате HCL (проще) или надежными внешними данными (более сложными).
Ответ №1:
Ваша ситуация похожа на примеры использования, приведенные в разделе Модули только для данных на странице «Документация по терраформированию» Состав модуля.
Как именно вы этого добьетесь, будет зависеть от того, опубликована ли уже нужная вам информация где-нибудь, откуда ее мог бы получить источник данных Terraform. Во многих провайдерах доступны различные источники данных для получения информации, например, о VPC/подсетях AWS, но система, которую вы используете для управления этими не облачными сетями, может не иметь такой удобной точки интеграции.
В этом случае следует рассмотреть еще два общих варианта:
- Если эти данные будут часто изменяться и только в результате преднамеренных административных действий (а не динамически на основе произвольных событий), то проще всего было бы просто жестко закодировать данные непосредственно в модуль Terraform в виде буквального значения. Это был бы особенно экстремальный случай «модуля, предназначенного только для данных», который даже не содержит никаких источников данных, а вместо этого, вероятно, будет иметь несколько
output
блоков и, возможноlocal
, блоков в зависимости от того, нужна ли вам какая-то логика для проецирования данных в удобную форму для вызывающего модуля. - Если вы можете организовать загрузку данных на какой-либо доступный HTTP-сервер в формате JSON, у
hashicorp/http
поставщика есть источник данных под названием justhttp
, который может извлекать текстовые данные из произвольного URL-адреса HTTP или HTTPS. Например, если у вас есть эти данные, опубликованные в формате JSON, вы можете использоватьhttp
источник данных вместе сjsondecode
функцией в вашем модуле «Только для данных», чтобы поместить данные в структуру данных, пригодную для использования в терраформировании.
Ответ №2:
Я думаю, что источники данных терраформирования могут вам помочь. Он может собирать информацию о ресурсах, определенную за пределами Terraform. Источники данных Терраформирования