Esercizio: Configurare l'ambiente Azure DevOps

Completato

In questa unità assicurarsi che l'organizzazione di Azure DevOps sia configurata per completare il resto di questo modulo. Si creano anche gli ambienti del servizio app di Azure in cui si esegue la distribuzione.

Per raggiungere questi obiettivi, eseguire queste attività:

  • Aggiungere un utente per assicurarsi che Azure DevOps possa connettersi alla sottoscrizione di Azure.
  • Configurare un progetto Azure DevOps per questo modulo.
  • In Azure Boards spostare l'elemento di lavoro per questo modulo nella colonna In corso.
  • Verificare che il progetto sia configurato in locale, in modo da poter eseguire il push delle modifiche nella pipeline.
  • Creare il servizio app di Azure e l'app di Azure Functions usando Azure CLI in Azure Cloud Shell.
  • Creare variabili della pipeline che definiscono i nomi del servizio app e dell'istanza di Funzioni di Azure.
  • Creare una connessione al servizio che consente ad Azure Pipelines di accedere in modo sicuro alla sottoscrizione di Azure.

Aggiungere un utente ad Azure DevOps

Per completare questo modulo, è necessaria la propria sottoscrizione di Azure. È possibile iniziare gratuitamente a usare Azure.

Anche se non è necessaria una sottoscrizione di Azure per lavorare con Azure DevOps, questo esercizio usa Azure DevOps per distribuire le risorse di Azure nella sottoscrizione di Azure. Per semplificare il processo, usare lo stesso account Microsoft per accedere sia alla sottoscrizione di Azure che all'organizzazione Azure DevOps.

Importante

Se si accede con account diversi, aggiungere un utente all'organizzazione DevOps con l'account Microsoft usato per accedere ad Azure. Per altre informazioni, vedere Aggiungere utenti all'organizzazione o al progetto. Quando si aggiunge l'utente, scegliere il livello di accesso Basic .

Disconnettersi quindi da Azure DevOps e accedere con il nuovo account utente. Usare l'account Microsoft usato per accedere alla sottoscrizione di Azure.

Ottenere il progetto Azure DevOps

Assicurarsi che l'organizzazione Azure DevOps sia configurata per completare il resto di questo modulo. A tale scopo, eseguire un modello che crea un progetto in Azure DevOps.

I moduli in questo percorso di apprendimento formano una progressione mentre segui il team Tailspin Web nel loro percorso DevOps. Ai fini dell'apprendimento, ogni modulo ha un proprio progetto Azure DevOps.

Eseguire il modello

Eseguire un modello che configura l'organizzazione Azure DevOps.

Importante

Azure DevOps Demo Generator non è più supportato, ma è comunque possibile usarlo per creare ambienti demo. Al momento non esiste alcuna sostituzione e le relative funzionalità o disponibilità potrebbero cambiare in futuro.

  1. Ottenere ed eseguire il progetto ADOGenerator in Visual Studio o nell'IDE preferito.

  2. Quando viene richiesto di immettere il numero di modello dall'elenco dei modelli, immettere 38 per Automatizzare le distribuzioni di funzioni di Azure con Azure Pipelines e quindi premere INVIO.

  3. Scegliere il metodo di autenticazione. È possibile configurare e usare un token di accesso personale (PAT) o usare l'account di accesso del dispositivo.

    Annotazioni

    Se si configura un token di accesso personale, assicurarsi di autorizzare gli ambiti necessari. Per questo modulo è possibile usare l'accesso completo, ma in una situazione reale è consigliabile concedere solo gli ambiti necessari.

  4. Immettere il nome dell'organizzazione di Azure DevOps e quindi premere INVIO.

  5. Se richiesto, immettere il pat di Azure DevOps, quindi premere INVIO.

  6. Immettere un nome di progetto, ad esempio Space Game - Web - Funzioni di Azure, quindi premere INVIO.

  7. Dopo aver creato il progetto, passare all'organizzazione di Azure DevOps nel browser (in https://dev.azure.com/<your-organization-name>/) e selezionare il progetto.

