0Pricing
DevOps Bootcamp · Урок

Структура кода и соглашения об именовании

Освойте лучшие практики организации файлов и модулей 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 — локальная установка не требуется.

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

  1. Структура кода и соглашения об именовании
  2. Контроль версий с Git
  3. Командная работа и рабочие процессы
  4. Документация и рабочие процессы самообслуживания
← Назад к DevOps Bootcamp