Структура кода и соглашения об именовании
Освойте лучшие практики организации файлов и модулей Terraform, а также единообразные соглашения об именовании ресурсов и переменных.
«Структура кода и соглашения об именовании» — бесплатный урок Terraform Infrastructure as Code на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Terraform Infrastructure as Code, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Terraform Infrastructure as Code содержит 4 уроков всего.
Зачем структурировать код Terraform?
Как и порядок на рабочем месте, структурированный код Terraform проще понимать, сопровождать и совместно разрабатывать.
Хорошая структура повышает читаемость, уменьшает количество ошибок и помогает новым участникам команды быстрее освоиться.
Основные файлы Terraform
Проекты Terraform обычно начинаются с нескольких ключевых файлов. Организация конфигурации по этим файлам считается распространённой рекомендацией:
main.tf: определяет ресурсы и модули.variables.tf: объявляет все входные переменные.outputs.tf: определяет выходные значения инфраструктуры.versions.tf: задаёт версии Terraform и провайдеров.
Именование ресурсов
Единообразные имена упрощают идентификацию ресурсов. Следуйте этим общим рекомендациям для локального имени (например, my_instance в resource "aws_instance" "my_instance"):
- Используйте описательные имена: что делает ресурс?
- Используйте дефисы или символы подчёркивания: это улучшает читаемость (например,
web-server-sgилиweb_server_sg). - Избегайте общих имён:
serverменее информативно, чемapp-frontend-server.
Локальные имена ресурсов Terraform должны быть уникальными в пределах модуля.
Соглашения для переменных
Переменные делают конфигурации гибкими. Важно правильно их именовать:
- Строчные буквы и символы подчёркивания: это самое распространённое соглашение (например,
instance_type,vpc_id). - Будьте конкретны: чем управляет эта переменная?
- Добавляйте описания: объясняйте назначение переменной для ясности.
Хорошие имена переменных помогают другим понять, какие входные данные ожидает Ваш модуль.
Именование выходных значений
Выходные значения предоставляют важную информацию о развёрнутой инфраструктуре. Единообразные имена упрощают работу с ними:
- Строчные буквы и символы подчёркивания: как и для переменных, например
web_server_ip. - Описывайте значение: какую информацию оно предоставляет?
- Добавляйте описания: они особенно важны для выходных значений модуля и объясняют, что именно возвращается.
Пример: простая конфигурация
Этот полный файл main.tf демонстрирует хорошие правила именования ресурса, переменной и выходного значения. С ним можно выполнить команды terraform init и terraform plan.
terraform {
required_providers {
null = {
source = "hashicorp/null"
version = "~> 3.0"
}
}
}
resource "null_resource" "example_web_server" {
# Descriptive resource name
triggers = {
always_run = timestamp()
}
}
variable "app_environment" {
description = "The application's deployment environment (e.g., dev, prod)."
type = string
default = "development"
}
output "resource_unique_id" {
description = "The unique ID of the example null resource."
value = null_resource.example_web_server.id
}Структура модулей Terraform
У повторно используемых компонентов есть собственная понятная структура:
- Корневой модуль: каталог верхнего уровня, содержащий основную конфигурацию.
- Дочерние модули: подкаталоги, каждый из которых содержит собственные
main.tf,variables.tf,outputs.tfи другие файлы. - README.md: необходим для объяснения назначения модуля, его входных и выходных данных.
Благодаря этому модули остаются самодостаточными и удобными для повторного использования.
Организация папок проекта
Помимо самих файлов, крайне важно правильно организовать папки проекта, особенно в крупных конфигурациях:
- Разделяйте окружения: создавайте отдельные папки для
dev,stagingиprod, каждая со своей конфигурацией. - Общая папка модулей: каталог
modulesдля пользовательских повторно используемых модулей. - Корневая папка для провайдеров: папка верхнего уровня обычно определяет провайдеров и хранилище состояния.
Это предотвращает расхождение конфигураций и упрощает управление разными окружениями.
Пример структуры папок проекта
Типичный проект Terraform с несколькими окружениями может выглядеть так, обеспечивая чёткое разделение и повторное использование:
.
├── modules/
│ ├── vpc/
│ │ ├── main.tf
│ │ ├── variables.tf
│ │ └── outputs.tf
│ └── ec2-instance/
│ ├── main.tf
│ └── variables.tf
├── environments/
│ ├── dev/
│ │ └── main.tf
│ ├── staging/
│ │ └── main.tf
│ └── prod/
│ └── main.tf
└── README.mdПроверьте понимание
Какой из следующих вариантов является лучшей практикой именования входной переменной Terraform, задающей количество экземпляров?
Итоги: структура и именование
Мы узнали, что хорошо структурированный код Terraform с единообразными именами необходим для читаемости, удобства сопровождения и совместной работы команды.
- Организуйте файлы в
main.tf,variables.tfиoutputs.tf. - Используйте описательные имена в нижнем регистре с символами подчёркивания для ресурсов, переменных и выходных значений.
- Структурируйте модули и папки проекта так, чтобы обеспечить повторное использование и разделение окружений.
Эти практики создают основу для эффективного управления инфраструктурой как кодом!
Часто задаваемые вопросы
Урок «Структура кода и соглашения об именовании» бесплатный?
Да — полный текст урока «Структура кода и соглашения об именовании» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Terraform Infrastructure as Code, подпишись на CoddyKit PRO. Курс Terraform Infrastructure as Code содержит 4 уроков всего.
Чему я научусь в уроке «Структура кода и соглашения об именовании»?
Освойте лучшие практики организации файлов и модулей Terraform, а также единообразные соглашения об именовании ресурсов и переменных. Ты практикуешь Terraform Infrastructure as Code с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Terraform Infrastructure as Code?
Предыдущий опыт не требуется. Terraform Infrastructure as Code на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Структура кода и соглашения об именовании»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Terraform Infrastructure as Code?
Да. Каждый урок Terraform Infrastructure as Code включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Структура кода и соглашения об именовании
- Контроль версий с Git
- Командная работа и рабочие процессы
- Документация и рабочие процессы самообслуживания