Развертывание шаблонов 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. |
Создание учетных данных для развертывания.
Создайте субъект-службу с помощью командыaz ad sp create-for-rbac в Azure CLI. Чтобы выполнить эту команду, откройте Azure Cloud Shell на портале Azure или нажмите кнопку Попробовать.
az ad sp create-for-rbac --name "myML" --role contributor \
--scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
--json-auth
Параметр --json-auth
доступен в версиях >Azure CLI = 2.51.0. Версии до этого использования --sdk-auth
с предупреждением об нерекомендуемом.
В указанном выше примере замените заполнители соответствующим идентификатором подписки, именем группы ресурсов и именем приложения. Выходные данные содержат объект JSON с учетными данными назначения роли, которые предоставляют доступ к приложению Службы приложений, как показано ниже. Скопируйте этот объект JSON для последующего использования.
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
(...)
}
Настройка секретов GitHub
В GitHub перейдите в репозиторий.
Перейдите к параметрам в меню навигации .
Выберите "Секреты безопасности>" и "Действия переменных>".
Нажмите Создать секрет репозитория.
Вставьте все выходные данные JSON, полученные из команды Azure CLI, в поле значения секрета. Присвойте секрету имя
AZURE_CREDENTIALS
.Выберите Добавить секрет.
Добавление шаблона 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.