Применение автоматического рабочего процесса
В этом уроке вы узнаете об автоматическом рабочем процессе и о том, как он интегрируется с Terraform и Azure.
О GitHub Actions
Как менеджеру инфраструктуры вам потребуются рабочие процессы сборки и развертывания, использующие то же управление версиями, что и в проекте.
С помощью GitHub Actions вы можете запустить процесс непрерывной поставки и непрерывной интеграции (CI/CD), связанный с репозиториями GitHub.
С помощью GitHub Actions можно выполнять сборку, тестирование и развертывание кода прямо в GitHub. Вы также можете назначать проверки кода, управлять ветвями и рассматривать проблемы.
Компоненты 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.
- Триггер сообщает, что конвейер должен быть выполнен.
- Конвейер состоит из одного или нескольких этапов. Конвейер может быть развернут в одной или нескольких средах.
- Этап — это способ организации заданий в конвейере. Каждый этап может включать одно или несколько заданий.
- Каждое задание выполняется на одном агенте. Задание также может выполняться без агента.
- Каждый агент запускает задание, которое содержит один или несколько шагов.
- Шаг может быть задачей или скриптом и является наименьшим стандартным блоком конвейера.
- Задача — это предварительно упаковаемый скрипт, который выполняет действие, например вызов REST API или публикация артефакта сборки.
- Артефакт — это коллекция файлов или пакетов, опубликованных в ходе выполнения.
Совет
Более подробные сведения о различных компонентах конвейера и их использовании см. в ссылках, приведенных в разделе Сводка.
Задачи Terraform для Azure Pipelines
При выполнении команд, взаимодействующих с Azure, таких как plan
, apply
и destroy
, задача будет использовать Подключение службы Azure для авторизации операций в целевой подписке.
Рекомендуемый способ подключения к Azure — привязка подключения службы к субъекту-службе Azure. Субъект-служба Azure — это удостоверение, которое создается, чтобы использовать автоматизированные инструменты для доступа к ресурсам Azure.
В следующем фрагменте кода YAML используется поставщик azurerm
Azure 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. Переменные — это удобный способ вставки ключевых фрагментов данных в разные части конвейера.
Вы можете задать переменную для конвейера сборки, выполнив следующие действия:
- Перейдите на страницу "Конвейеры" , выберите соответствующий конвейер и нажмите кнопку "Изменить".
- Найдите Variables (Переменные) для этого конвейера.
- Добавьте или обновите переменную.
- Чтобы пометить переменную как секретную, выберите Сохранить это значение в тайне.
- Сохраните конвейер.
Из выходных данных Terraform в переменные конвейера
Задача TerraformCLI поддерживает выполнение команды output
Terraform. При запуске ИНТЕРФЕЙСА командной строки переменные конвейера будут созданы из каждой выходной переменной, созданной terraform output
из команды.
Следующие шаги
В следующем уроке показано, как создать пример проекта и применить Azure Pipelines с Terraform для развертывания в Azure.