Skip to content

Обзор

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

Для описания инфраструктуры используется язык HCL (HashiCorp Configuration Language). Также Terraform поддерживает описания в формате JSON.

Процесс работы с Terraform

Работа с Terraform состоит из следующих этапов:

  1. Описание конфигурации. Пользователь описывает необходимое состояние инфраструктуры в формате HCL или JSON.

  2. Инициализация. Пользователь выполняет команду terraform init. Terraform загружает необходимые для работы плагины и модули.

  3. Планирование. Пользователь выполняет команду terraform plan. Terraform читает конфигурацию, сравнивает желаемое состояние инфраструктуры с текущим и генерирует план изменений с информацией о ресурсах и операциях.

  4. Применение изменений. Пользователь выполняет команду terraform apply. Terraform применяет необходимые изменения: создает, добавляет или удаляет ресурсы в соответствии с описанием. Информация обо всех изменениях сохраняется в файле состояния.

Преимущества Terraform

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

  • Идемпотентность. Многократное применение одной и той же конфигурации не оказывает никакого влияния на инфраструктуру. Terraform сравнивает текущее состояние с желаемым и вносит только необходимые изменения.

  • Модульность и возможность многократного использования. В Terraform можно создавать готовые шаблоны кода — модули (например, для создания виртуальной машины или сети), чтобы потом повторно использовать их в разных проектах.

  • Широкие возможности интеграции. Terraform легко интегрируется с GitLab CI, Jenkins, GitHub Actions и другими инструментами, что дает возможность автоматически развертывать инфраструктуру при каждом изменении кода.