Creare una copia tramite fork del repository

Se non l'hai già fatto, crea un fork del repository mslearn-tailspin-spacegame-web-azure-functions.

  1. In GitHub passare al repository mslearn-tailspin-spacegame-web-azure-functions.

  2. Selezionare Fork in alto a destra dello schermo.

  3. Scegli il tuo account GitHub come proprietario, quindi seleziona Crea fork.

Importante

La pagina Pulisci l'ambiente Azure DevOps in questo modulo contiene passaggi importanti da completare, anche se non si completa questo modulo. La pulizia consente di assicurarsi che i minuti di compilazione gratuiti non si esauriscano.

Impostare la visibilità del progetto

Inizialmente, il fork del repository Space Game su GitHub è pubblico, mentre il progetto creato dal modello Azure DevOps è privato. Un repository pubblico in GitHub può essere accessibile da chiunque, mentre un repository privato è accessibile solo all'utente e alle persone con cui si sceglie di condividerlo. Analogamente, in Azure DevOps, i progetti pubblici forniscono l'accesso in sola lettura agli utenti non autenticati, mentre i progetti privati richiedono l'accesso e l'autenticazione degli utenti per accedere ai servizi.

Al momento, non è necessario modificare alcuna di queste impostazioni ai fini di questo modulo. Tuttavia, per i progetti personali, è necessario determinare la visibilità e l'accesso che si desidera concedere ad altri utenti. Ad esempio, se il progetto è open source, è possibile rendere pubblici il repository GitHub e il progetto Azure DevOps. Se il progetto è closed source, probabilmente si preferirà che il repository GitHub e il progetto DevOps di Azure siano privati.

Più avanti, è possibile trovare le risorse seguenti utili per determinare quale opzione è migliore per il progetto:

Assegnare un elemento di lavoro e spostarlo nello stato In corso

In questo caso si assegna un elemento di lavoro a se stessi in Azure Boards e si imposta lo stato dell'elemento di lavoro su In corso. In pratica, l'utente e il team creeranno elementi di lavoro all'inizio di ogni sprint o iterazione di lavoro.

In questo esercizio viene creato un elenco di controllo da cui lavorare. Offre agli altri membri del team visibilità su ciò che si sta lavorando e sulla quantità di lavoro lasciata. L'elemento di lavoro consente anche di applicare limiti di lavoro in corso (WIP) in modo che il team non assuma troppo lavoro contemporaneamente.

  1. Da Azure DevOps passare alla categoria Boards e quindi selezionare Boards dal menu.

    Azure DevOps con indicata la posizione del menu Boards.

  2. Apri l'elemento di lavoro Refactor leaderboard API come Funzione di Azure selezionando il titolo. Assegnare questo elemento di lavoro a se stessi e quindi selezionare Salva e chiudi.

  3. Selezionare la freccia giù nella parte inferiore della scheda e selezionare In corsoo selezionare la scheda e trascinarla nella colonna In corso.

    Schermata della scheda dell'elemento di lavoro che evidenzia la posizione della freccia verso il basso.

  4. L'elemento di lavoro viene spostato dalla colonna To Do alla colonna In corso .

    Screenshot di Azure Boards con indicata la scheda dell'elemento di lavoro nella colonna Operazione in corso.

Al termine di questo modulo, spostare la scheda nella colonna Fine dopo aver completato l'attività.

Creare gli ambienti di Azure App Service e Azure Functions

In questo caso si creano il servizio app e l'app Funzioni di Azure necessarie per distribuire la nuova versione del sito e dell'API.

In questo modulo si usa l'interfaccia della riga di comando di Azure per visualizzare un'istanza del servizio app. È possibile accedere all'interfaccia della riga di comando di Azure da un terminale o tramite Visual Studio Code. Ho usato Azure CLI da Azure Cloud Shell. Questa esperienza di shell basata sul browser è ospitata nel cloud. In Cloud Shell l'interfaccia della riga di comando di Azure è configurata per essere usata con la sottoscrizione di Azure.

