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

Завершено

Внимание

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

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

Для удовлетворения этих целей выполните следующие задачи:

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

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

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

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

Совет

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

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

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

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

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

    Снимок экрана: интерфейс GitHub с репозиторием шаблонов и выделенной кнопкой

  2. Выберите имя пользователя GitHub в раскрывающемся списке "Владелец ".

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

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

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

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

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

Внимание

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

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

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

  1. Выберите Код и щелкните значок копирования.

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

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

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

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

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

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

    code -r toy-website-test
    

Вход в Azure

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

  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 установлено.

  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
    
  2. В открывшемся браузере войдите в свою учетную запись Azure.

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

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

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

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

    githubOrganizationName='<myGithubUser>'
    githubRepositoryName='toy-website-test'
    
  2. Создайте удостоверение рабочей нагрузки для рабочего процесса развертываний. Вы создадите две пары федеративных учетных данных для подготовки к упражнению далее в этом модуле.

    applicationRegistrationDetails=$(az ad app create --display-name 'toy-website-test')
    applicationRegistrationObjectId=$(echo $applicationRegistrationDetails | jq -r '.id')
    applicationRegistrationAppId=$(echo $applicationRegistrationDetails | jq -r '.appId')
    
    az ad app federated-credential create \
       --id $applicationRegistrationObjectId \
       --parameters "{\"name\":\"toy-website-test\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:environment:Website\",\"audiences\":[\"api://AzureADTokenExchange\"]}"
    
    az ad app federated-credential create \
       --id $applicationRegistrationObjectId \
       --parameters "{\"name\":\"toy-website-test-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-website-test'
    
  2. Создайте удостоверение рабочей нагрузки для рабочего процесса развертываний. Вы создадите две пары федеративных учетных данных для подготовки к упражнению далее в этом модуле.

    $applicationRegistration = New-AzADApplication -DisplayName 'toy-website-test'
    New-AzADAppFederatedCredential `
       -Name 'toy-website-test' `
       -ApplicationObjectId $applicationRegistration.Id `
       -Issuer 'https://token.actions.githubusercontent.com' `
       -Audience 'api://AzureADTokenExchange' `
       -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):environment:Website"
    
    New-AzADAppFederatedCredential `
       -Name 'toy-website-test-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 ToyWebsiteTest --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 ToyWebsiteTest -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)"

Создавайте секреты 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 со списком секретов.