0Pricing
DevOps Bootcamp · Урок

Введение в модули Terraform

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

«Введение в модули Terraform» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 4 уроков всего.

Что такое модули Terraform?

Модуль Terraform — это автономный пакет конфигураций Terraform. Представьте его как функцию или класс в языках программирования. Он позволяет объединять связанные ресурсы и управлять ими как единым целым.

Модули помогают организовать код инфраструктуры и упростить его сопровождение, особенно в крупных проектах.

Зачем использовать модули Terraform?

Модули дают несколько важных преимуществ для инфраструктуры в виде кода:

  • Повторное использование: определите часть инфраструктуры один раз и используйте ее многократно в разных проектах или средах.
  • Организация: разделяйте сложные конфигурации на небольшие, управляемые и логически связанные компоненты.
  • Согласованность: обеспечивайте стандартный способ развертывания ресурсов каждый раз, уменьшая расхождения конфигураций и количество ошибок.
  • Совместная работа: команды могут разрабатывать и совместно использовать модули, ускоряя разработку и поддерживая стандарты.

Структура модуля

Модуль Terraform — это, по сути, каталог, содержащий один или несколько .tf-файлов. Структура может быть различной, но обычно включает:

  • main.tf: определяет основные ресурсы, создаваемые модулем.
  • variables.tf: объявляет входные переменные, настраивающие поведение модуля.
  • outputs.tf: определяет выходные значения, предоставляемые модулем вызывающим конфигурациям.
  • versions.tf: задает ограничения версий Terraform и провайдера для модуля.

Такая организованная структура помогает поддерживать код в аккуратном и понятном виде.

Код Вашего первого модуля

Определим очень простой модуль, создающий корзину AWS S3. Обычно этот код находится в отдельном каталоге, например modules/my_s3_bucket/main.tf.

Этот полный файл можно запустить как корневой модуль, чтобы увидеть его в действии, но здесь его основная цель — показать внутреннюю структуру модуля.

provider "aws" {
  region = "us-east-1" # Example region
}

variable "bucket_name" {
  description = "Name for the S3 bucket."
  type        = string
}

variable "acl_setting" {
  description = "ACL for the S3 bucket."
  type        = string
  default     = "private"
}

resource "aws_s3_bucket" "example_bucket" {
  bucket = var.bucket_name
  acl    = var.acl_setting

  tags = {
    Environment = "Dev" # Example tag
  }
}

output "bucket_id" {
  description = "The ID of the S3 bucket."
  value       = aws_s3_bucket.example_bucket.id
}

output "bucket_arn" {
  description = "The ARN of the S3 bucket."
  value       = aws_s3_bucket.example_bucket.arn
}

Входные данные модуля: переменные

Входные переменные позволяют настраивать поведение модуля без изменения его основного кода. Они определяются в файле variables.tf внутри каталога модуля.

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

variable "bucket_name" {
  description = "Name for the S3 bucket."
  type        = string
}

variable "acl_setting" {
  description = "ACL for the S3 bucket."
  type        = string
  default     = "private"
}

Выходные данные модуля: предоставление данных

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

Выходные значения определяются в файле outputs.tf внутри каталога модуля и могут использоваться другими частями конфигурации Terraform или даже другими модулями.

output "bucket_id" {
  description = "The ID of the S3 bucket."
  value       = aws_s3_bucket.example_bucket.id
}

output "bucket_arn" {
  description = "The ARN of the S3 bucket."
  value       = aws_s3_bucket.example_bucket.arn
}

Вызов собственного модуля

Теперь, когда модуль my_s3_bucket определен, вызовем его из корневой конфигурации. Атрибут source указывает, где Terraform может найти модуль.

Для локальных модулей это относительный путь к каталогу модуля. Мы передаем значения входным переменным модуля и можем обращаться к предоставляемым им выходным значениям.

provider "aws" {
  region = "us-east-1"
}

module "my_website_bucket" {
  source      = "./modules/my_s3_bucket" # Path to your local module
  bucket_name = "my-unique-website-bucket-12345"
  acl_setting = "public-read"
}

output "website_bucket_arn" {
  description = "ARN of the website S3 bucket."
  value       = module.my_website_bucket.bucket_arn
}

output "website_bucket_id" {
  description = "ID of the website S3 bucket."
  value       = module.my_website_bucket.bucket_id
}

Разные источники модулей

Модули бывают не только локальными! Terraform может получать модули из разных источников, что дает Вам больше гибкости:

  • Локальные пути: ./modules/my_module (как в нашем примере)
  • Реестр Terraform: hashicorp/vpc/aws (общедоступные модули)
  • Репозитории Git: git::https://example.com/repo.git
  • Корзины S3: s3::https://s3-us-west-2.amazonaws.com/example-bucket/module.zip

Реестр Terraform — отличное место для поиска готовых модулей, проверенных сообществом, для распространенных шаблонов инфраструктуры.

Практическая польза модулей

Представьте, что Вы управляете сотнями ресурсов в нескольких средах (разработка, тестирование, рабочая среда). Без модулей у Вас были бы огромные повторяющиеся конфигурационные файлы.

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

Быстрая проверка

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

Итоги и дальнейшие шаги

На этом уроке мы познакомились с модулями Terraform как с мощными инструментами для организации и повторного использования кода инфраструктуры. Вы узнали следующее:

  • Модули объединяют ресурсы в повторно используемые единицы.
  • Они улучшают организацию кода, согласованность и возможность повторного использования.
  • Модули используют variables.tf для входных данных и outputs.tf для предоставляемых данных.
  • Вы можете вызывать модули из локальных путей, реестров или репозиториев Git.

Далее мы подробнее рассмотрим создание собственных повторно используемых модулей, а также более сложные шаблоны и лучшие практики.

Часто задаваемые вопросы

Урок «Введение в модули Terraform» бесплатный?

Да — полный текст урока «Введение в модули Terraform» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.

Чему я научусь в уроке «Введение в модули Terraform»?

Разберитесь в преимуществах модулей, которые инкапсулируют и повторно используют распространённые шаблоны инфраструктуры, улучшая организацию и сопровождаемость кода. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать DevOps Bootcamp?

Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Введение в модули Terraform»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке DevOps Bootcamp?

Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Введение в модули Terraform
  2. Создание повторно используемых модулей
  3. Использование рабочих пространств для окружений
  4. Публикация модулей в реестре
← Назад к DevOps Bootcamp