Развертывание шаблонов ARM с помощью GitHub Actions

GitHub Actions — это набор функций в GitHub для автоматизации рабочих процессов разработки программного обеспечения в том же расположении, где вы храните код и совместно работаете над запросами на вытягивание и проблемами.

Чтобы автоматизировать развертывание шаблона Azure Resource Manager (шаблона ARM) в Azure, воспользуйтесь действием развертывания шаблона Azure 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

  1. В GitHub перейдите в репозиторий.

  2. Перейдите к Параметры в меню навигации.

  3. Выберите "Секреты безопасности>" и "Действия переменных>".

    Screenshot of adding a secret

  4. Нажмите Создать секрет репозитория.

  5. Вставьте все выходные данные JSON, полученные из команды Azure CLI, в поле значения секрета. Присвойте секрету имя AZURE_CREDENTIALS.

  6. Выберите Добавить секрет.

Добавление шаблона 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.

  1. В репозитории GitHub выберите Действия в верхнем меню.
  2. Выберите Новый рабочий процесс.
  3. Выберите настроить рабочий процесс вручную.
  4. Переименуйте файл рабочего процесса, если вы предпочитаете другое имя, отличное от main.yml. Например: deployStorageAccount.yml.
  5. Замените содержимое 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, которые инициируют рабочий процесс. Рабочий процесс инициируется при наличии события отправки в главной ветви, которое изменяет по крайней мере один из двух указанных файлов. Два файла — это файл рабочего процесса и файл шаблона.
  1. Выберите Начать фиксацию.
  2. Выберите Зафиксировать непосредственно в главной ветви.
  3. Выберите Зафиксировать новый файл (или Зафиксировать изменения).

Так как рабочий процесс настроен на активацию файлом рабочего процесса или обновлением файла шаблона, рабочий процесс запускается сразу после фиксации изменений.

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

  1. Выберите вкладку Действия. Вы увидите в списке рабочий процесс Создать deployStorageAccount.yml. Выполнение рабочего процесса занимает 1–2 минуты.
  2. Выберите рабочий процесс, чтобы открыть его.
  3. Выберите Выполнить развертывание ARM в меню, чтобы проверить развертывание.

Очистка ресурсов

Когда вы закончите работу с группой ресурсов и репозиторием, очистите развернутые ресурсы, удалив группу ресурсов и репозиторий GitHub.

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