Terraform

menu icon

Terraform

В данном руководстве приведены базовые сведения о Terraform — инструменте, позволяющем программистам безопасно и эффективно строить, изменять и создавать инфраструктуру.

Что такое Terraform?

Terraform — это инструмент с открытым исходным кодом "Инфраструктура как код", созданный HashiCorp.

Terraform — это инструмент для создания декларативного кода, который позволяет разработчикам использовать язык высокого уровня, называемый HCL (HashiCorp Configuration Language) для описания нужной облачной или локальной инфраструктуры "конечного состояния" для запуска приложения. Затем он генерирует план для достижения этого конечного состояния и выполняет план по предоставлению инфраструктуры.

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

Каковы преимущества инфраструктуры как кода (IaC)?

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

Инфраструктура как код может помочь в решении следующих задач:

  • Увеличение скорости: автоматизация выполняется быстрее, чем вручную с использованием интерфейса для развертывания и/или подключения ресурсов.
  • Повышение надежности: при большом размере инфраструктуры можно легко настроить ресурс или службы предоставления ресурсов в неправильной последовательности. Благодаря IaC ресурсы всегда предоставляются и настраиваются в точности так, как заявлено.
  • Предотвращение отклонения от конфигурации: отклонение от конфигурации происходит в том случае, если конфигурация, обеспечивающая вашу среду, больше не соответствует фактической среде. (См. раздел "Неизменная инфраструктура" ниже).
  • Поддержка экспериментов, тестирования и оптимизации: поскольку "инфраструктура как код" значительно ускоряет и упрощает подготовку новой инфраструктуры, можно вносить экспериментальные изменения и тестировать их, не затрачивая много времени и ресурсов; и если вам нравятся результаты, вы можете быстро масштабировать новую инфраструктуру.

Для получения более подробной информации см. раздел "Что такое инфраструктура как код?":

Каковы преимущества Terraform?

Существует несколько ключевых причин, по которым разработчики предпочитают Terraform другим инфраструктурам в качестве инструмента программирования:

  • ПО с открытым исходным кодом: Terraform поддерживает большие сообщества авторов, создающих плагины для платформы. Независимо от того, услугами какого поставщика облачных услуг вы пользуетесь, вы легко сможете найти плагины, расширения и профессиональную поддержку. Это также означает, что Terraform быстро развивается и постоянно предлагает новые преимущества и улучшения.
  • Независимость от платформы: Terraform можно использовать с любым поставщиком облачных услуг. Большинство других инструментов IaC предназначены для работы с одним поставщиком облачных услуг.
  • Неизменная инфраструктура: большая часть инструментов "инфраструктуры как кода" создает изменяемую инфраструктуру, то есть инфраструктура может изменяться в соответствии с такими изменениями, как обновление промежуточного программного обеспечения или новый сервер хранения. Опасность изменяемой инфраструктуры заключается в отклонении от конфигурации — по мере увеличения числа изменений, фактическое предоставление различных серверов или других элементов инфраструктуры отклоняется от исходной конфигурации, что затрудняет диагностику, исправление ошибок или проблем с производительностью. Terraform обеспечивает неизменную инфраструктуру, что означает, что при каждом изменении в среде текущая конфигурация заменяется на новую, учитывающую это изменение, и инфраструктура возвращается к исходному состоянию. Но что еще лучше, предыдущие конфигурации можно сохранить в виде версий, чтобы вернуться к ним в случае необходимости.

Модули Terraform

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

Провайдеры Terraform

ПроводникиTerraform — это модули, реализующие типы ресурсов. Проводники содержат весь код, необходимый для аутентификации и подключения к услуге — как правило, поставщика услуг публичных облаков — от имени пользователя. Можно найти проводников для облачных платформ и услуг, которые вы используете, добавить их в конфигурацию, а затем использовать их ресурсы для предоставления инфраструктуры. Проводники доступны практически для каждого крупного поставщика облачных услуг, SaaS и других служб, разработанных и/или поддерживаемых сообществом Terraform или отдельными организациями. Подробный список приводится в разделе Документация по Terraform (ссылка на сайт, не принадлежащий IBM).

Terraform и Kubernetes

Иногда возникает путаница между Terraform и Kubernetes и тем, что они на самом деле делают. На самом деле они не являются альтернативами друг другу и эффективно работают вместе.

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

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

Terraform позволяет обеспечить автоматизацию и управление возможностями уровня инфраструктуры как услуги (IaaS), платформы как услуги (PaaS) и даже программного обеспечения как услуги (SaaS), а также параллельное создание всех этих ресурсов на уровне всех этих провайдеров. Terraform можно использовать для автоматизации предоставления Kubernetes — особенно управляемых кластеров Kubernetes на облачных платформах — и автоматизировать внедрение приложений в кластер.

Terraform и Ansible

Как Terraform, так и Ansible являются инструментами "инфраструктуры как кода", но между ними есть некоторые существенные различия:

  • В то время как Terraform является чисто декларативным инструментом (см. выше), Ansible объединяет в себе как декларативную, так и процедурную конфигурацию. В процедурной конфигурации указываются шаги или точный способ, которым вы хотите предоставить инфраструктуру в желаемом состоянии. Процедурная конфигурация предполагает больше работы, но она обеспечивает больший контроль.
  • Terraform — это инструмент с открытым исходным кодом; Ansible разрабатывается и продается компанией Red Hat.

IBM и Terraform

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

Почитайте дополнительную информацию о том, как использовать IBM Cloud Schematics.

Для получения дополнительной информации о Terraform, зарегистрируйте IBMid и создайте учетную запись IBM Cloud.