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

Завершено

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

О GitHub Actions

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

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

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

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

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

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

  • Рабочий процесс: активируется определенными событиями или действиями, рабочий процесс — это коллекция заданий и шагов, которые автоматизируют задачи жизненного цикла разработки программного обеспечения.
  • Задание: набор шагов, выполняемых на исполнителе.
  • Шаг. Задача, которая может выполнять одну или несколько команд или действий. Каждый шаг состоит из отдельных действий, которые выполняются после возникновения определенного события (например, запроса на вытягивание).
  • Действие: автономные команды, которые можно объединить в шаги. Для создания задания можно объединить несколько шагов. Отдельные действия — это упакованные скрипты, автоматизирующие задачи разработки программного обеспечения. Чтобы создать рабочий процесс, вы добавите действия в ФАЙЛ YAML в каталоге .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. Найдите переменные для этого потока.
  3. Добавьте или обновите переменную.
  4. Чтобы пометить переменную как секрет, выберите "Сохранить этот секрет значения".
  5. Сохраните конвейер.

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

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

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

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