Esercizio: Configurare l'ambiente Azure DevOps

Completato

In questa sezione, viene illustrato come configurare l'organizzazione Azure DevOps e come creare l'ambiente Servizio app di Azure in cui verrà distribuita.

Si apprenderà come:

  • Cancellare il progetto Azure DevOps.
  • Gestire gli elementi di lavoro con Azure Boards.
  • Creare l'ambiente del Servizio app di Azure.
  • Creare variabili di pipeline in Azure Pipelines.
  • Creare una connessione al servizio per autenticarsi con la sottoscrizione Azure.

Aggiungere un utente ad Azure DevOps

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

Non è necessario una sottoscrizione di Azure per usare Azure DevOps, tuttavia in questo modulo si userà Azure DevOps per eseguire la distribuzione delle risorse di Azure. Per semplificare il processo, usare lo stesso account Microsoft utilizzato per accedere ad Azure e Azure DevOps.

Se si usano account Microsoft diversi per accedere ad Azure e ad Azure DevOps, aggiungere un utente con livello di accesso Basic all'organizzazione DevOps nell'account Microsoft usato per accedere ad Azure. Per altre informazioni, vedere Aggiungere utenti all'organizzazione o al progetto.

Disconnettersi quindi da Azure DevOps e accedere di nuovo usando lo stesso account usato per accedere alla sottoscrizione di Azure.

Ottenere il progetto Azure DevOps

In questa unità ci si assicurerà che l'organizzazione Azure DevOps sia configurata per completare il resto del modulo. A tale scopo, si esegue un modello che crea un progetto in Azure DevOps.

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

Eseguire il modello

Eseguire un modello che configuri l'organizzazione Azure DevOps.

Nel sito Demo Generator di Azure DevOps seguire questa procedura per eseguire il modello:

  1. Selezionare Accedi e accettare le condizioni d’uso.

  2. Nella pagina Crea nuovo progetto selezionare l'organizzazione Azure DevOps. Immettere un nome di progetto, ad esempio Space Game - web - Docker.

    Screenshot of creating a project through Azure DevOps Demo Generator.

  3. Selezionare Sì, desidero creare una copia tramite fork di questo repository>Autorizza. Se richiesto, autorizzare l'accesso all'account GitHub.

    Importante

    È necessario selezionare questa opzione per connettere il modello al repository GitHub. Assicurarsi di selezionare la casella di controllo anche se è già stata creata una copia fork del repository Space Game. Il modello userà la copia tramite fork esistente.

  4. Selezionare Crea progetto.

  5. Selezionare Passa al progetto per passare al progetto in Azure DevOps.

Importante

In questo modulo, la pagina Eseguire la pulizia dell'ambiente Azure DevOps contiene una procedura di pulizia importante. La pulizia consente di assicurarsi che i minuti di compilazione gratuiti non si esauriscano. Assicurarsi di eseguire la procedura di pulizia anche se non si completa questo modulo.

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:

Passare l'elemento di lavoro allo stato In corso

In questo caso si assegnerà un elemento di lavoro a se stessi in Azure Boards. Si passerà anche l'elemento di lavoro allo stato In corso. Nella pratica, insieme al team si creano elementi di lavoro all'inizio di ogni sprint o iterazione di lavoro.

L'assegnazione mette a disposizione una checklist di lavoro 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.

In questo caso, si sposta il primo elemento, Creare la versione del contenitore del sito Web usando Docker, nella colonna In corso , quindi assegnarsi all'elemento di lavoro.

Per configurare l'elemento di lavoro:

  1. In Azure DevOps, passare a Boards. Selezionare quindi Boards dal menu.

    Screenshot of Azure DevOps showing the location of the Boards menu.

  2. Nell'elemento di lavoro Crea versione contenitore del sito Web con Docker selezionare la freccia giù nella parte inferiore della scheda, quindi assegnare l'elemento di lavoro a se stessi.

    Screenshot of Azure Boards showing the location of the down arrow.

  3. Spostare l'elemento di lavoro dalla colonna Da completare alla colonna In corso.

    Screenshot of Azure Boards showing the card in the Doing column.

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

