Структура кода и соглашения об именовании
Освойте лучшие практики организации файлов и модулей Terraform, а также единообразные соглашения об именовании ресурсов и переменных.
«Структура кода и соглашения об именовании» — бесплатный урок DevOps Bootcamp на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения DevOps Bootcamp, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс DevOps Bootcamp содержит 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) и разблокировать остальной курс DevOps Bootcamp, подпишись на CoddyKit PRO. Курс DevOps Bootcamp содержит 4 уроков всего.
Чему я научусь в уроке «Структура кода и соглашения об именовании»?
Освойте лучшие практики организации файлов и модулей Terraform, а также единообразные соглашения об именовании ресурсов и переменных. Ты практикуешь DevOps Bootcamp с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать DevOps Bootcamp?
Предыдущий опыт не требуется. DevOps Bootcamp на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Структура кода и соглашения об именовании»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке DevOps Bootcamp?
Да. Каждый урок DevOps Bootcamp включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Структура кода и соглашения об именовании
- Контроль версий с Git
- Командная работа и рабочие процессы
- Документация и рабочие процессы самообслуживания