Terraform

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

Для обеспечения такой гибкости провайдеры предлагают API, позволяющие в любой момент масштабировать арендуемую среду IaaS с помощью соответствующего программного обеспечения — свободы, которые привлекательны, но также требуют больших административных усилий. С помощью программного обеспечения Terraform американская компания HashiCorp предлагает правильный ответ для минимизации этих усилий в долгосрочной перспективе. О том, что представляет собой этот инструмент для инфраструктуры как кода (IaC), рассказывается ниже.

Что такое Terraform?

Когда речь заходит о базовой инфраструктуре при разработке программного обеспечения, администраторы всегда сталкиваются с проблемой: тенденция к гибкой разработке приводит к все более коротким циклам разработки и еще более быстрому внедрению изменений. Чтобы соответствовать высоким требованиям такого быстрого темпа, ИТ-менеджерам необходимо максимально автоматизировать управление ресурсами. Это предполагает написание машиночитаемого кода конфигурации, также известного как Infrastructure-as-Code (IaC).

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

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

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

Terraform в основном является Open Source (Mozilla Public License 2.0) и поэтому может быть загружен и использован бесплатно. Однако некоторые функции совместной работы, а также функции для государственных учреждений и организаций доступны только в платных редакциях «Enterprise Pro» и «Enterprise Premium». IaC Service 2012 был разработан компанией HashiCorp из Сан-Франциско.

Примечание

Terraform сотрудничает с более чем 160 различными партнерами. Среди них Amazon Web Services (AWS) Atlassian, Cloudflare, Google, Microsoft и Oracle. Полный список всех партнеров можно найти на официальном сайте HashiCorp.

Как Terraform поддерживает пользователей при создании инфраструктуры как кода (IaC)?

Поскольку обычно для реализации ИТ-инфраструктуры или необходимых ресурсов для разработки программного обеспечения используется не один, а множество облачных сервисов, вам как ответственному лицу приходится по умолчанию адаптироваться к множеству различных интерфейсов (API), а также знакомиться с нюансами соответствующей платформы. Это касается независимо от того, вносите ли вы изменения в инфраструктуру или хотите написать собственные IaC-инструкции для автоматизированного доступа.

Как у пользователя Terraform, у вас не будет этой проблемы. Вместо языков интерфейса вы можете использовать либо упрощенный язык разметки JavaScript JSON, либо основанный на JSON язык HashiCorp Configuration Language (HCL) для описания желаемой целевой инфраструктуры. Именно последний вариант рекомендует HashiCorp, поскольку он еще больше упрощает написание и чтение кода благодаря комментариям и другим возможностям. Terraform работает с соответствующими конфигурационными файлами как с обычными текстовыми файлами, в то время как инструмент IaC использует расширение .tf. Используя соответствующий инструмент, такой как Git или SVN, вы можете легко версировать эти файлы, если захотите.

Примечание

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

Самые важные компоненты Terraform с первого взгляда

Основная функция Terraform — удобная для пользователя конфигурация ресурсов инфраструктуры, в которой HCL или JSON играют центральную роль. Однако лингвистическая простота — это далеко не все, что отличает данный IaC-инструмент: Созданные конфигурационные файлы могут достичь желаемого эффекта только благодаря сотрудничеству всех важных поставщиков программного и аппаратного обеспечения с индивидуально расширяемой базовой архитектурой, а также простому в использовании интерфейсу командной строки.

Язык конфигурации HCL

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

  • Блоки: Блоки — это контейнеры для содержимого. В этой функции они предоставляют место для конфигураций любых объектов, особенно для конфигурируемых ресурсов. Каждый блок имеет тип блока, одну или несколько меток и область тела. Последняя содержит любое количество аргументов и подблоков.
  • Аргументы: Чтобы присвоить значение имени, в HCL используются аргументы. Они всегда объявляются внутри блоков.
  • Выражения: Выражения представляют значение. Это может быть конкретное значение или ссылка на одно или несколько других значений. Выражение встречается либо как значение для аргумента, либо внутри других аргументов.

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

Terraform CLI (интерфейс командной строки)

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

Примечание

CLI (Command Line Interface) — это текстовый интерфейс, с помощью которого люди передают инструкции машине, вводя команды. Это понятие отличается от управления машиной с помощью графических элементов управления, таких как значки, меню или кнопки. Последний тип управления называется графическим интерфейсом или GUI (Graphical User Interface).

Функция хранения и импорта

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

Примечание

Terraform использует специальные бэкенды вместо локального бэкенда по умолчанию для хранения нелокальных статусов и выполнения операций (возможно только для «Enterprise Pro» и «Enterprise Premium»). Эти специальные уровни абстракции должны быть определены непосредственно в конфигурационном файле и инициализированы через CLI.

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

Граф зависимостей

Terraform позволяет создать график зависимостей определенной конфигурации инфраструктуры или плана выполнения. Для этого достаточно воспользоваться командой CLI «terraform graph» и определить желаемый тип графа, после чего Terraform автоматически сгенерирует соответствующий выходной файл в формате DOT. Это можно воспроизвести с помощью программы визуализации Graphviz, которую HashiCorp также рекомендует в официальной онлайн-документации. Командная строка также может быть использована для простого преобразования файла в формат изображения, например SVG.

Плагины Terraform

Terraform основан на архитектуре, основанной на плагинах, что позволяет в любой момент расширить функциональность набора IaC. Например, комиссары для выполнения скриптов относятся к плагинам, как и расширения провайдеров, которые предоставляют CLI всю необходимую информацию о поддерживаемых веб-сервисах. Разработчики, владеющие языком программирования Go(lang) и знающие соответствующие API провайдеров, могут даже написать собственные расширения для связи Terraform с облачными сервисами, которые официально не поддерживаются. Новые плагины от HashiCorp загружаются и включаются автоматически, в то время как все сторонние расширения требуют, чтобы вы сделали это вручную.

Примеры использования: Каковы типичные области применения Terraform?

Благодаря диапазону поддерживаемых поставщиков облачных услуг, который HashiCorp постоянно расширяет и который также может быть самостоятельно расширен при наличии соответствующего ноу-хау, Terraform подходит для широкого спектра приложений. Среди наиболее популярных случаев использования инструмента Infrastructure-as-Code можно выделить следующие три:

Установка приложений Heroku

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

Многоуровневые приложения

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

Программно-определяемые сети (SDN)

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

Совет

С Enterprise Cloud и Data Center Designer IONOS также предлагает программно-определяемые сетевые решения для предприятий по разумной цене!

Многооблачный подход

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

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

Terraform: Преимущества и недостатки с первого взгляда

Инфраструктура как код помогает вам оставаться конкурентоспособными в постоянно меняющейся ИТ-среде. Высокий уровень автоматизации помогает вам отслеживать необходимые ресурсы и как можно быстрее вносить необходимые изменения в инфраструктуру. Terraform оказывается эффективным инструментом как для создания, так и для исполнения «программируемой» инфраструктуры — не в последнюю очередь благодаря поддержке таких облачных сервисов, как AWS, Azure и Google Cloud. Одним из главных достоинств программного обеспечения IaC является его единый синтаксис для описания инфраструктуры. Однако у вас всегда есть выбор между конфигурационным языком HCL компании HashiCorp и JSON.

Примечание

Среди различных доступных плагинов терраформ есть расширение «IONOS Provider». Оно позволяет инструменту IaC получить доступ к API IONOS Cloud Server и, таким образом, конфигурировать и управлять ресурсами облачных серверов в центрах обработки данных IONOS.

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

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

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

Оцените статью
cdelat.ru
Добавить комментарий