0Pricing
DevOps Bootcamp · Урок

Создание повторно используемых модулей

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

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

Создание собственных модулей Terraform

На предыдущем уроке мы узнали, как использовать готовые модули Terraform. Теперь давайте разберемся, как создавать собственные повторно используемые модули!

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

Организация файлов модуля

Модуль Terraform — это, по сути, набор .tf-файлов, хранящихся в отдельном каталоге.

В простейшем случае каталог модуля содержит:

  • variables.tf: определяет входные переменные модуля.
  • main.tf: содержит фактические объявления ресурсов.
  • outputs.tf: определяет выходные значения модуля.

Также можно добавить versions.tf для требований к провайдеру и README.md для документации.

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

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

Переменные определяются с помощью блока variable, в котором указываются description, type и, при необходимости, значение default.

Пример: определение переменной модуля

Вот как можно определить переменную для типа экземпляра в файле variables.tf модуля:

# variables.tf
variable "instance_type" {
  description = "The EC2 instance type to use."
  type        = string
  default     = "t2.micro"
}

Ресурсы модуля: основная логика

Основа модуля — это его объявления ресурсов. Это фактические облачные ресурсы, которые модуль будет развертывать.

Эти блоки ресурсов, например экземпляр AWS EC2 или корзину S3, следует разместить в файле main.tf модуля.

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

Объявление ресурса с использованием входных данных

Объявим экземпляр EC2 в файле main.tf, используя переменную instance_type:

# main.tf
resource "aws_instance" "web_server" {
  ami           = "ami-0abcdef1234567890" # Example AMI ID
  instance_type = var.instance_type
  tags = {
    Name = "MyWebServer"
  }
}

Выходные данные модуля: передача информации

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

Например, можно вывести общедоступный IP-адрес экземпляра EC2 или ARN корзины S3.

Выходные значения определяются в файле outputs.tf с помощью блока output.

Определение выходного значения модуля

Вот как определить выходное значение для общедоступного IP-адреса нашего экземпляра EC2 в outputs.tf:

# outputs.tf
output "instance_public_ip" {
  description = "The public IP address of the EC2 instance."
  value       = aws_instance.web_server.public_ip
}

Вызов нового модуля

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

Укажите source (путь к каталогу модуля) и передайте значения его входным переменным.

# root_config/main.tf
module "my_web_server_module" {
  source        = "../my-ec2-module" # Path to your module
  instance_type = "t3.small"         # Override default
}

output "web_server_ip" {
  value = module.my_web_server_module.instance_public_ip
}

Проверка компонентов модуля

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

Повторение: создание повторно используемых модулей

Отличная работа! Теперь Вы умеете создавать собственные модули Terraform.

  • Модули — это каталоги, содержащие файлы .tf.
  • Используйте variables.tf для входных данных.
  • Размещайте определения ресурсов в main.tf.
  • Определяйте выходные значения в outputs.tf, чтобы предоставлять данные.

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

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

Урок «Создание повторно используемых модулей» бесплатный?

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

Чему я научусь в уроке «Создание повторно используемых модулей»?

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

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

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

Сколько времени занимает урок «Создание повторно используемых модулей»?

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

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

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

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

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