Esercizio: Configurare l'ambiente Azure DevOps

Completato

In questa unità, si verificherà che l'organizzazione di Azure DevOps sia configurata per completare la parte rimanente di questo modulo. Verranno creati anche gli ambienti di Servizio app di Azure in cui verrà eseguita la distribuzione.

Per realizzare questi obiettivi, è necessario:

  • 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 l'app app Azure Service e Funzioni di Azure usando l'interfaccia della riga di comando di Azure in Azure Cloud Shell.
  • Creare variabili della pipeline che definiscono i nomi della servizio app e dell'istanza di Funzioni di Azure.
  • Creare una connessione al servizio che consenta ad Azure Pipelines di accedere alla sottoscrizione di Azure in modo sicuro.

Aggiungere un utente ad Azure DevOps

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

Benché non sia necessaria una sottoscrizione di Azure per usare Azure DevOps, in questo modulo si userà Azure DevOps per eseguire la distribuzione in risorse di Azure presenti nella sottoscrizione di Azure. Per semplificare il processo, usare lo stesso account Microsoft per accedere alla sottoscrizione di Azure e all'organizzazione Azure DevOps.

Importante

Se si accede con account diversi, è necessario aggiungere un utente all'organizzazione di DevOps nell'account Microsoft che si usa 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 di Azure DevOps sia configurata per completare il resto di questo modulo. A tale scopo, si esegue un modello che crea un progetto in Azure DevOps.

I moduli di questo percorso di apprendimento, ordinati in successione, consentono di seguire il team Web Tailspin nel viaggio alla scoperta di DevOps. Ai fini dell'apprendimento, a ogni modulo è associato un progetto di Azure DevOps.

Eseguire il modello

  1. Eseguire un modello che configuri l'organizzazione Azure DevOps.

  2. Nel sito del generatore demo di Azure DevOps selezionare l'opzione per accedere. Se richiesto, accettare le condizioni di utilizzo. Viene visualizzata la pagina Crea nuovo progetto.

  3. Nella pagina Crea nuovo progetto, immettere il nome del progetto, ad esempio Space Game - Web - Azure Functions, quindi per Seleziona organizzazione, selezionare l’organizzazione usata per la sottoscrizione di Azure.

    A screenshot of the Azure DevOps Demo Generator showing how to create the project.

  4. Nella sezione successiva selezionare Sì, desidero creare una copia tramite fork del repository e quindi selezionare Autorizza.

    Se viene visualizzata una finestra, autorizzare l'accesso all'account GitHub.

    Importante

    L'abilitazione dell'opzione fork è necessaria per connettere il modello al repository GitHub. Selezionare questa opzione anche se è già stata creata una copia tramite fork del progetto del sito Web di Space Game. Il modello usa il fork esistente.

  5. Selezionare Crea progetto.

    L'esecuzione del modello richiede qualche secondo.

  6. Al termine del provisioning del progetto, selezionare Passa a progetto per passare al progetto in Azure DevOps.

Importante

La pagina Pulire l'ambiente di Azure DevOps di 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, la copia tramite fork del repository Space Game in GitHub è impostata su pubblica mentre il progetto creato dal modello Azure DevOps è impostato su 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

Qui, verrà assegnato un elemento di lavoro a sé stessi in Azure Boards e verrà impostato su In corso. Nella pratica, insieme al team si creano elementi di lavoro all'inizio di ogni sprint o iterazione di lavoro.

Questo esercizio crea un elenco di controllo da cui procedere. con cui gli altri membri del team possono vedere di che cosa ci si sta occupando e quanto lavoro è rimasto. Consente anche di applicare limiti WIP (Work In Progress), in modo che il team non accetti una quantità eccessiva di lavoro in una sola volta.

  1. In Azure DevOps passare alla categoria Boards e quindi scegliere Boards dal menu.

    Azure DevOps showing the location of the Boards menu.

  2. Aprire l'elemento di lavoro Refactoring dell'API della classifica come app di Funzioni di Azure selezionando il titolo. Assegnare questo elemento di lavoro a se stessi e quindi selezionare Salva e chiudi.

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

    Screenshot of work item card highlighting the location of the down arrow.

  4. L'elemento di lavoro viene spostato dalla colonna Da completare alla colonna In corso.

    Screenshot of Azure Boards highlighting the work item card in the Doing column.

Alla fine di questo modulo, dopo aver completato l'attività, si sposterà la scheda nella colonna Completato.

Creare gli ambienti app Azure Service e Funzioni di Azure

Qui, verrà creato il servizio app e l'app di Funzioni di Azure necessari per distribuire la nuova versione del sito e dell'API.

Nel modulo di Learn Creare una pipeline di versione con Azure Pipelines con cui è stato introdotto il servizio app tramite il portale di Azure. Anche se il portale è un ottimo modo per esplorare ciò che è disponibile in Azure o per eseguire attività di base, l'attivazione di componenti come servizio app può essere noiosa.

In questo modulo si usa l'interfaccia della riga di comando di Azure per visualizzare un'istanza di servizio app. È possibile accedere all'interfaccia della riga di comando di Azure da un terminale o tramite Visual Studio Code. Qui, si accederà all'interfaccia della riga di comando di Azure 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.

