Выбор лучшей платформы IaC CI

Подобно черной чуме или TikTok, инфраструктура как код (IaC) доминировала в индустрии DevOps, а Terraform стал явным победителем (продолжайте мечтать, Pulumi). В отличие от облачных библиотек IaC (например, CloudFormation или Resource Manager), у облачно-независимых библиотек IaC есть варианты, когда дело доходит до определения их процессов непрерывной интеграции и инструментов.

Согласно моим исследованиям, Terraform Cloud больше не является лучшим в своем классе.

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

Потратив значительное количество времени на встречи с различными поставщиками, чтение документов и опробование продуктов, я пришел к следующему выводу.

Четырьмя лучшими инструментами Terraform CI являются Spacelift, Env0, Scalr и Cloudify.

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

Если этот пост полезен, пожалуйста, 👏 или подпишитесь, чтобы сообщить мне об этом. Я пишу для удовольствия, но приятно знать, что кто-то извлек из этого пользу.

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

Обзор функций

Скучные функции, которые должна иметь каждая платформа Terraform CI:

  • надежное предложение SaaS, включая бесплатную пробную версию;
  • Интеграция VCS со всеми распространенными инструментами;
  • стандартные операции Terraform, такие как планирование, применение и обновление;
  • горизонтально масштабируемое выполнение Terraform, выполненное производительным образом;
  • обширный пользовательский интерфейс и API, а также поставщик Terraform для создания IaC;
  • основные элементы безопасности, такие как SAML, RBAC, ведение журнала аудита и т. д.; и
  • интеграции уведомлений для событий рабочей области.

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

Интересные функции, которые стоит сравнить, включают следующее:

  • Локальная поддержка. Есть ли возможность полностью самостоятельного размещения?
  • Поддержка не-TF IaC. Может ли платформа поддерживать другие интеграции, такие как Pulumi, Helm или CloudFormation?
  • Применение политик. Существует ли механизм правил для предотвращения развертывания небезопасной инфраструктуры?
  • Связанные рабочие пространства. Можно ли применять рабочие пространства в потоке от разработки → подготовки → производства?
  • Реестр модулей Terraform: могу ли я рассматривать платформу как свой реестр модулей Terraform?
  • Инфраструктура самообслуживания. Могу ли я создать торговую площадку для самостоятельного запуска инфраструктуры разработчиками?
  • Настраиваемые этапы сборки. Насколько настраиваются базовые команды CI?
  • Расчет затрат. Включены ли затраты на инфраструктуру (прогнозируемые и фактические) в продукт?
  • Видимость инфраструктуры. Есть ли визуализация развернутой инфраструктуры?

Стоит отметить, что только потому, что продукт поддерживает функцию, не означает, что он делает это хорошо. Отличным примером является собственный язык языковой политики HashiCorp, Sentinel, который сложен в написании и подвержен ошибкам. Если вы покупаете новый инструмент Terraform CI, вам следует получить демо-версии от нескольких поставщиков.

⚠️ — Облако Terraform реализует свои настраиваемые шаги сборки, используя функцию «запуска задач», которая значительно более ограничена, чем другие.

Ниже приводится то, в чем я лично считаю каждый продукт лучшим.

Лучший дизайн пользовательского интерфейса: Spacelift

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

Лучшая модель данных: Env0

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

Большинство функций, ориентированных на безопасность: Scalr

Если вы когда-либо использовали HashiCorp Sentinel, вы будете в восторге от того, как Scalr упрощает не только создание политик, но и массовое тестирование и проверку. Кроме того, он также имеет лучшую систему RBAC и является единственной платформой, поддерживающей полностью настраиваемые роли. Он также поддерживает полностью автономную функцию, которая является требованием для многих организаций. Если вы — компания, заботящаяся о безопасности, вам обязательно нужно получить демоверсию.

Самое полное: Cloudify

