Упражнение. Настройка среды

Завершено

Внимание

Для выполнения этого упражнения вам нужна собственная подписка Azure. При этом с вас может взиматься плата. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начинать работу.

Прежде чем приступить к публикации повторно используемого кода Bicep вашей компании, необходимо настроить среду. В этом разделе вы настроите среды Azure и GitHub для выполнения оставшейся части модуля.

Для этого вы выполните следующее.

  • Настройте репозиторий GitHub для этого модуля.
  • Клонируйте репозиторий на компьютер.
  • Создадите группу ресурсов в Azure.
  • Создайте секрет в GitHub.

Получение репозитория GitHub

Здесь вы создадите новый репозиторий GitHub на основе репозитория шаблонов. Репозиторий шаблонов содержит файлы, которые помогут приступить к работе в этом модуле.

Модули в этом пути обучения являются частью прогресса. В целях обучения каждому модулю соответствует связанный репозиторий шаблонов на GitHub.

Совет

Даже если вы завершили предыдущий модуль схемы обучения, выполните эти инструкции, чтобы создать новый репозиторий, и обязательно присвойте ему новое имя.

Запуск из репозитория шаблонов

Запустите шаблон, который настраивает репозиторий GitHub.

На сайте GitHub выполните следующие действия, чтобы создать репозиторий из шаблона:

  1. Войдите в GitHub.

  2. Выберите "Использовать этот шаблон>", чтобы создать новый репозиторий.

    Снимок экрана: интерфейс GitHub, показывающий репозиторий шаблонов. Выделена кнопка для использования шаблона.

  3. Для владельца выберите учетную запись GitHub.

  4. Введите имя репозитория для нового проекта, например toy-reusable.

  5. Выберите вариант Общедоступный.

    При создании собственных репозиториев вы можете сделать их частными. В этом модуле вы будете использовать функции GitHub, которые работают только в сочетании с общедоступными репозиториями и учетными записями GitHub Enterprise.

  6. Щелкните Create repository (Создать репозиторий).

    Снимок экрана: интерфейс GitHub, на котором показана страница создания репозитория.

Внимание

Последнее упражнение в этом модуле содержит важные действия по очистке. Следуйте инструкциям по очистке, даже если этот модуль не завершен.

Клонирование репозитория

Теперь, когда у вас есть копия репозитория шаблонов в собственной учетной записи, клонируйте этот репозиторий локально, чтобы начать работу в нем.

  1. Выберите код и щелкните URL-адрес копирования в значок буфера обмена .

    Снимок экрана: интерфейс GitHub, показывающий новый репозиторий. Выделена кнопка копирования URL-адреса репозитория.

  2. Откройте Visual Studio Code.

  3. В Visual Studio Code откройте окно терминала, выбрав Терминал>Новый терминал Окно обычно открывается в нижней части экрана.

  4. В терминале перейдите в каталог, в котором нужно клонировать репозиторий GitHub на локальном компьютере. Например, чтобы клонировать репозиторий в папке репозиториев , выполните следующую команду:

    cd repositories
    
  5. Введите git clone и вставьте скопированный URL-адрес, который будет выглядеть примерно так:

    git clone https://github.com/mygithubuser/toy-reusable.git
    
  6. Еще раз откройте Visual Studio Code в папке репозитория, выполнив следующую команду в терминале Visual Studio Code:

    code --reuse-window toy-reusable
    

Вход в Azure

Для работы с группами ресурсов в Azure войдите в свою учетную запись Azure из терминала Visual Studio Code. Убедитесь, что вы установили средства Azure CLI и расширение учетной записи Azure для Visual Studio Code.

  1. В меню Терминал выберите Новый терминал. Окно терминала обычно открывается в нижней половине экрана.

    Оболочка по умолчанию обычно pwsh, как показано в правой части окна терминала.

    Снимок экрана: окно терминала Visual Studio Code, в котором pwsh отображается как параметр оболочки.

  2. Выберите раскрывающийся список "Профиль запуска" и выберите Azure Cloud Shell (Bash).

    Снимок экрана: окно терминала Visual Studio Code. Отображается раскрывающийся список оболочки терминала и пункт меню Azure Cloud Shell (Bash).

    Откроется новая оболочка.

Вход в Azure с помощью Azure CLI

  1. В терминале Visual Studio Code выполните указанную ниже команду, чтобы войти в Azure.

    az login
    
  2. В открывшемся браузере войдите в свою учетную запись Azure.

Для работы с группами ресурсов в Azure войдите в свою учетную запись Azure из терминала Visual Studio Code. Убедитесь, что вы установили Azure PowerShell и расширение учетной записи Azure для Visual Studio Code.

  1. В меню Терминал выберите Новый терминал. Окно терминала обычно открывается в нижней половине экрана.

    Оболочка по умолчанию обычно pwsh, как показано в правой части окна терминала.

    Снимок экрана: окно терминала Visual Studio Code, в котором pwsh отображается как параметр оболочки.

  2. Выберите раскрывающийся список "Профиль запуска", а затем выберите Azure Cloud Shell (PowerShell).

    Снимок экрана: окно терминала Visual Studio Code. Отображается раскрывающийся список оболочки терминала и пункт меню Azure Cloud Shell (PowerShell).

    Откроется новая оболочка.

Вход в Azure с помощью Azure PowerShell

  1. В терминале Visual Studio Code выполните указанную ниже команду, чтобы войти в Azure.

    Connect-AzAccount -UseDeviceAuthentication
    
  2. Следуйте инструкциям по команде, чтобы войти в учетную запись Azure.

