Настройка Terraform и создание сценариев

Завершено

В этом уроке мы рассмотрим настройку Terraform и создание сценариев.

Почему именно Terraform?

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

HashiCorp Terraform отлично подходит для развертывания инфраструктуры в разных поставщиках облачных служб. Это решение предоставляет разработчикам единые средства для управления определениями каждой инфраструктуры.

Автоматизация управления инфраструктурой:

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

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

Изучение изменений в инфраструктуре перед их применением

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

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

Файлы конфигурации Terraform

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

Файлы конфигурации Terraform используют собственный язык конфигурации, аналогичный YAML, который предназначен для предоставления описания инфраструктуры.

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

Файлы конфигурации хранятся в виде обычных текстовых файлов с расширением .tf. В их число входят:

  • main.tf: (обязательно) Определяет основную структуру, развертывая полную инфраструктуру напрямую или через вызовы модулей.
  • outputs.tf. Определяет каждое возвращаемое значение модуля Terraform
  • variables.tf. Определяет переменные в main.tf, является ли они обязательными или нет

Снимок экрана: структура конфигурации Terraform.

Модули

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

Использование модулей предоставляет много преимуществ. К таким преимуществам можно отнести следующее:

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

Файл main.tf

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

Рабочий процесс Terraform

Terraform рекомендует свой основной рабочий процесс "инициализация, планирование и применение" для автоматизации. Этот рабочий процесс запускает все действия CI/CD Terraform для новых и обновленных запросов на вытягивание из GitHub.

Схема рабочего процесса Terraform с базовыми действиями инициализации, планирования и применения.

Основные действия для этого рабочего процесса:

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

Штат

Состояние позволяет Terraform понять, какие ресурсы Azure нужно добавить, обновить или удалить.

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

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

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

Следующие шаги

В следующем уроке мы обсудим использование Terraform с GitHub Actions или Azure Pipelines для подготовки и развертывания приложений.