Pulumi против Terraform:сравнение ключевых отличий
Terraform и Pulumi — два популярных инструмента «Инфраструктура как код» (IaC), которые используются для подготовки и управления виртуальными средами. Оба инструмента имеют открытый исходный код, широко используются и предоставляют схожие функции. Однако без подробного сравнения выбрать между Pulumi и Terraform непросто.
Ниже приведены основные различия между Pulumi и Terraform. . В статье анализируется, какой инструмент лучше работает в реальных случаях использования и предлагает большую ценность для эффективного жизненного цикла разработки программного обеспечения.
Ключевые различия между Pulumi и Terraform
- У Pulumi нет языка программного обеспечения для предметной области. Разработчики могут создавать инфраструктуру в Pulumi, используя языки общего назначения, такие как Go, .NET, JavaScript и т. д. С другой стороны, Terraform использует свой язык конфигурации Hashicorp.
- Terraform следует строгим правилам кодекса. Пулуми более гибок в этом отношении.
- Terraform хорошо задокументирован и имеет активное сообщество. У Пулуми небольшое сообщество, и оно не так задокументировано.
- Terraform упрощает устранение неполадок с файлом состояния.
- Pulumi обеспечивает превосходную встроенную поддержку тестирования благодаря отсутствию языка, специфичного для предметной области.
Что такое пулуми?
Pulumi — это инструмент IaC с открытым исходным кодом для проектирования, развертывания и управления ресурсами в облачной инфраструктуре. Инструмент поддерживает множество общедоступных, частных и гибридных облачных провайдеров, таких как AWS, Azure, Google Cloud, Kubernetes, phoenixNAP Bare Metal Cloud и OpenStack.
Pulumi используется для создания традиционных элементов инфраструктуры, таких как виртуальные машины, сети и базы данных. Этот инструмент также используется для разработки современных облачных компонентов, включая контейнеры, кластеры и бессерверные функции.
Хотя в Pulumi есть императивные языки программирования, используйте инструмент для декларативного IaC. Пользователь определяет желаемое состояние инфраструктуры, а Pulumi создает запрошенные ресурсы.
Что такое Terraform?
Terraform – это популярный инструмент IaC с открытым исходным кодом для создания, изменения и управления версиями виртуальной инфраструктуры.
Инструмент используется всеми основными облачными провайдерами. Terraform используется для предоставления всего, от низкоуровневых компонентов, таких как хранилище и сеть, до высокопроизводительных ресурсов, таких как записи DNS. Создание сред с помощью Terraform является удобным и эффективным. С помощью этого инструмента пользователи также могут управлять средами с несколькими облаками или несколькими предложениями.
Terraform — это декларативный инструмент IaC. Пользователи пишут файлы конфигурации, чтобы описать необходимые компоненты для Terraform. Затем инструмент создает план, описывающий необходимые шаги для достижения желаемого состояния. Если пользователь согласен со схемой, Terraform выполняет настройку и создает нужную инфраструктуру.
Сравнение Pulumi и Terraform
Хотя оба инструмента служат одной и той же цели, Pulumi и Terraform различаются по нескольким параметрам. Вот наиболее заметные различия между двумя инфраструктурами как инструментами кода:
1. В отличие от Terraform, у Pulumi нет DSL
Чтобы использовать Terraform, разработчик должен изучить предметно-ориентированный язык (DSL), называемый языком конфигурации Hashicorp (HCL). HCL славится тем, что с ним легко начать, но трудно освоить.
Напротив, Pulumi позволяет разработчикам использовать языки общего назначения, такие как JavaScript, TypeScript, .Net, Python и Go. Знакомые языки допускают знакомые конструкции, такие как циклы for, функции и классы. Все эти функции доступны и в HCL, но для их использования требуются обходные пути, усложняющие синтаксис.
Отсутствие предметно-ориентированного языка является основным преимуществом Pulumi. Позволяя пользователям придерживаться того, что они знают, Pulumi сокращает шаблонный код и поощряет использование передовых методов программирования.
2. Различные типы управления состоянием
В Terraform файлы состояния по умолчанию хранятся на локальном жестком диске в файле terraform.tfstate. файл. В Pulumi пользователи создают бесплатную учетную запись на официальном сайте, а файлы состояния хранятся в Интернете.
Предоставляя пользователям возможность хранить файлы состояния через бесплатную учетную запись, Pulumi предлагает множество функций. Имеется подробный обзор всех ресурсов, а пользователи могут ознакомиться с историей их развертывания. Каждое развертывание предоставляет анализ деталей конфигурации. Эти функции обеспечивают эффективное управление, просмотр и мониторинг действий.
Чтобы воспользоваться аналогичными преимуществами Terraform, вы должны отказаться от настройки локального жесткого диска по умолчанию. Для этого используйте учетную запись Terraform Cloud или обратитесь к стороннему поставщику облачных хранилищ. Небольшие команды до пяти пользователей могут получить бесплатную версию Terraform Cloud.
Pulumi требует платной учетной записи для любой установки с более чем одним разработчиком. Платная версия Pulumi предлагает дополнительные преимущества. К ним относятся возможности совместного использования команд, интеграция с Git и Slack, а также поддержка функций, которые интегрируют инструмент IaC в развертывания CI/CD. Учетная запись группы также включает механизмы блокировки состояния.
3. Pulumi предлагает больше универсальности кода
Как только инфраструктура определена, Terraform направляет пользователей к желаемой декларативной конфигурации. Код всегда чистый и короткий. Проблемы возникают, когда вы пытаетесь реализовать определенные условные ситуации, поскольку HCL ограничен в этом отношении.
Pulumi позволяет пользователям писать код на стандартном языке программирования, поэтому доступны многочисленные методы для достижения желаемых параметров.
4. Terraform лучше структурирует большие проекты
Terraform позволяет пользователям разбивать проекты на несколько файлов и модулей для создания повторно используемых компонентов. Terraform также позволяет разработчикам повторно использовать файлы кода для различных сред и целей.
Pulumi структурирует инфраструктуру либо как монолитный проект, либо как микропроекты. Различные стеки действуют как разные среды. При использовании расширений Pulumi более высокого уровня, которые сопоставляются с несколькими ресурсами, невозможно десериализовать ссылки стека обратно в ресурсы.
5. Terraform обеспечивает лучшее устранение неполадок с файлом состояния
При использовании инструмента IaC неизбежно попадание в поврежденное или несогласованное состояние. Сбой обычно вызывает несогласованное состояние во время обновления, ошибку или дрейф, вызванный неправильным изменением вручную.
Terraform предоставляет несколько команд для работы с поврежденным или несогласованным состоянием:
refresh
устраняет дрейф, согласовывая известное состояние с реальным состоянием инфраструктуры.state {rm,mv}
используется для изменения файла состояния вручную.import
находит существующий облачный ресурс и импортирует его в ваше состояние.taint/untaint
помечает отдельные ресурсы как требующие отдыха.
Pulumi также предлагает несколько команд CLI в случае поврежденного или несогласованного состояния:
refresh
работает так же, как обновление Terraform.state delete
удаляет ресурс из файла состояния.
Pulumi не имеет эквивалента taint/untaint
. Для любого неудачного обновления пользователю необходимо отредактировать файл состояния вручную.
6. Pulumi предлагает лучшее встроенное тестирование
Поскольку Pulumi использует распространенные языки программирования, инструмент поддерживает модульные тесты с любой структурой, поддерживаемой языком программного обеспечения по выбору пользователя. Что касается интеграции, Pulumi поддерживает только написание тестов на Go.
Terraform не предлагает официальную поддержку тестирования. Для тестирования среды IaC пользователи должны полагаться на сторонние библиотеки, такие как Terratest. и Кухня-Терраформ .
7. У Terraform лучшая документация и более широкое сообщество
По сравнению с Terraform официальная документация Pulumi по-прежнему ограничена. Лучшими ресурсами для этого инструмента являются примеры, найденные на GitHub и в Pulumi Slack.
Размер сообщества также играет важную роль с точки зрения полезных ресурсов. Terraform был широко используемым инструментом IaC в течение многих лет, поэтому его сообщество росло вместе с его популярностью. Сообщество Pulumi все еще далеко от такого размера.
8. Развертывание в облаке
Pulumi позволяет пользователям развертывать ресурсы в облаке с локального устройства. По умолчанию Terraform требует использования платформы SaaS для развертывания компонентов в облаке.
Если пользователь хочет выполнить развертывание с локального устройства с помощью Terraform, AWS_ACCESS_KEY
и AWS_SECRET_ACCESS_KEY
переменные должны быть добавлены в среду Terraform Cloud. Этот процесс не подходит для федеративных учетных записей SSO для Amazon Web Services (AWS). Также стоит обратить внимание на проблемы безопасности, связанные с тем, что сторонние системы имеют доступ к вашему облаку.
Распространенным обходным решением является использование Terraform Cloud исключительно для хранения информации о состоянии. Однако этот вариант предоставляется за счет других функций Terraform Cloud.
Пулуми | Терраформ | |
---|---|---|
Издатель | Пулуми | ХашиКорп |
Метод | Отправить | Отправить |
подход IaC | Декларативный | Декларативный |
Цена | Бесплатно для одного пользователя, три платных пакета для команд | Бесплатно для пяти пользователей, два платных пакета для больших команд |
Написано | Тайпоскрипт, Python, Go | Перейти |
Источник | Открыть | Открыть |
Доменный язык (DSL) | Нет | Да (язык конфигурации Hashicorp) |
Основное преимущество | Код на знакомом языке программирования, отличный готовый графический интерфейс | Чисто декларативный инструмент IaC, работает со всеми основными облачными провайдерами, позволяет создавать строительные блоки инфраструктуры |
Основной недостаток | Все еще не отшлифовано, местами не хватает документации | HCL ограничивает свободу кодирования, и его необходимо освоить, чтобы использовать расширенные функции |
Управление файлами состояния | Файлы состояния хранятся через бесплатную учетную запись | Файлы состояния по умолчанию хранятся на локальном жестком диске |
Сообщество | Средний размер | Большой |
Простота использования | Использование JavaScript, TypeScript, .Net, Python и Go делает IaC привычной | HCL — сложный язык, хотя и с чистым синтаксисом |
Модульность | Проблемы с высокоуровневыми расширениями Pulumi | Идеально благодаря многоразовым компонентам |
Документация | Ограничено, лучшие ресурсы можно найти на Pulumi Slack и GitHub | Отличная официальная документация |
Универсальность кода | Поскольку пользователи пишут код на разных языках, существует множество способов достичь желаемого состояния | HCL оставляет мало места для универсальности |
Развертывание в облаке | Можно сделать с локального устройства | Необходимо использовать платформу SaaS |
Тестирование | Тестируйте с любой платформой, поддерживающей используемый язык программирования | Должно выполняться с помощью сторонних инструментов |
Совместное использование Pulumi и Terraform
Можно запустить IaC, используя одновременно Pulumi и Terraform. Однако использование обоих инструментов требует некоторых обходных путей.
Pulumi поддерживает использование локального или удаленного состояния Terraform из программ Pulumi. Эта поддержка помогает при постепенном внедрении Pulumi, если вы решите продолжить управление подмножеством своей виртуальной инфраструктуры с помощью Terraform.
Например, вы можете решить оставить свои определения VPC и низкоуровневых сетей в Terraform, чтобы избежать нарушения инфраструктуры. Используя поддержку эталона состояния, вы можете проектировать высокоуровневую инфраструктуру с Pulumi и по-прежнему использовать информацию VPC на базе Terraform. В этом случае сосуществование Pulumi и Terraform легко управлять и автоматизировать.
Вывод:обе инфраструктуры отлично подходят для работы с кодом
И Terraform, и Pulumi предлагают аналогичные функции. Pulumi — менее жесткий инструмент, ориентированный на функциональность. Terraform стал более зрелым, лучше документирован и пользуется сильной поддержкой сообщества.
Однако то, что отличает Pulumi, — это его соответствие культуре DevOps.
Выражая инфраструктуру с помощью популярных языков программирования, Pulumi устраняет разрыв между Dev и Ops. Он обеспечивает общий язык между командами разработки и эксплуатации. В отличие от этого, Terraform укрепляет разрозненность отделов, раздвигая группы разработки и эксплуатации дальше друг от друга с помощью своего предметно-ориентированного языка.
С этой точки зрения Pulumi лучше подходит для стандартизации конвейера DevOps на протяжении всего жизненного цикла разработки. Инструмент усиливает единообразие и позволяет ускорить разработку программного обеспечения с меньшим количеством ошибок.
Мы предлагаем также ознакомиться с нашей статьей Helm vs Terraform, чтобы узнать больше о различиях между этими двумя инструментами подготовки.
Облачные вычисления
- Что такое шестигранный ключ?
- Интерфейс Java NavigableMap
- Ключ № 1 к успеху надежности
- Сравнение ULTEM 1010 и ULTEM 9085
- malloc() и calloc():основные различия объясняются примерами
- JDK против JRE против JVM:ключевые различия
- Ключевые характеристики вилочного погрузчика, которые следует учитывать
- Обработка на станках с ЧПУ и 3D-печать:ключевые отличия, которые вам нужно знать
- Что такое скелетный ключ?
- Отличия токарно-фрезерных работ