В Чем Разница Между Модулями И Рабочими Пространствами В Terraform

  • Автор темы I AM
  • Обновлено
  • 19, Oct 2024
  • #1

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

Однако я думаю, что модули Terraform могут делать то же самое, верно?

Если да, то когда мне следует использовать рабочие пространства, а когда — модули? Или они делают одно и то же разными способами?

#terraform #terraform-module #terraform-workspace

I AM


Рег
23 Jul, 2011

Тем
403760

Постов
400028

Баллов
2418908
  • 25, Oct 2024
  • #2

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

Например, предположим, что вы хотите создать базовый файл конфигурации для всех экземпляров EC2 вашей компании, который разрешает трафик через SSH. Вы должны создать модуль, который запускает виртуальную машину, изменяет ваш брандмауэр, чтобы разрешить SSH, и любые другие параметры конфигурации, которые вы хотите, чтобы все ваши экземпляры имели. Тогда каждая конфигурация VM Terraform будет наследовать этот файл. Это позволит свести к минимуму объем кода, который вам придется написать, и позволит вносить любые изменения, которые вы захотите, во все ваши конфигурации TF в одном центральном модуле.

 

Nikmen


Рег
08 Sep, 2008

Тем
56

Постов
208

Баллов
498
  • 25, Oct 2024
  • #3

Модули Терраформ — это способ инкапсулировать повторно используемую бизнес-логику, чтобы СУХОЙ. Например, вы можете использовать модуль для определения Дженкинс setup, а затем вызывайте этот модуль каждый раз, когда вам нужен сервер Jenkins. Другими словами, вы можете создавать экземпляры модулей столько раз, сколько вам нужно для достижения одного и того же результата.

С другой стороны, рабочие пространства Terraform — это способ изолировать состояние terraform между средами. Например, вы не хотите смешивать состояние производственной и промежуточной сред.

На практике мы высоко рекомендую писать модули для все. Вот почему у нас закончилось 100+ модулей. Написание модулей похоже на написание «функций» на других языках. Как правило, считается плохой практикой помещать всю логику в одну функцию или область действия; модули помогают нам избежать этого.

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

terraform-aws-tfstate-backend
модуль.

———

Для справки, «мы» относится к Cloud Posse, компании, предоставляющей профессиональные услуги DevOps. Я основатель. Выраженные мнения являются нашими собственными и могут не отражать взгляды сообщества в целом. :)

 

Jkt


Рег
02 Nov, 2011

Тем
63

Постов
189

Баллов
504
Похожие темы Дата
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно