Esercizio - Configurare l'ambiente

Completato

Importante

Per eseguire questo esercizio è necessario disporre di una propria sottoscrizione di Azure e questo potrebbe comportare dei costi. Se non hai ancora una sottoscrizione di Azure, crea un account gratuito prima di iniziare.

Prima di configurare i flussi di lavoro delle richieste pull dell'azienda di giocattoli, è necessario configurare l'ambiente.

In questa unità ci si assicurerà che gli ambienti Azure e GitHub siano configurati per completare il resto di questo modulo.

Per soddisfare questi obiettivi, è necessario:

  • Configurare un repository GitHub per questo modulo.
  • Clonare il repository nel computer.
  • Creare un'identità del carico di lavoro in Microsoft Entra ID.
  • Creare un segreto in GitHub.

Ottenere il repository GitHub

In questa sezione si configurerà il repository GitHub per completare il resto del modulo. Per farlo, creare un nuovo repository basato su un repository di modelli. Il repository di modelli contiene i file necessari per iniziare con questo modulo.

I moduli di questo percorso di apprendimento sono da seguire in successione. A scopo di apprendimento, ogni modulo ha un repository di modelli GitHub associato.

Suggerimento

Anche se il modulo precedente è stato completato nel percorso di apprendimento, seguire queste istruzioni per creare un nuovo repository e assegnargli un nuovo nome.

Iniziare dal repository dei modelli

Eseguire un modello che configura il repository GitHub.

Nel sito GitHub creare un repository dal modello eseguendo la procedura seguente:

  1. Selezionare Usa questo modello>Crea un nuovo repository.

    Screenshot of the GitHub interface showing the template repo, with the 'Use this template' button highlighted.

  2. Prendere nota del nome dell'organizzazione o del nome utente di GitHub. Nell'esempio il nome utente di GitHub è mygithubuser. Il nome sarà necessario a breve.

  3. Immettere un nome per il nuovo progetto, ad esempio toy-website-auto-review.

  4. Selezionare l'opzione Public (Pubblico).

    Quando si creano repository personalizzati, è possibile renderli privati. In questo modulo si useranno alcune funzionalità di GitHub che funzionano solo con repository pubblici e con account GitHub Enterprise.

  5. Selezionare Create repository from template (Crea repository da modello).

    Screenshot of the GitHub interface showing the repository creation page.

Clonare il repository

Ora si dispone di una copia del repository di modelli nel proprio account. Clonare questo repository in locale in modo da poter iniziare a usarlo.

  1. Selezionare Code (Codice), quindi selezionare l'icona di copia.

    Screenshot of the GitHub interface showing the new repository, with the repository U R L copy button highlighted.

  2. Aprire Visual Studio Code.

  3. Aprire una finestra del terminale di Visual Studio Code selezionando Terminale>Nuovo terminale. La finestra si apre in genere nella parte inferiore della schermata.

  4. Nel terminale passare alla directory nel computer locale, in cui si vuole clonare il repository GitHub. Ad esempio, per clonare il repository nella cartella toy-website-auto-review, eseguire il comando seguente:

    cd toy-website-auto-review
    
  5. Digitare git clone e quindi incollare l'URL copiato in precedenza. Il comando sarà simile al seguente:

    git clone https://github.com/mygithubuser/toy-website-auto-review.git
    
  6. Riaprire Visual Studio Code nella cartella del repository eseguendo il comando seguente nel terminale di Visual Studio Code:

    code -r toy-website-auto-review
    

Accedere ad Azure

Dopo aver clonato il repository in locale nel computer, si accederà all'ambiente Azure. Si userà l'account Azure per creare un'identità dei carichi di lavoro per i flussi di lavoro GitHub Actions da usare.

  1. Nel terminale di Visual Studio Code eseguire il comando seguente per accedere ad Azure:

    az login
    
  2. Nel browser visualizzato accedere al proprio account Azure.

  1. Nel terminale di Visual Studio Code accedere ad Azure eseguendo il comando seguente:

    Connect-AzAccount
    
  2. Nel browser visualizzato accedere al proprio account Azure.

Creare un'identità dei carichi di lavoro

Più avanti in questo modulo di Microsoft Learn, il flusso di lavoro delle richieste pull creerà gruppi di risorse e risorse nella sottoscrizione. Per distribuire le risorse, è necessario creare un'identità dei carichi di lavoro e concederle il ruolo Collaboratore nella sottoscrizione.

Avviso

L'identità dei carichi di lavoro creata qui ha un livello elevato di accesso alla sottoscrizione di Azure. Per evitare danni accidentali, usare una sottoscrizione non di produzione. Non eseguire questi passaggi in un ambiente che contiene carichi di lavoro di produzione.

Nei flussi di lavoro di convalida delle richieste pull è consigliabile usare una sottoscrizione di Azure dedicata.

Per creare le identità dei carichi di lavoro, i comandi dell'interfaccia della riga di comando di Azure usano jq per analizzare i dati dall'output JSON. Se jq non è installato, è possibile usare Bash in Azure Cloud Shell per creare l'identità dei carichi di lavoro, il gruppo di risorse e l'assegnazione di ruolo e preparare i segreti di GitHub.

  1. Eseguire il codice seguente per definire variabili per il nome utente e il nome del repository di GitHub. Assicurarsi di sostituire mygithubuser con il nome utente di GitHub, annotato in precedenza in questo esercizio. Assicurarsi inoltre di specificare il nome del repository di GitHub corretto.

    githubOrganizationName='mygithubuser'
    githubRepositoryName='toy-website-auto-review'
    
  2. Creare un'identità dei carichi di lavoro per il flusso di lavoro di distribuzione.

    applicationRegistrationDetails=$(az ad app create --display-name 'toy-website-auto-review')
    applicationRegistrationObjectId=$(echo $applicationRegistrationDetails | jq -r '.id')
    applicationRegistrationAppId=$(echo $applicationRegistrationDetails | jq -r '.appId')
    
    az ad app federated-credential create \
       --id $applicationRegistrationObjectId \
       --parameters "{\"name\":\"toy-website-auto-review\",\"issuer\":\"https://token.actions.githubusercontent.com\",\"subject\":\"repo:${githubOrganizationName}/${githubRepositoryName}:pull_request\",\"audiences\":[\"api://AzureADTokenExchange\"]}"
    
  1. Eseguire il codice seguente per definire le variabili per il nome utente e il nome del repository di GitHub. Assicurarsi di sostituire mygithubuser con il nome utente di GitHub, annotato in precedenza in questo esercizio. Assicurarsi inoltre di specificare il nome del repository di GitHub corretto.

    $githubOrganizationName = 'mygithubuser'
    $githubRepositoryName = 'toy-website-auto-review'
    
  2. Creare un'identità dei carichi di lavoro per il flusso di lavoro di distribuzione.

    $applicationRegistration = New-AzADApplication -DisplayName 'toy-website-auto-review'
    New-AzADAppFederatedCredential `
       -Name 'toy-website-auto-review' `
       -ApplicationObjectId $applicationRegistration.Id `
       -Issuer 'https://token.actions.githubusercontent.com' `
       -Audience 'api://AzureADTokenExchange' `
       -Subject "repo:$($githubOrganizationName)/$($githubRepositoryName):pull_request"
    

Concedere all'identità dei carichi di lavoro l'accesso alla sottoscrizione

Creare quindi un gruppo di risorse per il sito Web. Questo processo concede anche all'identità dei carichi di lavoro il ruolo Collaboratore nel gruppo di risorse, che consente la distribuzione del flusso di lavoro nel gruppo di risorse.

  1. Eseguire i comandi seguenti dell'interfaccia della riga di comando di Azure nel terminale di Visual Studio Code:

    az ad sp create --id $applicationRegistrationObjectId
    az role assignment create \
       --assignee $applicationRegistrationAppId \
       --role Contributor
    
  1. Eseguire i comandi di Azure PowerShell seguenti nel terminale di Visual Studio Code:

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

Preparare i segreti di GitHub

Eseguire il codice seguente per visualizzare i valori che è necessario creare come segreti di 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)"

Prendere nota del valore dell'ID applicazione per AZURE_CLIENT_ID. È possibile usare questo valore al momento di pulire le risorse al termine di questo modulo.

Creare segreti di GitHub

È stata creata un'identità dei carichi di lavoro ed è stata concessa a tale identità l'autorizzazione per la distribuzione nella sottoscrizione. Creare ora un segreto in GitHub Actions.

  1. Passare al repository GitHub nel browser.

  2. Selezionare Impostazioni>Segreti e variabili>Azioni.

  3. Selezionare Nuovo segreto repository.

    Screenshot of the GitHub interface showing the 'Secrets' page, with the 'Create repository secret' button highlighted.

  4. Assegnare al segreto il nome AZURE_CLIENT_ID.

  5. Nel campo Value incollare il GUID dalla prima riga dell'output del terminale. Non includere AZURE_CLIENT_ID, i due punti o gli spazi nel valore.

  6. Selezionare Aggiungi segreto.

    Screenshot of the GitHub interface showing the 'New Secret' page, with the name and value completed and the 'Add secret' button highlighted.

  7. Ripetere il processo per creare i segreti per AZURE_TENANT_ID e AZURE_SUBSCRIPTION_ID, copiando i valori dai campi corrispondenti nell'output del terminale.

  8. Verificare che l'elenco dei segreti mostri ora tutti e tre i segreti.

    Screenshot of the GitHub interface showing the list of secrets.