Преимущества конфигурации Terragrunt DRY перед Native Terraform?

Я только что узнал о Террагрунте. Хотя я вижу некоторые приятные вещи, которых нет в Terraform, я не полностью понимаю реальную пользу аспекта конфигурации DRY (который, кажется, является наиболее продвигаемым аспектом Terragrunt).

Во всех тех примерах, которые я видел, файлы HCL (например, для различных этапов) кажутся мне довольно избыточными - и в основном содержат ту же информацию, которую можно передать в блоке module {} в простом Terraform.

Разве нельзя добиться того же с примерно таким же объемом кода, написав «модуль композиции» на простом Terraform, который только создает экземпляры других модулей? Я что-то упускаю?


person Schwarzzz    schedule 18.08.2020    source источник


Ответы (2)


Я тоже новичок в Terragrunt, и поначалу у меня была такая же мысль.

Вы читали https://terragrunt.gruntwork.io/docs#features?

Сам Terragrunt говорит, что это всего лишь тонкий слой поверх Terraform для добавления определенных функций поверх TF. Несколько функций DRY, которые мне особенно выделяются:

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

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

person Anh Le    schedule 23.08.2020
comment
Я не вижу большой разницы между моим текущим решением в Terraform и тем же дизайном, перенесенным в Terragrunt. Отсюда мой вопрос. - person Schwarzzz; 25.08.2020
comment
Поразмыслив над этим еще немного, я думаю, что выгода начинает проявляться только при использовании Terragrunt для разделения ваших корневых модулей на гораздо более мелкие части. Затем вы можете уменьшить избыточность в конфигурации бэкэнда и провайдера, как вы уже сказали. Возможно, Terragrunt призван поддержать вас в создании корневого модуля. Имеет смысл в сочетании с функцией зависимости. Я предполагаю, что документация Terragrunt не очень хорошо описывает его преимущества ... - person Schwarzzz; 25.08.2020
comment
Да, на первый взгляд, если у нас есть просто большой корневой модуль для среды, то использование композиции tf-модуля и Terragrunt не будет иметь особых различий. Terragrunt позволит нам использовать глубокую структуру папок для мультиоблака, мультирегиона и мультисреды, чтобы изолировать конфигурации терраформирования и достичь СУХОЙ корень / - облако / - регион / --- env ​​/ ---- infra / ----- .terragrunt.hcl ---- app / ----- .terragrunt.hcl ---- и т. д. ----- .terragrunt.hcl - person Anh Le; 29.08.2020

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

Terragrunt позволяет вам взять этот модуль композиции и создать его много раз, используя каждый раз уникальные переменные. Если вы не сделали этот модуль многоразовым, это будет невозможно, но если это так, то шаблон следующий:

  1. Terragrunt вызывает ваш модуль композиции, используя уникальные значения из 1 каталога. Это вызывает все его базовые модули, чтобы дать вам полное развертывание для этого каталога / рабочей области / независимо от того, как ваш инструмент называет это. И эта территория получает свое удаленное состояние.

  2. Terragrunt вызывает ваш модуль композиции из другого каталога, используя другие значения. Это снова вызывает все базовые модули, чтобы дать вам полное развертывание для другого каталога / рабочей области / как вы хотите это назвать. Эта область тоже получает свое удаленное состояние.

И вы можете повторно использовать этот же модуль композиции 50/100 / бесконечность раз совершенно уникальными способами, которые не конфликтуют друг с другом.

Сейчас это очень распространенный шаблон проектирования. Такого же эффекта можно добиться и без террагрунта. Это хорошая обертка, которая упрощает задачу.

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

person Jason Podgorny    schedule 29.01.2021