Создание удостоверения рабочей нагрузки

Затем создайте удостоверение рабочей нагрузки в идентификаторе Microsoft Entra для рабочего процесса развертывания.

Чтобы создать удостоверения рабочей нагрузки, команды Azure CLI используются jq для анализа данных из выходных данных JSON. Если вы еще не jq установили, можно использовать Bash в Azure Cloud Shell для создания удостоверения рабочей нагрузки, группы ресурсов и назначения ролей и подготовки секретов GitHub.

  1. Выполните следующий код, чтобы определить переменные для имени пользователя GitHub и имени репозитория. Убедитесь, что вы заменяете mygithubuser имя пользователя GitHub, которое вы указали ранее в этом упражнении. Кроме того, убедитесь, что укажите правильное имя репозитория GitHub.

    githubOrganizationName='mygithubuser'
    githubRepositoryName='toy-reusable'
    
  2. Создайте удостоверение рабочей нагрузки для рабочего процесса развертываний.

    applicationRegistrationDetails=$(az ad app create --display-name 'toy-reusable')
    applicationRegistrationObjectId=$(echo $applicationRegistrationDetails | jq -r '.id')
    applicationRegistrationAppId=$(echo $applicationRegistrationDetails | jq -r '.appId')
    
    az ad app federated-credential create \
       --id $applicationRegistrationObjectId \
       --parameters "{\"name\":\"toy-reusable-branch\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:ref:refs/heads/main\",\"audiences\":[\"api://AzureADTokenExchange\"]}"
    
  1. Выполните следующий код, чтобы определить переменные для имени пользователя GitHub и имени репозитория. Убедитесь, что вы замените mygithubuser имя пользователя GitHub, которое вы указали ранее в этом упражнении. Кроме того, убедитесь, что укажите правильное имя репозитория GitHub.

    $githubOrganizationName = 'mygithubuser'
    $githubRepositoryName = 'toy-reusable'
    
  2. Создайте удостоверение рабочей нагрузки для рабочего процесса развертываний.

    $applicationRegistration = New-AzADApplication -DisplayName 'toy-reusable'
    New-AzADAppFederatedCredential `
       -Name 'toy-reusable-branch' `
       -ApplicationObjectId $applicationRegistration.Id `
       -Issuer 'https://token.actions.githubusercontent.com' `
       -Audience 'api://AzureADTokenExchange' `
       -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):ref:refs/heads/main"
    

Создание группы ресурсов в Azure и предоставление доступа к удостоверению рабочей нагрузки

Затем создайте группу ресурсов для веб-сайта. Этот процесс также предоставляет удостоверению рабочей нагрузки роль участника в группе ресурсов, что позволяет развертывать рабочий процесс в группе ресурсов.

Выполните следующие команды Azure CLI в терминале Visual Studio Code:

resourceGroupResourceId=$(az group create --name ToyReusable --location westus3 --query id --output tsv)

az ad sp create --id $applicationRegistrationObjectId
az role assignment create \
  --assignee $applicationRegistrationAppId \
  --role Contributor \
  --scope $resourceGroupResourceId

Выполните следующие команды Azure PowerShell в терминале Visual Studio Code:

$resourceGroup = New-AzResourceGroup -Name ToyReusable -Location westus3

New-AzADServicePrincipal -AppId $applicationRegistration.AppId
New-AzRoleAssignment `
  -ApplicationId $applicationRegistration.AppId `
  -RoleDefinitionName Contributor `
  -Scope $resourceGroup.ResourceId

Подготовка секретов GitHub

Выполните следующий код, чтобы отобразить значения, которые необходимо создать в виде секретов GitHub:

echo "AZURE_CLIENT_ID: $applicationRegistrationAppId"
echo "AZURE_TENANT_ID: $(az account show --query tenantId --output tsv)"
echo "AZURE_SUBSCRIPTION_ID: $(az account show --query id --output tsv)"
$azureContext = Get-AzContext
Write-Host "AZURE_CLIENT_ID: $($applicationRegistration.AppId)"
Write-Host "AZURE_TENANT_ID: $($azureContext.Tenant.Id)"
Write-Host "AZURE_SUBSCRIPTION_ID: $($azureContext.Subscription.Id)"

Запишите значение идентификатора приложения для AZURE_CLIENT_ID. Это значение можно использовать при очистке ресурсов после завершения работы с этим модулем.

Создавайте секреты GitHub

Вы создали удостоверение рабочей нагрузки и группу ресурсов, в которой можно развернуть рабочий процесс. Теперь нужно создать секрет в GitHub Actions.

  1. В браузере перейдите к своему репозиторию GitHub.

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

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

    Снимок экрана: интерфейс GitHub с страницей

  4. Присвойте секрету имя AZURE_CLIENT_ID.

  5. В поле Значение вставьте GUID из первой строки выходных данных терминала. Не включайте в значение AZURE_CLIENT_ID, двоеточие или пробелы.

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

    Снимок экрана: интерфейс GitHub с страницей

  7. Повторите процесс, чтобы создать секреты для AZURE_TENANT_ID и AZURE_SUBSCRIPTION_ID, копируя значения из соответствующих полей в выходных данных терминала.

  8. Убедитесь, что в списке секретов теперь отображаются все три секрета.

    Снимок экрана: интерфейс GitHub со списком секретов.