Модули и повторное использование кода
Узнайте, как модули Terraform упаковывают повторно используемую инфраструктуру, принимают входные данные, предоставляют выходные данные и поддерживают конфигурации в соответствии с принципом DRY.
«Модули и повторное использование кода» — бесплатный урок Terraform Infrastructure as Code на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Terraform Infrastructure as Code, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Terraform Infrastructure as Code содержит 4 уроков всего.
Зачем нужны модули
Копирование одних и тех же ресурсов между средами приводит к расхождениям и ошибкам. Модуль — это повторно используемый параметризованный контейнер ресурсов Terraform, который можно многократно вызывать с разными входными данными, сохраняя принцип DRY.
Каждая конфигурация — это модуль
Каталог, в котором Вы выполняете terraform apply, является корневым модулем. Вызываемые им модули являются дочерними модулями. Значит, Вы уже используете модули — просто добавляете новые.
Устройство модуля
Модуль — это всего лишь папка с файлами .tf, обычно следующей структуры:
main.tf— ресурсы.variables.tf— входные переменные.outputs.tf— предоставляемые значения.
Определение входных данных
Входные данные объявляются внутри модуля как переменные и позволяют вызывающим сторонам настраивать поведение.
variable "bucket_name" {
type = string
}
variable "versioning" {
type = bool
default = false
}Использование входных данных
Ресурсы модуля ссылаются на его переменные.
resource "aws_s3_bucket" "this" {
bucket = var.bucket_name
}Предоставление выходных данных
Выходные данные возвращают вызывающей стороне полезные значения, например идентификаторы или ARN.
output "bucket_arn" {
value = aws_s3_bucket.this.arn
}Вызов модуля
Корневой модуль вызывает дочерний с помощью блока module, передавая входные данные.
module "logs" {
source = "./modules/bucket"
bucket_name = "app-logs"
versioning = true
}Обращение к выходным данным модуля
Обращайтесь к выходным данным модуля с помощью module.NAME.OUTPUT в других местах конфигурации.
resource "aws_s3_bucket_policy" "p" {
bucket = module.logs.bucket_arn
}Источники модулей
Значением source может быть локальный путь, URL Git или общедоступный реестр Terraform.
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
version = "5.0.0"
}Управление версиями модулей
Всегда фиксируйте version для модулей из реестра, чтобы обновления выполнялись осознанно. После добавления или изменения модулей запускайте terraform init, чтобы загрузить их.
Проектирование хороших модулей
Делайте модули целевыми (по одному логическому компоненту), предоставляйте только необходимые входные данные, документируйте выходные данные и избегайте жёстко заданных значений, зависящих от среды. Небольшие модули, которые можно комбинировать, лучше одного огромного модуля.
Быстрая проверка
Проверьте свои знания о модулях.
Итоги
Модули делают Terraform повторно используемым и соответствующим принципу DRY.
- Модуль — это папка с файлами .tf, содержащими переменные (входные данные) и выходные данные.
- Вызывайте его блоком
moduleс указаниемsource; обращайтесь к результатам черезmodule.NAME.OUTPUT. - Источниками могут быть локальный путь, Git или реестр; фиксируйте
versionи запускайтеinit. - Проектируйте небольшие, целевые и хорошо документированные модули.
Часто задаваемые вопросы
Урок «Модули и повторное использование кода» бесплатный?
Да — полный текст урока «Модули и повторное использование кода» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Terraform Infrastructure as Code, подпишись на CoddyKit PRO. Курс Terraform Infrastructure as Code содержит 4 уроков всего.
Чему я научусь в уроке «Модули и повторное использование кода»?
Узнайте, как модули Terraform упаковывают повторно используемую инфраструктуру, принимают входные данные, предоставляют выходные данные и поддерживают конфигурации в соответствии с принципом DRY. Ты практикуешь Terraform Infrastructure as Code с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Terraform Infrastructure as Code?
Предыдущий опыт не требуется. Terraform Infrastructure as Code на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Модули и повторное использование кода»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Terraform Infrastructure as Code?
Да. Каждый урок Terraform Infrastructure as Code включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Поставщики и ресурсы
- Переменные и выходные значения
- Основы управления состоянием
- Модули и повторное использование кода