Развертывание шаблонов ARM с помощью GitHub Actions
GitHub Actions — это набор функций в GitHub для автоматизации рабочих процессов разработки программного обеспечения в том же расположении, где вы храните код и совместно работаете над запросами на вытягивание и проблемами.
Чтобы автоматизировать развертывание шаблона Azure Resource Manager (шаблона ARM) в Azure, воспользуйтесь действием развертывания шаблона Azure Resource Manager.
Необходимые компоненты
Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
Учетная запись GitHub. Если у вас ее нет, зарегистрируйтесь бесплатно.
- Репозиторий GitHub для хранения шаблонов Resource Manager и файлов рабочих процессов. Чтобы создать его, см. раздел Создание нового репозитория.
Общие сведения о файле рабочего процесса
Рабочий процесс определяется файлом YAML (.yml) по пути /.github/workflows/
в вашем репозитории. Это определение содержит разные шаги и параметры рабочего процесса.
Этот файл содержит два раздела:
Раздел | Задачи |
---|---|
Аутентификация | 1. Создание учетных данных для развертывания. |
Развертывание | 1. Разверните шаблон Resource Manager. |
Создание учетных данных для развертывания.
Чтобы использовать действие входа Azure с OIDC, необходимо настроить федеративные учетные данные удостоверения в приложении Microsoft Entra или управляемом удостоверении, назначаемом пользователем.
Вариант 1. Приложение Microsoft Entra
- Создайте приложение Microsoft Entra с субъектом-службой, портал Azure, Azure CLI или Azure PowerShell.
- Скопируйте значения для идентификатора клиента, идентификатора подписки и идентификатора каталога (клиента), чтобы использовать его позже в рабочем процессе GitHub Actions.
- Назначьте соответствующую роль субъекту-службе, портал Azure, Azure CLI или Azure PowerShell.
- Настройте учетные данные федеративного удостоверения в приложении Microsoft Entra для доверия маркеров, выданных GitHub Actions в репозитории GitHub.
Вариант 2. Управляемое удостоверение, назначаемое пользователем
- Создание управляемого удостоверения, назначаемого пользователем.
- Скопируйте значения для идентификатора клиента, идентификатора подписки и идентификатора каталога (клиента), чтобы использовать его позже в рабочем процессе GitHub Actions.
- Назначьте соответствующую роль управляемому удостоверению, назначенному пользователем.
- Настройте учетные данные федеративного удостоверения в управляемом удостоверении , назначаемом пользователем, для доверия маркеров, выданных GitHub Actions в репозитории GitHub.
Настройка секретов GitHub
Необходимо указать идентификатор клиента приложения, идентификатор каталога (клиента) и идентификатор подписки для действия входа. Эти значения могут быть указаны непосредственно в рабочем процессе или храниться в секретах GitHub с указанием ссылок на них в рабочем процессе. Сохранение значений в виде секретов GitHub является более безопасным вариантом.
В GitHub перейдите в репозиторий.
Выберите "Секреты безопасности>" и "Действия переменных>".
Нажмите Создать секрет репозитория.
Примечание.
Чтобы повысить безопасность рабочих процессов в общедоступных репозиториях, используйте секреты среды вместо секретов репозитория. Если среда требует утверждения, задание не сможет получить доступ к секретам среды, пока один из обязательных рецензентов не утвердит его.
Создайте секреты для
AZURE_CLIENT_ID
,AZURE_TENANT_ID
иAZURE_SUBSCRIPTION_ID
. Скопируйте эти значения из приложения Microsoft Entra или управляемого удостоверения, назначаемого пользователем, для секретов GitHub:Секрет GitHub Приложение Microsoft Entra или управляемое удостоверение, назначаемое пользователем AZURE_CLIENT_ID Client ID AZURE_SUBSCRIPTION_ID ИД подписки AZURE_TENANT_ID Идентификатор каталога (клиента) Примечание.
По соображениям безопасности рекомендуется использовать секреты GitHub, а не передавать значения непосредственно в рабочий процесс.
Добавление шаблона Resource Manager
Добавьте шаблон Resource Manager в репозиторий GitHub. Этот шаблон создает учетную запись хранения.
https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json
Файл можно разместить в любом месте репозитория. В примере рабочего процесса в следующем разделе предполагается, что файл шаблона называется azuredeploy.json, и он хранится в корне репозитория.
Создание рабочего процесса
Файл рабочего процесса должен храниться в папке .github/workflows в корне репозитория. Расширение файла рабочего процесса может быть либо .yml, либо .yaml.
- В репозитории GitHub выберите Действия в верхнем меню.
- Выберите Новый рабочий процесс.
- Выберите настроить рабочий процесс вручную.
- Переименуйте файл рабочего процесса, если вы предпочитаете другое имя, отличное от main.yml. Например: deployStorageAccount.yml.
- Замените содержимое YML-файла приведенным ниже:
on: [push]
name: Azure ARM
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
# Checkout code
- uses: actions/checkout@main
# Log into Azure
- uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
# Deploy ARM template
- name: Run ARM deploy
uses: azure/arm-deploy@v1
with:
subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION }}
resourceGroupName: ${{ secrets.AZURE_RG }}
template: ./azuredeploy.json
parameters: storageAccountType=Standard_LRS
# output containerName variable from template
- run: echo ${{ steps.deploy.outputs.containerName }}
Примечание.
Вместо этого можно указать файл параметров формата JSON в действии развертывания ARM (пример: .azuredeploy.parameters.json
).
Первый раздел файла рабочего процесса включает в себя следующие элементы.
- name: имя рабочего процесса.
- в: имя событий GitHub, которые инициируют рабочий процесс. Рабочий процесс активируется при наличии события push-отправки в главной ветви, которая изменяет по крайней мере один из указанных двух файлов. Два файла — это файл рабочего процесса и файл шаблона.
- Выберите Начать фиксацию.
- Выберите Зафиксировать непосредственно в главной ветви.
- Выберите Зафиксировать новый файл (или Зафиксировать изменения).
Так как рабочий процесс настроен на активацию файлом рабочего процесса или обновлением файла шаблона, рабочий процесс запускается сразу после фиксации изменений.
Проверка состояния рабочего процесса
- Перейдите на вкладку "Действия ". Отображается рабочий процесс создания deployStorageAccount.yml . Выполнение рабочего процесса занимает 1–2 минуты.
- Выберите рабочий процесс, чтобы открыть его.
- Выберите Выполнить развертывание ARM в меню, чтобы проверить развертывание.
Очистка ресурсов
Когда вы закончите работу с группой ресурсов и репозиторием, очистите развернутые ресурсы, удалив группу ресурсов и репозиторий GitHub.