В начале 2010-х годов системные администраторы часто сталкивались с проблемой управления распределенной инфраструктурой. Возникла потребность в унифицированном инструменте для управления инфраструктурой как кодом. 

В 2014 году компания HashiCorp создала оpen source проект Terraform. С момента запуска Terraform получил огромную популярность и сегодня остается одним из самых востребованных инструментов для реализации подхода Infrastructure as Code.

В прошлом году HashiCorp перешла с open source лицензии MPL на более закрытые условия распространения программного обеспечения, в частности — лицензию BSL. 

Разбираемся, что к чему, как реагирует сообщество, и на что обратить внимание компаниям с точки зрения стратегического развития своих ИТ-продуктов.

Infrastructure as Code: почему это важно

IaC позволяет использовать код для автоматизации создания и управления инфраструктурой, такой как виртуальные машины, сети, контейнеры и т. д.

Изменения в инфраструктуре за счет IaC реализуются быстрее и надежнее — в основном без ручного вмешательства. 

Эта методология приобретает все большую популярность в индустрии. Так, о подходе IaC эксперты CloudMTS уже рассказывают студентам.

Есть множество инструментов для реализации подхода Infrastructure as Code: Terraform, Ansible, Chef, Puppet, Crossplane. Все они решают разные задачи и могут использоваться как вместе, так и по отдельности.

В этой статье мы говорим в основном о Terraform, но вообще в практике не меньшую роль играет Ansible. Хотя Ansible можно использовать для развертывания определенной инфраструктуры, в основном этот инструмент предназначен для настройки серверов с нужным ПО и обновления уже настроенных ресурсов. Ansible хорошо работает в связке с Terraform, но он предназначен для решения другого типа задач. Более подробно об этом инструменте можно прочитать в следующих статьях:

IaC имеет множество преимуществ, однако существует несколько рисков безопасности, которые нужно учитывать в работе. Подробнее об этом мы рассказывали в статье «Почему сканирование шаблонов IaC так важно».

Ситуация с лицензиями: от MPL к BSL

IaC популярен не в последнюю очередь из-за open source ПО. Так, HashiCorp открыто распространяла свои решения для управления ИТ-инфраструктурой более десятилетия и главным образом зарабатывала на подписных сервисах и технической поддержке. 

Однако ситуация изменилась. Итак, Terraform чаще всего используют для развертывания инфраструктуры. В августе прошлого года его лицензию сменили — с Mozilla Public License 2.0 (MPL 2.0) на Business Source License (BSL). Теперь требования лицензии приходится учитывать при дальнейшей разработке — либо же заменять ПО в своем стеке на альтернативные open source решения.

По условиям новой лицензии пользователи ключевых продуктов HashiCorp (Terraform, Vault и др.), а также независимые разработчики не смогут интегрировать инструменты компании в производные сервисы, «конкурирующие» с решениями предприятия. Кроме того, не допускаются модификации BSL-кода для распространения в измененном формате лицензирования (например, Apache или MPL). 

Поиск альтернативы: первый форк

Практически через пару недель после изменения лицензии вышел форк Terraform — OpenTF. Дело в том, что BSL не запрещает использовать инструменты HashiCorp для разработки альтернативных средств. Первый выпуск базируется на ветке Terraform 1.6, поддерживает все имеющиеся возможности и содержит некоторые дополнительные исправления и улучшения, нацеленные на усиление безопасности.

Уже в сентябре проект OpenTF публично поддержали в Linux Foundation. Сама организация взяла на себя дальнейшее развитие инструмента. Параллельно форк Terraform переименовали в OpenTofu. У инициативы уже есть отдельная страница, на которой её авторы собрали информацию обо всех специалистах и организациях, решивших поддержать разработку. В список уже вошли 158 компаний, 11 проектов и 781 разработчик. 

В декабре авторы OpenTofu также запустили аналог Terraform Registry на GitHub — он представляет собой реестр совместимых с инструментом провайдеров и модулей. Уже в январе вышла первая общедоступная версия OpenTofu. Разработчики также выпустили отдельное руководство по переходу на форк с Terraform. Пока OpenTofu не особо отличается от Terraform, но проект планируют развивать. Первое в списке грядущих улучшений — шифрование на стороне клиента.

Заметим, что энтузиасты из проекта OpenTofu совместно со специалистами IBM объявили о запуске ещё одного форка продукта HashiCorp. На этот раз им оказалось хранилище секретов Vault (его используют для управления и распространения сертификатов, API-токенов, паролей и не только). Форк получил название OpenBao, и его первую сборку уже можно найти на GitHub. Идея OpenBao, как и в случае с OpenTofu, заключается в распространении и дальнейшем развитии инструмента по условиям MPL 2.0.

Pulumi

Pulumi — известный (более 18 000 звезд на GitHub) открытый проект. Эксперты считают его одной из возможных альтернатив для Terraform (хотя Pulumi не подходит для работы на bare-metal серверах). 

Одним из ключевых преимуществ Pulumi является возможность использования знакомых языков программирования, таких как JavaScript, TypeScript, Python или Go, что делает разработку и управление инфраструктурой более интуитивной и удобной для разработчиков.

Crossplane

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

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

Чтобы познакомиться с платформой на практике, авторы предлагают запустить Wordpress-приложение с помощью руководства в блоге сообщества.

Заключение

Облако разными способами помогает сократить time-to-market продукта и обеспечить безопасность данных, но главное, что получают разработчики — набор виртуальных ресурсов, где можно разместить среды разработки, тестовые среды, необходимое ПО и так далее. 

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

Готовая виртуальная инфраструктура подходит для решения различных задач, связанных с разработкой digital-продуктов и приложений:

  • разработка и тестирование в облаке;

  • размещение приложений (включая высоконагруженные и критически важные бизнес-приложения);

  • повышение отказоустойчивости и многое другое.

Для быстрого старта CloudMTS поддерживает новых клиентов грантами до 500 тыс. руб.