К содержанию

Wiki · Технологии разработки

Terraform

Terraform – это инструмент компании HashiCorp, которым серверы, сети, базы данных, DNS-записи и другие облачные ресурсы описывают в текстовых файлах, а затем создают и меняют по этому описанию. Такой подход называют «инфраструктура как код» (Infrastructure as Code, IaC).

Если вы искали Terraform в Яндексе и попали на игры про терраформирование, это другая тема. Здесь речь о том, как подрядчик поднимает для вашего проекта серверы в облаке и почему иногда говорит «это у нас в Terraform».

Зачем описывать серверы файлами, а не кликать в консоли

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

resource "yandex_compute_instance" "web" {
  name = "shop-web"
  resources {
    cores  = 2
    memory = 4
  }
}

Файлы лежат в репозитории Git рядом с кодом. По ним видно, кто и когда добавил сервер, а копию инфраструктуры для теста создают из тех же файлов. Работу с конкретным облаком дают провайдеры (providers): свой провайдер есть у Yandex Cloud и многих других платформ.

Что делают terraform plan и terraform apply

Работа идёт в два шага. Команда terraform plan сравнивает описание с тем, что уже создано, и показывает список изменений: что будет добавлено, изменено, удалено. Команда terraform apply применяет этот план. Между ними человек читает план и ловит опасное, например удаление базы данных.

О созданных ресурсах Terraform помнит через файл состояния (state). Его хранят в надёжном общем хранилище, а не на ноутбуке одного разработчика: потеря state превращает поддержку инфраструктуры в ручной разбор.

Пять шагов работы Terraform: описание инфраструктуры в файлах, terraform plan, проверка плана, terraform apply и файл состояния state
Как Terraform меняет инфраструктуру

Лицензия BSL от HashiCorp и форк OpenTofu

10 августа 2023 года HashiCorp перевела будущие версии своих продуктов, в том числе Terraform, с открытой лицензии MPL 2.0 на Business Source License 1.1. По разъяснению компании, пользователи по-прежнему могут применять код в том числе в коммерческих целях, запрет касается тех, кто строит на нём конкурирующий с HashiCorp продукт. В феврале 2025 года сделку по покупке HashiCorp закрыла IBM.

В ответ сообщество сделало форк OpenTofu. Проект ведётся под крылом Linux Foundation, первая стабильная версия вышла 10 января 2024 года, на официальном сайте он описан как прямая замена Terraform с сохранением привычных конфигураций.

TerraformOpenTofu
Кто развиваетHashiCorp (IBM)Сообщество под Linux Foundation
Лицензия новых версийBSL 1.1Открытая
Для какой задачиНужны платные продукты и поддержка HashiCorpВажна открытая лицензия, команда готова следить за совместимостью провайдеров

Для заказчика, который просто держит сайт в облаке, лицензия BSL ничего не меняет. Скачать Terraform и провайдеры из России можно и через зеркала Yandex Cloud: их настройка описана в документации облака, но там же предупреждают, что зеркало может быть недоступно.

Когда Terraform нужен небольшому проекту

Для сайта на одном VPS или на обычном хостинге Terraform лишний: серверов один-два, меняются они редко. Он начинает окупаться, когда ресурсов в облаке становится много, есть отдельные тестовая и рабочая среды, или проект живёт в Kubernetes. Тогда изменения инфраструктуры проходят проверку как код и выкатываются через GitLab CI/CD. Если подрядчик всё же описал вашу инфраструктуру в Terraform, попросите передать вам репозиторий и доступ к хранилищу state, иначе при смене подрядчика описание придётся собирать заново.

Сравнение: когда небольшому проекту Terraform не нужен и когда инфраструктура как код окупается при многих облачных ресурсах
Когда Terraform лишний, а когда окупается

Terraform для проекта: OpenTofu, файл state и доступ из России

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

OpenTofu – открытый форк Terraform под Linux Foundation, появившийся после перехода HashiCorp на BSL. Конфигурации в основном совместимы, но перед переходом их стоит проверить.

Что будет, если потерять файл state в Terraform?

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

Как подключить Terraform к Yandex Cloud?

Для Yandex Cloud используют официальный провайдер yandex-cloud/yandex. Документация облака описывает установку и настройку провайдера через зеркало terraform-mirror.yandexcloud.net в файле .terraformrc и способы авторизации, например через IAM-токен сервисного аккаунта.

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

Документация HashiCorp, OpenTofu и Yandex Cloud

  • Блог HashiCorp: «HashiCorp adopts Business Source License», 10 августа 2023 года
  • IBM Newsroom: «IBM Completes Acquisition of HashiCorp», 27 февраля 2025 года
  • Linux Foundation: «OpenTofu Announces General Availability», 10 января 2024 года
  • Официальный сайт OpenTofu
  • Документация Yandex Cloud: «Начало работы с Terraform», «Провайдеры Terraform»

См. также: Docker, Резервное копирование сайта.

Остались вопросы по теме «Terraform»?

Напишите нам в Telegram или MAX. Ответит специалист, который отвечает за эту тему, или руководитель проектов в рабочее время.

Сергей ЧерняковОтвечает по темеСергей ЧерняковWeb-разработчик

Посчитайте стоимость проекта за 2 минуты

Калькулятор соберёт смету по нашим тарифам: сайт, дизайн, интеграции и поддержка.