Importante

Per completare gli esercizi in questo modulo, è necessaria una sottoscrizione di Azure personalizzata.

Visualizzare Cloud Shell tramite il portale di Azure

  1. Accedere al portale di Azure.

  2. Dai controlli globali nell'intestazione della pagina selezionare Cloud Shell.

    Screenshot del portale di Azure con indicata la posizione della voce di menu Cloud Shell.

    Si apre un terminale e si connette ad Azure Cloud Shell.

  3. Se necessario, selezionare Bash dal menu del terminale.

    Annotazioni

    Cloud Shell richiede una risorsa di archiviazione di Azure per rendere persistenti i file creati in Cloud Shell. Alla prima apertura, Cloud Shell chiede di creare un gruppo di risorse, un account di archiviazione e una condivisione di File di Azure. Questa configurazione viene usata automaticamente per tutte le sessioni di Cloud Shell future.

Selezionare un'area di Azure

Un'area è uno o più data center di Azure all'interno di una posizione geografica. Stati Uniti orientali, Stati Uniti occidentali ed Europa settentrionale sono esempi di aree. A ogni risorsa di Azure, inclusa un'istanza del servizio app, viene assegnata un'area.

Per semplificare l'esecuzione dei comandi, iniziare impostando un'area predefinita. Dopo aver specificato l'area predefinita, i comandi immessi usano tale area fino a quando non si specifica un'area diversa.

  1. Da Cloud Shell eseguire il comando seguente az account list-locations per elencare le aree disponibili nella sottoscrizione di Azure:

    az account list-locations \
      --query "[].{Name: name, DisplayName: displayName}" \
      --output table
    
  2. Scegli dalla colonna Name dell'output una regione vicina. Ad esempio, scegliere eastasia o westus2.

  3. Eseguire az configure per impostare l'area predefinita. Sostituire <REGION> con il nome dell'area scelta.

    az configure --defaults location=<REGION>
    

    Questo esempio imposta westus2 come area predefinita:

    az configure --defaults location=westus2
    

Creare variabili Bash

In questo caso, creare variabili Bash per rendere il processo di installazione più pratico e meno soggetto a errori. L'uso di variabili per le stringhe di testo condivise consente di evitare errori di digitazione accidentali.

  1. Da Cloud Shell generare un numero casuale, che viene usato per creare nomi univoci globali per determinati servizi nel passaggio successivo.

    resourceSuffix=$RANDOM
    
  2. Creare tre nomi univoci globali per il servizio app, la funzione di Azure e gli account di archiviazione. Questi comandi usano virgolette doppie, che indicano a Bash di risolvere le variabili usando la sintassi inline.

    webName="tailspin-space-game-web-${resourceSuffix}"
    leaderboardName="tailspin-space-game-leaderboard-${resourceSuffix}"
    storageName="tailspinspacegame${resourceSuffix}"
    
  3. Creare altre due variabili Bash per archiviare i nomi del gruppo di risorse e del piano di servizio.

    rgName='tailspin-space-game-rg'
    planName='tailspin-space-game-asp'
    

Creare le risorse di Azure necessarie

La soluzione richiede diverse risorse di Azure per la distribuzione, create ora.

Annotazioni

