Phone icon Связаться с нами

DevOps и облака

Что такое Terraform?

Terraform — это инструмент, который создаёт облачную инфраструктуру по описанию в файлах конфигурации. Вы указываете, какие ресурсы должны существовать, а Terraform сам определяет, что нужно создать, изменить или удалить, чтобы облако соответствовало описанию.

Подход декларативный: вы описываете результат, а не последовательность команд. Перед применением Terraform показывает план — список будущих изменений, — и это значительно снижает риск случайно удалить рабочий ресурс.

Terraform работает с AWS, Azure, Google Cloud и десятками других провайдеров через единый язык конфигурации HCL. Текущее состояние инфраструктуры хранится в файле состояния (state), который в командной работе держат в общем защищённом хранилище.

Где применяется

Terraform создаёт и меняет ресурсы в облаке: виртуальные машины, сети, базы данных, балансировщики нагрузки, права доступа. Одна конфигурация работает с AWS, Azure, Google Cloud и другими провайдерами, поэтому Terraform удобен для компаний, которые используют несколько облаков одновременно.

Обычно Terraform встроен в конвейер CI/CD: инженер меняет файл конфигурации, создаёт запрос на слияние, команда просматривает план изменений — что будет создано, изменено и удалено, — и только после одобрения изменения применяются к реальной инфраструктуре.

Пример

Нужно добавить второй сервер приложения и подключить его к балансировщику. Инженер меняет одно число в конфигурации, запускает план и видит: один ресурс будет создан, один изменён, ни одного не удалено. После подтверждения инфраструктура сама переходит в новое состояние.

resource "aws_s3_bucket" "uploads" {
  bucket = "school-uploads"
}

resource "aws_instance" "api" {
  count         = 2
  ami           = "ami-0abcdef1234567890"
  instance_type = "t3.small"

  tags = {
    Name = "api-${count.index}"
  }
}
Описание ресурсов: вы задаёте нужное состояние, а Terraform определяет, что для этого сделать.

Частые вопросы

Что такое state в Terraform?

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

Чем Terraform отличается от Ansible?

Terraform создаёт саму инфраструктуру: серверы, сети, базы данных. Ansible настраивает то, что уже создано: устанавливает пакеты, меняет настройки, разворачивает приложения. Они не конкурируют и часто работают вместе, каждый на своём этапе.

Можно ли случайно удалить продакшен через Terraform?

Теоретически да, поэтому перед применением всегда просматривают план изменений. Кроме того, на критичные ресурсы ставят защиту от удаления, разделяют среды на отдельные конфигурации и требуют проверки изменений коллегами. Применение без чтения плана — главная причина аварий.

Что такое OpenTofu?

Это ответвление Terraform с открытой лицензией, которое появилось после изменения условий лицензии оригинала. Синтаксис и рабочий процесс одинаковые, поэтому переход обычно сводится к замене команды. Часть компаний перешла на OpenTofu, чтобы избежать лицензионных ограничений.

Обучение DevOps в OWU

Освойте профессию DevOps-инженера на практических курсах с менторами и реальными проектами.

Выбрать курс