Краткое руководство. Развертывание файлов Bicep с помощью GitHub Actions
GitHub Actions — это набор функций в GitHub для автоматизации рабочих процессов разработки программного обеспечения. В этом кратком руководстве вы воспользуетесь действиями GitHub для развертывания Azure Resource Manager, чтобы автоматизировать развертывание файла Bicep в Azure.
Здесь приведено краткое описание GitHub Actions и файлов Bicep. Дополнительные инструкции по настройке действий и проектов GitHub см. в статье "Развертывание ресурсов Azure с помощью Bicep и GitHub Actions".
Необходимые компоненты
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно .
- Учетная запись GitHub. Если у вас ее нет, зарегистрируйтесь бесплатно.
- Репозиторий GitHub для хранения BICEP-файлов и файлов рабочих процессов. Чтобы создать его, см. раздел Создание нового репозитория.
Создать группу ресурсов
Создать группу ресурсов. Далее в этом кратком руководстве вы развернете файл Bicep в этой группе ресурсов.
az group create -n exampleRG -l westus
Создание учетных данных для развертывания.
Чтобы использовать действие входа 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, а не передавать значения непосредственно в рабочий процесс.
Добавление BICEP-файла
Добавьте BICEP-файл в репозиторий GitHub. Следующий BICEP-файл создает учетную запись хранения:
@minLength(3)
@maxLength(11)
param storagePrefix string
@allowed([
'Standard_LRS'
'Standard_GRS'
'Standard_RAGRS'
'Standard_ZRS'
'Premium_LRS'
'Premium_ZRS'
'Standard_GZRS'
'Standard_RAGZRS'
])
param storageSKU string = 'Standard_LRS'
param location string = resourceGroup().location
var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: uniqueStorageName
location: location
sku: {
name: storageSKU
}
kind: 'StorageV2'
properties: {
supportsHttpsTrafficOnly: true
}
}
output storageEndpoint object = stg.properties.primaryEndpoints
BICEP-файл требует один параметр storagePrefix, содержащий от 3 до 11 символов.
Файл можно разместить в любом месте репозитория. В примере рабочего процесса в следующем разделе предполагается, что BICEP-файл имеет имя main.bicep и хранится в корневом каталоге репозитория.
Создание рабочего процесса
Рабочий процесс определяет шаги, выполняемые при активации. Это файл YAML (YML), расположенный по пути .github/workflows/ в вашем репозитории. Расширение файла рабочего процесса может быть либо .yml, либо .yaml.
Чтобы создать рабочий процесс, сделайте следующее:
В репозитории GitHub выберите Действия в верхнем меню.
Выберите Новый рабочий процесс.
Выберите настроить рабочий процесс вручную.
Переименуйте файл рабочего процесса, если вы предпочитаете другое имя, отличное от main.yml. Например: deployBicepFile.yml.
Замените содержимое YML-файла следующим кодом:
on: [push] name: Azure ARM permissions: id-token: write contents: read jobs: build-and-deploy: runs-on: ubuntu-latest steps: # Checkout code - uses: actions/checkout@main # Log into Azure - uses: azure/login@v2 with: client-id: ${{ secrets.AZURE_CLIENT_ID }} tenant-id: ${{ secrets.AZURE_TENANT_ID }} subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }} # Deploy Bicep file - name: deploy uses: azure/arm-deploy@v1 with: subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION }} resourceGroupName: ${{ secrets.AZURE_RG }} template: ./main.bicep parameters: 'storagePrefix=mystore storageSKU=Standard_LRS' failOnStdErr: false
Выберите " Зафиксировать изменения".
Выберите Зафиксировать непосредственно в главной ветви.
Выберите Зафиксировать новый файл (или Зафиксировать изменения).
Обновление файла рабочего процесса или BICEP-файла приводит к активации рабочего процесса. Рабочий процесс запускается сразу после того, как вы зафиксируете изменения.
Проверка состояния рабочего процесса
- Перейдите на вкладку "Действия ". Отображается рабочий процесс создания deployBicepFile.yml . Выполнение рабочего процесса занимает 1–2 минуты.
- Выберите рабочий процесс, чтобы открыть его, и проверьте
Status
егоSuccess
.
Очистка ресурсов
Когда вы закончите работу с группой ресурсов и репозиторием, очистите развернутые ресурсы, удалив группу ресурсов и репозиторий GitHub.
az group delete --name exampleRG