Aprire Cloud Shell dal portale di Azure

  1. Accedere al portale di Azure.

  2. Nei controlli globali dell'intestazione di pagina selezionare Cloud Shell.

    A screenshot of the Azure portal showing the location of the Cloud Shell menu item.

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

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

    Nota

    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 di servizio app, viene assegnata un'area.

Per semplificare l'esecuzione dei comandi, iniziare selezionando un'area predefinita. Dopo la selezione dell'area predefinita, i comandi successivi usano tale area, a meno che non se ne specifichi una diversa.

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

    az account list-locations \
      --query "[].{Name: name, DisplayName: displayName}" \
      --output table
    
  2. Name Dalla colonna nell'output scegliere un'area vicina all'utente. 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

Qui, si creeranno variabili Bash per rendere il processo di configurazione più semplice e meno soggetto a errori. L'uso di variabili per le stringhe di testo condivise consente di evitare digitazioni accidentali.

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

    resourceSuffix=$RANDOM
    
  2. Creare tre nomi univoci a livello globale per gli account di archiviazione servizio app, Funzione di Azure e . Questi comandi usano le 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

Questa soluzione richiede diverse risorse di Azure per la distribuzione, che verranno create ora.

Nota

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 in modo che il sito Web si trovi in una rete a cui solo l'utente e il team possono accedere. Successivamente, è possibile riconfigurare la rete virtuale per rendere disponibile il sito Web agli utenti.

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

    az group create --name $rgName
    
  2. Eseguire il comando az appservice plan create seguente 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 parametro --sku specifica il piano B1. Questo piano viene eseguito nel livello Basic. Il parametro --is-linux specifica i ruoli di lavoro Linux (thread usati negli eventi e nella pianificazione delle attività).

    Importante

    Se lo SKU B1 non è disponibile come parte della sottoscrizione di Azure, scegliere un piano diverso, ad esempio S1 (standard).

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

    az webapp create \
      --name $webName \
      --resource-group $rgName \
      --plan $planName \
      --runtime "DOTNETCORE|6.0"
    
  4. Funzioni di Azure richiede un account di archiviazione per la distribuzione. Eseguire il comando az storage account create seguente 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 <region> con l'area preferita.

    az functionapp create \
      --name $leaderboardName \
      --resource-group $rgName \
      --storage-account $storageName \
      --functions-version 4 \
      --consumption-plan-location <region>
    
  6. Eseguire il comando az webapp list seguente 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
    

    Prendere nota del nome host per il servizio in esecuzione. Deve essere simile al seguente, ma l'identificatore di numero casuale sarà diverso. Sarà necessario il nome host Web in un secondo momento quando si verifica il 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
    

    Prendere nota del nome host per il servizio in esecuzione. Dovrebbe essere simile al seguente, ma l'identificatore di numero casuale sarà diverso. Sarà necessario il nome host del tabellone punteggi in un secondo momento quando si verifica 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 addebitate 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

Nel modulo Creare una pipeline di versione con Azure Pipelines è stata aggiunta una variabile alla pipeline che archivia il nome dell'app Web nel servizio app. In questo caso si eseguirà la stessa operazione. Inoltre, si aggiungerà il nome dell'app della classifica per l'istanza di Funzioni di Azure.

È possibile impostare come hardcoded questi nomi nella configurazione della pipeline, ma se vengono definiti come variabili, la configurazione potrà essere riusata con maggiore facilità. 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 - Azure Functions dovrebbe essere aperto in Azure DevOps.

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

    Screenshot of Azure DevOps menu highlighting the Library option under Pipelines.

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

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

  5. In Variabili selezionare Aggiungi.

  6. Immettere WebAppName come nome della variabile. 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 è la parte dell'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 Release nella pipeline.

    Le variabili nel gruppo di variabili saranno simili:

    A screenshot of Azure Pipelines showing the variable group. The group contains three variables.

Creare l'ambiente spike

Nei moduli precedenti sono stati creati ambienti per gli ambienti di sviluppo, test e staging. In questo caso si eseguirà la stessa operazione. Questa volta si creerà un ambiente denominato spike.

  1. Nel menu di Azure DevOps, in Pipelines, selezionare Ambienti.

    A screenshot of Azure Pipelines showing the location of the Environments menu option.

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

  3. Per Nome, immettere spike.

  4. Lasciare i valori predefiniti negli altri campi.

  5. Seleziona Crea.

Creare una connessione al servizio

Qui, verrà creata 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. Nel modulo precedente è stata creata una connessione al servizio simile.

Importante

Assicurarsi di aver eseguito l'accesso al portale di Azure e 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 del progetto.

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

  3. Nella pagina Connessioni al servizio selezionare Nuova connessione al servizio, 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 del servizio di Azure selezionare o immettere le impostazioni seguenti:

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

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

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

  7. Seleziona Salva.

Azure DevOps esegue una connessione di test per verificare che sia possibile la connessione alla sottoscrizione di Azure. Se Azure DevOps non riesce a connettersi, è possibile eseguire l'accesso una seconda volta.