Cloudify может делать все, что достигается за счет сложности. Cloudify лучше всего подходит для крупных организаций с разными аудиториями и сложными многотехнологическими развертываниями. Хотите, чтобы шаблон CloudFormation был объединен со средой Terraform с помощью Ansible для оркестровки служб? Без проблем!

Дополнительное чтение: обзоры продуктов

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

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

Обзор продукта: Spacelift

Общий вердикт: Spacelift — отличное SaaS-решение для организаций с централизованной инфраструктурой.

Spacelift, вероятно, является лучшей SaaS-платформой Terraform CI для пользователей, уже знакомых с Terraform. Что меня больше всего впечатлило в демонстрации, так это продуманность каждой функции. Его пользовательский опыт является исключительным, что делает использование функций намного лучше. Эти функции, по-видимому, предназначены для инженеров DevOps, которым нужна лучшая прозрачность всего процесса «инфраструктура как код».

Особенности, которые отличают Spacelift:

Видимость инфраструктуры

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

Связанные рабочие пространства

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

Реестр

Spacelift также включает поддержку первого порядка для модулей TF и ​​тестирование. Идея состоит в том, что когда в модуль вносятся изменения, создается и уничтожается новая среда для проверки модуля. Модуль не передается нижестоящим потребителям до тех пор, пока он не пройдет тесты, что является уникальным среди всех инструментов IaC, которые я рассматривал. Если вы объедините это с поддержкой связанной рабочей области, вы получите чистую визуализацию изменения абстрактного модуля и всех затронутых нижестоящих сборок.

Обзор продукта: Env0

Общий вердикт: Env0 отлично подходит для команд DevOps, пытающихся создать инфраструктуру самообслуживания.

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

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

Env0 также поддерживает настройку шагов сборки, позволяя выполнять специфичные для бизнеса команды вместо команд по умолчанию (которые, опять же, более распространены в средних и крупных организациях). Однако отсутствие локальной поддержки означает, что он не подойдет для предприятий, более заботящихся о безопасности.

Особенности, которые отличают Env0:

Шаблоны самообслуживания

Убойная функция Env0 — это возможность для команды DevOps создать шаблон рабочего пространства Terraform и позволить последующим группам самостоятельно обслуживать эти шаблоны. Думайте об этом как о наличии модуля Terraform по умолчанию для модуля AWS RDS, который включает политики резервного копирования и шифрование KMS. Вы можете использовать Env0, чтобы сделать это предложение доступным для людей, не связанных с инфраструктурой, для развертывания инфраструктуры без знания Terraform. Это особенно актуально для компаний, в которых отделы продаж создают демонстрационные среды для клиентов.

Настраиваемые шаги сборки

Env0 поддерживает модель, аналогичную CircleCI, в которой поддерживаются файлы YML для настройки команд выполнения для каждого варианта использования. Это означает, что у вас есть возможность вплетать пользовательский линтинг, политики или калькуляторы стоимости в этап выполнения. Это также можно использовать для объединения сред оркестровки, таких как Ansible, Puppet или пользовательских сценариев.

Расчет стоимости

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

Обзор продукта: Скальр

Общий вердикт: Scalr — это наиболее безопасный и лучшая замена для автономного Terraform Cloud.

Основной девиз Scalr — «упростить централизацию администрирования Terraform при одновременной децентрализации операций Terraform». Его цель — стать узкоспециализированной платформой IaC, ориентированной на обеспечение наилучших возможностей Terraform для средних и крупных организаций. Это достигается за счет того, что администрирование, предоставляемое командой DevOps, переносится на верхний уровень, а нижестоящие группы используют утвержденные модули, учетные данные и политики.

Структура приложения Scalr четкая, с надежным RBAC и многоуровневой иерархией, которая удовлетворит даже самые требовательные группы безопасности. Их главной особенностью является структура политики, особенно то, как эти политики изменяются, проверяются и развертываются.

Особенности, которые отличают Scalr

Механизм политики, поддерживающий массовую проверку