Questo esercizio usa le impostazioni di rete predefinite, in modo che il sito sia accessibile da Internet. In pratica, è possibile configurare una rete virtuale di Azure per inserire il sito Web in una rete accessibile solo dall'utente e dal team. Successivamente, è possibile riconfigurare la rete virtuale per rendere disponibile il sito Web agli utenti.

  1. Eseguire il comando seguente az group create per creare un gruppo di risorse usando il nome definito in precedenza:

    az group create --name $rgName
    
  2. Eseguire il comando seguente az appservice plan create per creare un piano di servizio app usando il nome definito nell'attività precedente:

    az appservice plan create \
      --name $planName \
      --resource-group $rgName \
      --sku B1 \
      --is-linux
    

    Il --sku parametro specifica il piano B1. Questo piano funziona sul livello Base. Il parametro --is-linux specifica i worker Linux (thread utilizzati nella gestione degli eventi e nella pianificazione delle attività).

    Importante

    Se lo SKU B1 non è disponibile nella sottoscrizione di Azure, scegliere un piano diverso, ad esempio S1 (Standard).

  3. Eseguire il comando seguente az webapp create per creare l'istanza del servizio app:

    az webapp create \
      --name $webName \
      --resource-group $rgName \
      --plan $planName \
      --runtime "DOTNETCORE|8.0"
    
  4. Funzioni di Azure richiede un account di archiviazione per l'implementazione. Eseguire il comando seguente az storage account create per crearlo:

    az storage account create \
      --name $storageName \
      --resource-group $rgName \
      --sku Standard_LRS
    
  5. Eseguire il comando seguente az functionapp create per creare l'istanza dell'app Funzioni di Azure. Sostituire il <region> con la regione preferita.

    az functionapp create \
      --name $leaderboardName \
      --resource-group $rgName \
      --storage-account $storageName \
      --functions-version 4 \
      --consumption-plan-location <region>
    
  6. Eseguire il comando seguente az webapp list per elencare il nome host e lo stato dell'istanza del servizio app:

    az webapp list \
      --resource-group $rgName \
      --query "[].{hostName: defaultHostName, state: state}" \
      --output table
    

    Annotare il nome dell'host per il servizio in esecuzione. Dovrebbe essere simile al seguente, ma con un numero casuale diverso. Hai bisogno del nome host web più tardi quando verifichi il tuo lavoro.

    HostName                                        State
    ----------------------------------------------  -------
    tailspin-space-game-web-4692.azurewebsites.net  Running
    
  7. Eseguire il comando seguente az functionapp list per elencare il nome host e lo stato dell'istanza di Funzioni di Azure.

    az functionapp list \
      --resource-group $rgName \
      --query "[].{hostName: defaultHostName, state: state}" \
      --output table
    

    Annotare il nome dell'host per il servizio in esecuzione. Dovrebbe essere simile al seguente, ma con un identificatore di numero casuale diverso. Il nome host del tabellone punteggi sarà necessario in un secondo momento quando si verificherà il lavoro.

    HostName                                                State
    ------------------------------------------------------  -------
    tailspin-space-game-leaderboard-4692.azurewebsites.net  Running
    
  8. Copiare questi due nomi host in una posizione a cui è possibile accedere facilmente in un secondo momento.

  9. Come passaggio facoltativo, aprire un browser e immettere un nome host per verificare che sia in esecuzione. Viene visualizzata la home page predefinita.

Importante

La pagina Eseguire la pulizia dell'ambiente Azure DevOps di questo modulo contiene una procedura di pulizia importante. La pulizia garantisce che non vengano addebitati costi per le risorse di Azure dopo aver completato questo modulo. Assicurarsi di eseguire la procedura di pulizia anche se non si completa questo modulo.

Creare variabili di pipeline in Azure Pipelines

In questo caso, si aggiunge una variabile alla pipeline che memorizza il nome dell'app Web in App Service. Inoltre, si aggiunge il nome dell'app della classifica per l'istanza di Funzioni di Azure.

È possibile hardcodificare questi nomi nella configurazione della pipeline, ma se vengono definiti come variabili, la configurazione è maggiormente riutilizzabile. Inoltre, se i nomi delle istanze cambiano, è possibile aggiornare le variabili e attivare la pipeline senza modificare la configurazione.