Creare l'ambiente Servizio app di Azure

Nel modulo Creare una pipeline di versione con Azure Pipelines, è stata creata un'istanza del servizio app usando portale di Azure. Anche se il portale è uno strumento eccellente per esplorare le offerte di Azure, la configurazione di componenti come servizio app può diventare complessa.

In questo modulo si userà l'interfaccia della riga di comando di Azure per avviare le risorse necessarie per la distribuzione e l'esecuzione di un'istanza di servizio app. È possibile accedere all'interfaccia della riga di comando di Azure da un terminale o tramite Visual Studio Code.

Importante

Per completare gli esercizi in questo modulo, occorre una sottoscrizione di Azure.

Avviare Cloud Shell nel portale di Azure

  1. Passare al portale di Azure ed eseguire l'accesso.

  2. Selezionare Cloud Shell dalla barra dei menu e quindi selezionare l'esperienza Bash.

    Screenshot of the Azure portal showing the location of the Cloud Shell menu item.

    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 è costituita da uno o più data center di Azure situati all'interno di una posizione geografica specifica. Gli Stati Uniti orientali, gli Stati Uniti occidentali ed l’Europa settentrionale sono alcuni esempi di aree. Ogni risorsa di Azure, ad esempio un'istanza di servizio app, viene allocata a un'area specifica.

Per semplificare il processo di esecuzione dei comandi, iniziare selezionando un'area predefinita. Dopo aver specificato l'area predefinita, i comandi successivi useranno tale area per impostazione predefinita, a meno che non venga specificata in modo esplicito un'area diversa.

  1. Eseguire il comando seguente per elencare le aree disponibili per la sottoscrizione di Azure.

    az account list-locations \
      --query "[].{Name: name, DisplayName: displayName}" \
      --output table
    
  2. Selezionare un'area vicina alla posizione dalla colonna Nome nell'output. Scegliere, ad esempio è possibile scegliere eastasia o westus2.

  3. Eseguire il comando seguente per impostare l'area predefinita. Sostituire il segnaposto con il nome dell'area selezionata.

    az configure --defaults location=<REGION>
    

    Questo esempio imposta westus2 come area predefinita:

    az configure --defaults location=westus2
    

Creare variabili Bash

In questa sezione si creeranno 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 digitazioni accidentali.

  1. Da Cloud Shell generare un numero casuale. Questo renderà più semplice creare nomi univoci globali per determinati servizi nel passaggio successivo.

    resourceSuffix=$RANDOM
    
  2. Creare nomi univoci globali per l'app Web del Servizio app e il Registro Azure Container. L'uso di virgolette doppie in questi comandi richiede a Bash di interpolare le variabili usando la sintassi inline.

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

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

Creare le risorse di Azure

Nota

Ai fini dell'apprendimento, qui verranno visualizzate le impostazioni di rete predefinite. Queste impostazioni rendono accessibile il sito da Internet. In pratica, è possibile configurare una rete virtuale di Azure che colloca il sito Web in una rete non instradabile su Internet e accessibile solo all'utente e al team. Successivamente, è possibile riconfigurare la rete 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 acr create seguente per creare un Registro Azure Container usando il nome definito in precedenza.

    az acr create --name $registryName \
      --resource-group $rgName \
      --sku Standard \
      --admin-enabled true
    
  3. Eseguire il comando az appservice plan create seguente per creare un piano di servizio app usando il nome definito in precedenza.

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

    L'argomento --sku specifica il piano B1. Questo piano viene eseguito nel livello Basic. L'argomento --is-linux specifica di usare i worker Linux.

    Importante

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

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

    az webapp create \
      --name $webName \
      --resource-group $rgName \
      --plan $planName \
      --deployment-container-image-name $registryName.azurecr.io/web:latest
    
  5. 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 del servizio in esecuzione. Sarà necessario in un secondo momento quando si verificherà il lavoro. Ecco un esempio:

    HostName                                        State
    ----------------------------------------------  -------
    tailspin-space-game-web-4692.azurewebsites.net  Running
    
  6. Eseguire il comando az acr list seguente per elencare il server di accesso dell'istanza del Registro Azure Container. Questo nome server sarà necessario durante la creazione delle variabili della pipeline in un secondo momento.

    az acr list \
      --resource-group $rgName \
      --query "[].{loginServer: loginServer}" \
      --output table
    

    Prendere nota del server di accesso. Sarà necessario in un secondo momento quando si configurerà la pipeline. Ecco un esempio:

    LoginServer
    ---------------------------------
    tailspinspacegame4692.azurecr.io    
    

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