Scalr уделяет большое внимание разработке, тестированию и демонстрации политик, применяемых в экосистеме. Если вы никогда раньше не писали политику IaC, вы знаете, что создание вашей политики — это 5 % работы, а остальные 95 % — это итерация кода до тех пор, пока он не заработает. Если вы внедрите неверную политику в рабочую среду, вы можете непреднамеренно нарушить существующие рабочие процессы. Scalr задумался о том, как справиться с этими проблемами в масштабе, и создал свои функции визуализации и тестирования политик.

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

RBAC

Scalr — единственная платформа IaC, которая позволяет сопоставлять индивидуальные разрешения с настраиваемой ролью. Это похоже на сопоставление разрешений Terraform Cloud с командами, но разделяет команды и роли. Эта настройка может иметь важное значение в крупных организациях. Особенно, когда вы начинаете думать об инфраструктуре самообслуживания и многоразовых модулях Terraform, возможность создания пользовательской роли может иметь важное значение для вашего бизнеса.

Локальная и удаленная поддержка

В области автоматизации разработчиков/инфраструктуры кажется, что все меньше и меньше инструментов поддерживают полностью автономные варианты. Однако для чего-то столь важного, как ваша основная инфраструктура, самостоятельный хостинг — это ставка на стол для большинства компаний, которым есть что терять. Другие инструменты IaC CI поддерживают модели запуска собственного агента, но этого недостаточно для тех, кто придерживается крайне консервативных взглядов на безопасность.

Обзор продукта: Cloudify

Общий вердикт: Cloudify — самая многофункциональная, но и самая сложная платформа. Лучше всего он работает на крупных предприятиях с разнообразной инфраструктурой.

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

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

Особенности, которые отличают Cloudify

Локальная поддержка

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

Поддержка IaC без TF

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

  • инфраструктурные плагины (AWS, Azure, Google Cloud, StarlingX, vSphere, vCloud, NSX-T, Openstack, Host-Pool),
  • плагины для оркестровки (Ansible, Docker, Helm3, Kubernetes, Terraform),
  • подключаемые модули конфигурации (Fabric, Scripts, Netconf, Diamond) и
  • служебные плагины: (CloudInit, Конфигурация, Пользовательский рабочий процесс, Развертывание, Файл, FTP, Рабочий процесс хуков, REST, Откат, Список масштабирования, Секреты, Ключ SSH, Приостановка, Терминал).

Для новых или небольших организаций вся ваша инфраструктура может обрабатываться диаграммами Terraform и Helm, поэтому эти плагины не представляют большой ценности. Целевой рынок Cloudify — крупные организации с новым и устаревшим кодом и сложными требованиями к развертыванию. Эти плагины гарантируют, что Cloudify всегда сможет ответить «да» на вопрос «можете ли вы интегрировать этот рабочий процесс?».

Например, их инфраструктурные плагины могут автоматически инвентаризировать существующую инфраструктуру, не требуя значительного этапа адаптации. Оптимизация этапа адаптации необходима при работе с крупными (более 10 000 человек) организациями.

Настраиваемые шаги сборки

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

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

Заворачивать

Раньше Terraform Cloud был доминирующим игроком в области CI IaC, но его конкуренты догнали и превзошли его. У Spacelift, Env0, Scalr и Cloudify есть привлекательные предложения, и в зависимости от потребностей вашей организации любое из них может быть лучшим выбором. Приближается ли конец вашего контракта с Terraform Cloud? Возможно, пришло время для свежей выпечки!

Я рекомендую попробовать все четыре продукта, поскольку каждый из них по-своему описывает, каким должен быть «идеальный» опыт работы с Terraform. После изучения всех этих предложений мне стало совершенно ясно, что Terraform Cloud является наименее многофункциональным среди них, поэтому, если вы являетесь текущим клиентом, отказ абсолютно оправдан.

Большое спасибо Glenn за помощь в формировании контента и Keegan за редактирование.