Поделиться через


Сравнение Terraform и Bicep

Чтобы добиться масштабирования, команды DevOps всегда ищут способы быстрого развертывания кода с доверенным и повторяемым процессом. Когда дело доходит до облака и инфраструктуры, этот процесс все чаще выполняется с помощью инфраструктуры как кода (IaC). Средства IaC варьируются от средств общего назначения до инструментов, предназначенных для определенных сред. Terraform является примером предыдущего, а Bicep предназначен для выполнения задач, связанных с Azure.

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

Состояние и серверная часть

Как Terraform, так и Bicep являются инструментами конфигурации желаемого состояния (DSC), что упрощает управление ИТ и инфраструктурой разработки как кодом. Terraform хранит состояние управляемой инфраструктуры и конфигурации. Terraform использует эти сведения для сопоставления реальных ресурсов с конфигурацией, отслеживания метаданных и повышения производительности больших инфраструктур. Состояние хранится в локальном файле с именем terraform.tfstate, но также может храниться удаленно. Крайне важно создать резервную копию и обеспечить безопасность ваших системных файлов. Как и Terraform, Bicep является декларативным и стремящимся к достижению целей. Однако Bicep не сохраняет состояние. Вместо этого Bicep использует поэтапное развертывание.

Целевые объекты инфраструктуры

При сравнении Bicep с Terraform для управления облачной инфраструктурой важно учитывать целевую облачную среду:

  • Только Azure
  • Многооблачные или гибридные облака

Bicep — это инструмент, предназначенный исключительно для Azure и не рассчитанный на работу с другими облачными сервисами.

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

  • Среды виртуализации
  • Сценарии с несколькими облаками, такие как Azure и другие облака
  • Локальные рабочие нагрузки

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

Средства CLI

Средства интерфейса командной строки играют ключевую роль в оркестрации с помощью реализации и управления технологией автоматизации. Bicep и Terraform предлагают инструменты CLI.

Bicep интегрируется с Azure CLI, что позволяет разработчикам выполнять команды, такие как:

  • az bicep: команды az bicep позволяют выполнять такие задачи, как установка Bicep, создание и публикация файлов Bicep.
  • az deployment. В статье о развертывании ресурсов с помощью Bicep и Azure CLI объясняется, как использовать Azure CLI с файлами Bicep для развертывания ресурсов в Azure.

Интерфейс командной строки Terraform позволяет выполнять такие задачи, как проверка и форматирование кода Terraform, создание и применение плана выполнения.

Bicep также предоставляет функцию, которая упрощает интеграцию Bicep с Azure Pipelines. Существует аналогичная функция, доступная для Terraform, но необходимо скачать и установить расширение задач Terraform Azure Pipelines для Visual Studio. После установки можно запустить команды CLI Terraform из Azure Pipelines. Кроме того, Terraform и Bicep поддерживают GitHub Actions для автоматизации сборок, тестов и развертываний программного обеспечения.

Обработка

Существуют некоторые важные различия между Bicep и Terraform с точки зрения эффективности и оптимизации развертываний. При использовании Bicep обработка выполняется на стороне основной службы инфраструктуры Azure. Эта функция предлагает такие преимущества, как предполетные проверки политики и возможность развертывания нескольких экземпляров в одном регионе. При использовании Terraform обработка выполняется в клиенте Terraform. Таким образом, предварительная обработка не включает вызовы к Azure, так как он использует состояние и HCL (язык HashiCorp) для определения необходимых изменений.

Аутентификация

Функции проверки подлинности Azure зависят от Bicep и Terraform. При использовании Bicep токен авторизации предоставляется при запросе на отправку Bicep-файла и ARM-шаблона. ARM гарантирует, что у вас есть разрешение на создание развертывания и развертывание ресурсов в указанном шаблоне. Terraform аутентифицирует каждый API на основе учетных данных поставщика, таких как Azure CLI, учетная запись службы или управляемые удостоверения для ресурсов Azure. Кроме того, в одной конфигурации можно использовать несколько учетных данных поставщика.

Интеграции Azure

Вы также должны рассмотреть возможность использования таких функций Azure, как политика Azure и взаимодействие каждого из них с другими инструментами и языками. Предварительная проверка Bicep определяет, не соответствует ли ресурс политике, чтобы он завершился сбоем перед развертыванием. Таким образом, разработчики могут исправлять ресурсы в соответствии с политикой, используя предоставленные шаблоны ARM. Шаблон ARM можно использовать для создания назначения политики другому ресурсу для автоматического исправления. Однако Terraform дает сбой при развертывании ресурса, который запрещен вследствие политики.

Интеграция портала

Одним из основных преимуществ, что Bicep имеет по сравнению с Terraform, — это возможность автоматизировать действия портала. С помощью Bicep можно использовать портал Azure для экспорта шаблонов. Экспорт шаблона помогает понять синтаксис и свойства, используемые для развертывания ресурсов. Вы можете автоматизировать будущие развертывания, начиная с экспортированного шаблона и изменяя его в соответствии с вашими потребностями. Пока шаблоны Terraform не будут поддерживаться, необходимо вручную перевести экспортируемый шаблон.

Хотя Terraform не предоставляет те же интеграции портала, что и Bicep, существующая инфраструктура Azure может перейти под управление Terraform с помощью экспорта Azure для Terraform. (Экспорт Azure для Terraform — это средство с открытым кодом, принадлежаемое и поддерживаемое корпорацией Майкрософт в репозитории Azure/aztfexport GitHub.)

Внеполосные изменения

Изменения конфигурации вне диапазона вносятся в конфигурацию устройства вне контекста средства. Например, предположим, что вы развертываете масштабируемый набор виртуальных машин с помощью Bicep или Terraform. Если изменить масштабируемый набор виртуальных машин с помощью портала, это изменение будет "вне полосы" и неизвестно для средства IaC.

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

Если вы используете Terraform, необходимо импортировать изменения из диапазона в состояние Terraform и обновить HCL.

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

Облачные платформы

Cloud Adoption Framework (CAF) — это коллекция документации, рекомендаций и инструментов для ускорения внедрения облака в рамках облачного пути. Azure предоставляет собственные службы для развертывания посадочных зон. Bicep упрощает этот процесс с помощью портального интерфейса на основе шаблонов ARM и внедрения зоны приземления. Terraform использует модульEnterprise-Scale целевых зон для развертывания, управления и эксплуатации с помощью Azure.

Сводка

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