In Creare una pipeline di versione con Azure Pipelines è stata aggiunta una variabile alla pipeline che archivia il nome dell'app Web nel servizio app. Farete la stessa cosa qui. Inoltre, si aggiungerà il nome del Registro Azure Container.

È 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.

Per aggiungere le variabili:

  1. In Azure DevOps, passare al progetto Space Game - Web - Docker.

  2. In Pipeline, selezionare Libreria.

    Screenshot of Azure Pipelines showing the Library menu option.

  3. Selezionare + Gruppo di variabili.

  4. In Proprietà, immettere Versione come nome del gruppo di variabili.

  5. In Variabili, selezionare + Aggiungi.

  6. Immettere WebAppName come nome della variabile. Per il valore, immettere il nome dell'istanza del servizio app creata in precedenza, ad esempio tailspin-space-game-web-4692.

    Importante

    Impostare il nome dell'istanza del servizio app, non il nome host. In questo esempio, si immetterà tailspin-space-game-web-4692 e non tailspin-space-game-web-4692.azurewebsites.net.

  7. Ripetere il processo per aggiungere un'altra variabile denominata RegistryName con il valore del server di accesso al Registro Azure Container, ad esempio tailspinspacegame4692.azurecr.io.

  8. Selezionare Autorizzazioni pipeline, quindi selezionare il segno + per aggiungere una pipeline. Selezionare mslearn-tailspin-spacegame-web-docker per concedere alla pipeline l'autorizzazione per accedere al gruppo di variabili.

  9. Selezionare Salva nella parte superiore della pagina per salvare le variabili. Il gruppo di variabili sarà simile al seguente:

    Screenshot of Azure Pipeline showing the variable group. The group contains two variables.

Creare connessioni al servizio richieste

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. Per questo esercizio si creerà anche una connessione al Registro Docker per pubblicare il contenitore nel Registro Azure Container.

Importante

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

  1. In Azure DevOps, passare al progetto Space Game - Web - Docker.

  2. Nell'angolo inferiore della pagina selezionare Impostazioni progetto.

  3. In Pipeline seleziona Connessioni al servizio.

  4. Selezionare Nuova connessione al servizio, quindi scegliere Azure Resource Manager e infine fare clic su Avanti.

  5. Nella parte superiore della pagina, selezionare Entità servizio (automatica). Quindi, seleziona Avanti.

  6. Compilare questi campi:

    Campo Valore
    Livello ambito Subscription
    Subscription la propria 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.

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

  8. 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.

  9. Selezionare Nuova connessione al servizio, quindi scegliere Registro Docker e fare clic su Avanti.

  10. Nella parte superiore della pagina, selezionare Registro Azure Container.

  11. Compilare questi campi:

    Campo Valore
    Subscription la propria sottoscrizione di Azure
    Registro Azure Container Selezionare la connessione creata in precedenza
    Nome connessione al servizio Connessione al Registro Container
  12. Assicurarsi che sia selezionata l'opzione Concedi l'autorizzazione di accesso a tutte le pipeline.

  13. Al termine, seleziona Salva.