ADG Оставить заявку
Блог DevOps 5 мин чтения

HashiCorp BSL и OpenTofu: разбираемся, что это значит для наших проектов

HashiCorp переводит Terraform и Vault на BSL 1.1, сообщество форкает OpenTofu. Оцениваем влияние на клиентские проекты и намечаем план перехода.

Контекст момента

HashiCorp меняет лицензию Terraform и Vault с MPL 2.0 на BSL 1.1, сообщество анонсирует форк OpenTofu, август 2023

В августе HashiCorp объявила, что Terraform, Vault, Consul и другие продукты переходят с Mozilla Public License 2.0 на Business Source License 1.1. Новость прошла по всем новостным агрегаторам, за ней быстро последовал анонс форка - OpenTofu под эгидой Linux Foundation. Первые две недели мы дали панике улечься и сели разбираться спокойно: что именно изменилось, и что это означает для проектов, которые мы ведём на управляемой инфраструктуре.

Что такое BSL и чем он отличается от MPL

MPL 2.0 - относительно мягкая open-source лицензия: можно использовать в коммерческих проектах, можно встраивать, изменения в самих файлах под MPL надо публиковать под той же лицензией. Конкурировать с HashiCorp - можно.

BSL 1.1 - другая история. Ключевое ограничение в той редакции, которую выбрала HashiCorp: нельзя использовать продукт для создания «конкурирующего продукта». Формулировка намеренно размытая. Через четыре года код автоматически переходит под Mozilla Public License - это называется Change Date. То есть Terraform 1.5 станет MPL в 2027 году, а 1.6 - чуть позже.

Для внутреннего использования - автоматизации своей инфраструктуры - ограничение не срабатывает. Запускать terraform apply в своём CI против своего облака можно. Проблема касается тех, кто продаёт управление инфраструктурой через Terraform как платформу или SaaS - вот там у юридических служб появляются вопросы.

Мы не продаём Terraform как продукт. Мы используем его как инструмент для управления инфраструктурой клиентов. Формально под ограничение не подпадаем. Но мы сели и выписали все сценарии, где могут быть вопросы, потому что «формально» и «без сюрпризов» - не одно и то же.

Как мы смотрели на это внутри

Первым делом пересмотрели, как именно мы используем Terraform в клиентских проектах:

  • Инфраструктура клиента управляется нами через Terraform - стейт-файлы у клиента или в нашем S3-бакете, код в репозитории клиента, мы - исполнители. Здесь вопросов нет.
  • Модули, которые мы написали под несколько клиентов - они не публикуются, не продаются, используются внутри. Тоже нет вопросов.
  • Если бы мы предоставляли «Terraform-as-a-Service» с биллингом за применения - вот тут уже стоило бы говорить с юристами. У нас такого нет.

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

OpenTofu: что это такое на данный момент

Реакция сообщества оказалась быстрой. OpenTF Foundation объявила о форке сразу после смены лицензии, а Linux Foundation взяла проект под крыло и переименовала его в OpenTofu. На момент написания этого поста - начало октября 2023 - OpenTofu ещё не выпустил стабильный релиз. Репозиторий активен, команда работает, но пользоваться в продакшне пока нечем.

Что важно понимать про форк прямо сейчас:

  • Кодовая база - это именно форк Terraform до смены лицензии, то есть функциональность идентична тому, что было до 1.6.
  • Провайдеры - провайдеры Terraform работают с OpenTofu без изменений, потому что протокол совместим. Это существенно: не надо ничего переписывать на уровне провайдеров.
  • Стейт - формат стейт-файлов совместим, миграция не предполагает конвертации.
  • Зрелость - форку несколько месяцев. Он не проходил лет продакшн-нагрузки. Это важно держать в голове.

Принципиальный вопрос - не «работает ли OpenTofu» технически, а «насколько устойчива его экосистема через год-два». Ответа пока нет.

Что мы решили делать

Паники нет, немедленной миграции тоже нет. Но и бездействия нет - мы зафиксировали позицию и составили план с несколькими горизонтами.

Немедленно. Заморозили апгрейд Terraform на новых версиях для существующих проектов на версии до 1.6 (до смены лицензии). Для новых проектов - думаем, что ставить, но скорее всего остаёмся на 1.5.x до прояснения ситуации с OpenTofu.

Ближайшие месяцы. Запускаем один небольшой внутренний проект на OpenTofu как только выйдет стабильный релиз. Не клиентский - внутренний. Смотрим, нет ли поведенческих расхождений с Terraform, как себя чувствует тулинг вокруг (tflint, tfsec, atlantis).

Стратегически. Если OpenTofu выйдет стабильным и экосистема не развалится - рассмотрим его как основной инструмент для новых клиентских проектов. Если что-то пойдёт не так - остаёмся на замороженном Terraform 1.5.x, пока не появится другой вариант.

Vault под BSL нас затрагивает меньше: мы используем его точечно, не как платформу. Там ситуация аналогичная - следим, но не форсируем переход.

Главный вывод

HashiCorp не сделала Terraform платным и не закрыла существующий код. Для большинства пользователей ничего не поменялось прямо сейчас. Но компания ясно дала понять, что готова в одностороннем порядке менять правила игры, если это выгодно бизнесу. Это честная позиция - просто теперь мы её знаем.

OpenTofu - пока ставка на будущее, а не готовый продакшн-инструмент. Мы не торопимся, но и голову в песок не прячем. Как только появится релиз - попробуем на реальном проекте и напишем, что вышло.

Контакт

Нужна такая же инженерная работа?

Опишите задачу и контекст. Ответим в течение рабочего дня, при необходимости подпишем NDA.