Как использовать общий файл во многих сборках Terraform? - PullRequest
0 голосов
/ 21 января 2020

У меня есть структура каталогов для построения ресурсов Terraform для моего проекта:

s3
  main.tf
  variables.tf
  tag_variables.tf

ec2
  main.tf
  variables.tf
  tag_variables.tf

vpc
  main.tf
  variables.tf
  tag_variables.tf

Когда я хочу создать или изменить что-то в s3, я запускаю каталог Terraform s3. Когда я хочу собрать ресурсы ec2, я захожу в эту папку и делаю там сборку Terraform. Я запускаю их по одному.

На данный момент у меня есть список тегов, определенных как переменные, внутри каждого каталога. Это один и тот же файл, многократно скопированный в каждый каталог.

Есть ли способ избежать копирования одного и того же файла тегов во все папки? Я ищу решение, где у меня есть только одна копия файла тегов. Terraform действительно предлагает своего рода решение с использованием «локального» глагола, но для этого все еще требуется повторение файла в каждом каталоге.

Что я пробовал:

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

У кого-нибудь есть способ получить один центральный файл тегов, который будет использоваться везде? Я имею в виду что-то вроде включения фрагмента исходного кода из другого места? Или любое другое решение было бы замечательно.

1 Ответ

0 голосов
/ 23 января 2020

Спасибо за этот совет ydaetskcoR, я использовал символические ссылки, и это прекрасно работает.

Я поместил файл tags.tf в общую директорию. Каждый проект Terraform теперь имеет символическую ссылку c на файл. (Кроме того, я связал некоторые другие распространенные файлы таким образом, как, например, provider.tf).

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

Это позволяет многим различным и отдельным проектам Terraform обращаться к общему файлу.

Примечание. Если вы хотите использовать модульность общие функции Terraform, взгляните на модули Terraform , они предназначены для модульного кодирования. Однако их нельзя использовать для описанного выше простого варианта использования.

...