Применение автоматического рабочего процесса

Завершено

В этом уроке вы узнаете об автоматическом рабочем процессе и о том, как он интегрируется с Terraform и Azure.

О GitHub Actions

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

С помощью GitHub Actions вы можете запустить процесс непрерывной поставки и непрерывной интеграции (CI/CD), связанный с репозиториями GitHub.

С помощью GitHub Actions можно выполнять сборку, тестирование и развертывание кода прямо в GitHub. Вы также можете назначать проверки кода, управлять ветвями и рассматривать проблемы.

Компоненты GitHub Actions

Давайте рассмотрим компоненты GitHub Actions, которые представлены на следующей схеме:

Схема со связью рабочих процессов GitHub Actions с соответствующими заданиями, шагами и действиями.

  • Рабочий процесс: активируется определенными событиями или действиями, рабочий процесс — это коллекция заданий и шагов, которые автоматизируют задачи жизненного цикла разработки программного обеспечения.
  • Задание: набор шагов, выполняемых в средстве выполнения.
  • Шаг. Задача, которая может выполнять одну или несколько команд или действий. Каждый шаг состоит из отдельных действий, которые выполняются после возникновения определенного события (например, запроса на вытягивание).
  • Действие: автономные команды, которые можно объединить в шаги. Для создания задания можно объединить несколько шагов. Отдельные действия — это упакованные скрипты, автоматизирующие задачи разработки программного обеспечения. Чтобы создать рабочий процесс, добавьте действия в YML-файл в каталоге .github/workflows репозитория GitHub.

Действие GitHub Terraform

Действие hashicorp/setup-terraform настраивает Terraform CLI в рабочем процессе GitHub Actions следующим образом:

  • скачивая конкретную версию Terraform CLI и добавляя ее к PATH;
  • настраивая в файле конфигурации Terraform CLI имя узла и токен API для облачного или корпоративного решения Terraform.
  • Установка скрипта-оболочки для упаковки последующих terraform вызовов двоичного файла и предоставления его кода STDOUT, STDERR и выходного кода в виде выходных данных с именем stdout, stderrи exitcodeсоответственно.

Аутентификация GitHub Actions в Azure

Terraform поддерживает несколько вариантов проверки подлинности в Azure:

  • При интерактивном использовании Terraform рекомендуется выполнять аутентификацию с учетной записью Майкрософт.
  • При использовании Terraform из кода или процесса автоматизации рекомендуется выполнять аутентификацию с помощью субъекта-службы Azure.

Субъект-служба — это удостоверение для использования с приложениями, размещенными службами и автоматизированными инструментами для доступа к ресурсам Azure.

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

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

Основные понятия для новых пользователей Azure Pipelines

Давайте познакомимся с компонентами, из которых состоит конвейер Azure.

Схема ключевых понятий и компонентов в Azure Pipeline.

  • Триггер сообщает, что конвейер должен быть выполнен.
  • Конвейер состоит из одного или нескольких этапов. Конвейер может быть развернут в одной или нескольких средах.
  • Этап — это способ организации заданий в конвейере. Каждый этап может включать одно или несколько заданий.
  • Каждое задание выполняется на одном агенте. Задание также может выполняться без агента.
  • Каждый агент запускает задание, которое содержит один или несколько шагов.
  • Шаг может быть задачей или скриптом и является наименьшим стандартным блоком конвейера.
  • Задача — это предварительно упаковаемый скрипт, который выполняет действие, например вызов REST API или публикация артефакта сборки.
  • Артефакт — это коллекция файлов или пакетов, опубликованных в ходе выполнения.

Совет

Более подробные сведения о различных компонентах конвейера и их использовании см. в ссылках, приведенных в разделе Сводка.

Задачи Terraform для Azure Pipelines

При выполнении команд, взаимодействующих с Azure, таких как plan, apply и destroy, задача будет использовать Подключение службы Azure для авторизации операций в целевой подписке. Рекомендуемый способ подключения к Azure — привязка подключения службы к субъекту-службе Azure. Субъект-служба Azure — это удостоверение, которое создается, чтобы использовать автоматизированные инструменты для доступа к ресурсам Azure.

В следующем фрагменте кода YAML используется поставщик azurermAzure Pipeline Terraform. Подключение службы указывается с помощью входных environmentServiceNameAzureRM данных:

- task: TerraformTaskV1@0
  inputs:
    provider: 'azurerm'
    command: 'apply'
    workingDirectory: $(Build.Repository.LocalPath)/terraform
    backendAzureRmContainerName: 'tfstate'
    backendAzureRmKey: 'tf/terraform.tfstate'
    environmentServiceNameAzureRM: $(serviceConnection)

Совет

Если вы используете azurerm в качестве поставщика Terraform Azure Pipeline, необходимо также указать контейнер подключения к службе и хранилища для использования с серверным состоянием Terraform.

Передача параметров

Существует несколько методов передачи параметров в команды Terraform. Переменные — это удобный способ вставки ключевых фрагментов данных в разные части конвейера.

Вы можете задать переменную для конвейера сборки, выполнив следующие действия:

  1. Перейдите на страницу "Конвейеры" , выберите соответствующий конвейер и нажмите кнопку "Изменить".
  2. Найдите Variables (Переменные) для этого конвейера.
  3. Добавьте или обновите переменную.
  4. Чтобы пометить переменную как секретную, выберите Сохранить это значение в тайне.
  5. Сохраните конвейер.

Из выходных данных Terraform в переменные конвейера

Задача TerraformCLI поддерживает выполнение команды output Terraform. При запуске ИНТЕРФЕЙСА командной строки переменные конвейера будут созданы из каждой выходной переменной, созданной terraform output из команды.

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

В следующем уроке показано, как создать пример проекта и применить Azure Pipelines с Terraform для развертывания в Azure.