Aggiungere un gruppo di variabili al progetto.

  1. Il progetto Space Game - Web - Funzioni di Azure deve essere aperto in Azure DevOps.

  2. Nel menu selezionare Pipeline e quindi in Pipeline selezionare Libreria. Viene visualizzato il riquadro Libreria.

    Screenshot del menu di Azure DevOps che evidenzia l'opzione Libreria in Pipeline.

  3. Nella barra dei comandi o al centro del riquadro selezionare Gruppo di variabili. Verrà visualizzata la pagina Nuovo gruppo di variabili .

  4. Per il nome del gruppo di variabili immettere Release.

  5. In Variabili selezionare Aggiungi.

  6. Per il nome della variabile immettere WebAppName. Per il valore, immettere il nome dell'istanza del servizio app creata per l'app Web, ad esempio tailspin-space-game-web-4692.

    Importante

    Impostare il nome dell'istanza del servizio app, non il nome host completo. In questo esercizio, ad esempio, tailspin-space-game-web-4692 è l'istanza del nome host tailspin-space-game-web-4692.azurewebsites.net.

  7. Aggiungere un'altra variabile denominata LeaderboardAppName con il valore dell'istanza dellla classifica, ad esempio tailspin-space-game-leaderboard-4692.

  8. Aggiungere una variabile finale denominata ResourceGroupName con il valore tailspin-space-game-rg.

  9. Nella barra dei comandi nella parte superiore della pagina selezionare Salva per salvare il gruppo di variabili di rilascio nella pipeline.

    Le variabili nel gruppo di variabili devono essere simili:

    Screenshot di Azure Pipelines che mostra il gruppo di variabili. Il gruppo contiene tre variabili.

Creare l'ambiente spike

Nei moduli precedenti sono stati creati ambienti per ambienti di sviluppo, test e gestione temporanea . In questo caso, eseguire la stessa operazione. Questa volta, creare un ambiente denominato spike.

  1. Nel menu Azure DevOps, in Pipeline, selezionare Ambienti.

    Screenshot di Azure Pipelines che mostra la posizione dell'opzione di menu Ambienti.

  2. Selezionare Crea ambiente. Viene visualizzato il riquadro Nuovo ambiente .

  3. Per Nome, immettere spike.

  4. Lasciare i valori predefiniti negli altri campi.

  5. Selezionare Crea.

Creare una connessione al servizio

In questo caso si crea una connessione al servizio che consente ad Azure Pipelines di accedere alla sottoscrizione di Azure. Azure Pipelines usa questa connessione al servizio per distribuire il sito Web nel servizio app. È stata creata una connessione al servizio simile nel modulo precedente.

Importante

Assicurarsi di aver eseguito l'accesso sia al portale di Azure che ad Azure DevOps con lo stesso account Microsoft.

  1. In Azure DevOps, sotto il menu del progetto Space Game - web - Azure Functions, selezionare Impostazioni progetto. Viene visualizzato il riquadro Dettagli progetto .

  2. Nel menu, in Pipeline selezionare Connessioni al servizio.

  3. Nella pagina Connessioni al servizio selezionare Nuova connessione al servizio e quindi nel riquadro Nuova connessione al servizio selezionare Azure Resource Manager e quindi avanti.

  4. Nel riquadro Nuova connessione al servizio selezionare Entità servizio (automatico) e quindi Avanti.

  5. Nel riquadro Nuova connessione al servizio di Azure selezionare o immettere le impostazioni seguenti:

    Campo Valore
    Livello di scopo Abbonamento
    Abbonamento Selezionare la sottoscrizione di Azure
    Gruppo di risorse tailspin-space-game-rg
    Nome della connessione al servizio Resource Manager - Tailspin - Space Game

    Durante il processo, potrebbe essere richiesto di accedere all'account Microsoft.

  6. Assicurarsi che l'opzione Concedi l'autorizzazione di accesso a tutte le pipeline sia selezionata.

  7. Selezionare Salva.

Azure DevOps esegue una connessione di test per verificare che possa connettersi alla sottoscrizione di Azure. Se Azure DevOps non riesce a connettersi, è possibile accedere una seconda volta.