Esercizio: Configurare l'ambiente Azure DevOps
In questa sezione si apprenderà come configurare l'organizzazione Azure DevOps e creare l'ambiente del servizio app di Azure in cui verrà distribuita.
Si apprenderà come:
- Configurare il progetto Azure DevOps.
- Gestire gli elementi di lavoro con Azure Boards.
- Creare l'ambiente del servizio app di Azure.
- Creare variabili della pipeline in Azure Pipelines.
- Creare una connessione al servizio per l'autenticazione con la 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.
Non è necessaria una sottoscrizione di Azure per usare Azure DevOps, ma in questo modulo si userà Azure DevOps per la distribuzione nelle risorse di Azure. Per semplificare il processo, usare lo stesso account Microsoft per accedere sia ad Azure che ad Azure DevOps.
Se si usano account Microsoft diversi per accedere ad Azure e Azure DevOps, aggiungere un utente con livello di accesso Basic all'organizzazione DevOps con l'account Microsoft usato per accedere ad Azure. Per altri dettagli, 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 eseguirà 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, 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.
Ottenere ed eseguire il progetto ADOGenerator in Visual Studio o nell'IDE preferito.
Quando viene richiesto di immettere il numero di modello dall'elenco dei modelli, immettere 39 per Automatizzare le distribuzioni di contenitori Docker con Azure Pipelines e quindi premere INVIO.
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 è necessario assicurarsi di concedere solo gli ambiti necessari.
Immettere il nome dell'organizzazione di Azure DevOps e quindi premere INVIO.
Se richiesto, immettere il pat di Azure DevOps, quindi premere INVIO.
Immettere un nome di progetto, ad esempio Space Game - Web - Docker, quindi premere INVIO.
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 è già stato fatto, creare un fork del repository mslearn-tailspin-spacegame-web-docker.
In GitHub passare al repository mslearn-tailspin-spacegame-web-docker.
Selezionare Fork in alto a destra dello schermo.
Scegli il tuo account GitHub come proprietario, quindi seleziona Crea fork.
Importante
In questo modulo la pagina Pulisci l'ambiente Azure DevOps contiene importanti passaggi di pulizia. 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, il fork del repository Space Game in GitHub è impostato su pubblico 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 è proprietario, 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:
- Usare progetti privati e pubblici
- Modificare la visibilità del progetto in modalità pubblica o privata
- Impostazione della visibilità del repository
Passare l'elemento di lavoro allo stato In corso
In questo caso, ti assegnerai un elemento di lavoro su Azure Boards. Sposterai anche l'elemento di lavoro nello stato In corso. In pratica, l'utente e il team creeranno elementi di lavoro all'inizio di ogni sprint o iterazione di lavoro.
L'assegnazione mette a disposizione una checklist di lavoro 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.
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:
Dalla piattaforma Azure DevOps, navigare a Boards. Selezionare quindi Boards dal menu.
Nell'elemento di lavoro Crea versione contenitore del sito Web con Docker, seleziona la freccia giù nella parte inferiore della scheda, quindi assegna l'elemento di lavoro a te stesso.
Spostare l'elemento di lavoro dalla colonna Attività alla colonna In corso .
Al termine di questo modulo, la scheda verrà spostata nella colonna Fine dopo aver completato l'attività.
Creare l'ambiente del servizio app di Azure
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 del 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, è necessario disporre della propria sottoscrizione di Azure.
Avviare Cloud Shell nel portale di Azure
Passare al portale di Azure e accedere.
Selezionare Cloud Shell dalla barra dei menu e quindi selezionare l'esperienza Bash .
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 che si trovano all'interno di una determinata posizione geografica. Stati Uniti orientali, Stati Uniti occidentali ed Europa settentrionale sono alcuni esempi di aree. Ogni risorsa di Azure, ad esempio un'istanza del 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.
Eseguire il comando seguente per elencare le aree disponibili per la sottoscrizione di Azure.
az account list-locations \ --query "[].{Name: name, DisplayName: displayName}" \ --output tableSelezionare un'area che si trova in prossimità della tua posizione dalla colonna Nome di uscita. Ad esempio, è possibile scegliere eastasia o westus2.
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 errori di digitazione accidentali.
Da Cloud Shell generare un numero casuale. In questo modo sarà più semplice creare nomi univoci a livello globale per determinati servizi nel passaggio successivo.
resourceSuffix=$RANDOMCreare 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}"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
Annotazioni
Ai fini dell'apprendimento, qui troverai le impostazioni di rete predefinite. Queste impostazioni rendono il sito accessibile da Internet. In pratica, è possibile configurare una rete virtuale di Azure che inserisce il sito Web in una rete che non è instradabile su Internet e che solo l'utente e il team possono accedere. Successivamente, è possibile riconfigurare la rete per rendere disponibile il sito Web agli utenti.
Eseguire il comando seguente
az group createper creare un gruppo di risorse usando il nome definito in precedenza.az group create --name $rgNameEseguire il comando seguente
az acr createper creare un Registro Azure Container usando il nome definito in precedenza.az acr create --name $registryName \ --resource-group $rgName \ --sku Standard \ --admin-enabled trueEseguire il comando seguente
az appservice plan createper creare un piano di servizio app usando il nome definito in precedenza.az appservice plan create \ --name $planName \ --resource-group $rgName \ --sku B1 \ --is-linuxL'argomento
--skuspecifica il piano B1. Questo piano funziona sul livello Base. L'argomento--is-linuxspecifica di usare ruoli di lavoro Linux.Importante
Se lo SKU B1 non è disponibile nella sottoscrizione di Azure, scegliere un piano diverso , ad esempio S1 (Standard).
Eseguire il comando seguente
az webapp createper creare l'istanza del servizio app.az webapp create \ --name $webName \ --resource-group $rgName \ --plan $planName \ --deployment-container-image-name $registryName.azurecr.io/web:latestEseguire il comando seguente
az webapp listper elencare il nome host e lo stato dell'istanza del servizio app.az webapp list \ --resource-group $rgName \ --query "[].{hostName: defaultHostName, state: state}" \ --output tableNota il nome host per il servizio in esecuzione. Avrai bisogno di esso più tardi quando verificherai il tuo lavoro. Ecco un esempio:
HostName State ---------------------------------------------- ------- tailspin-space-game-web-4692.azurewebsites.net RunningEseguire il comando seguente
az acr listper elencare il server di accesso dell'istanza di Registro Azure Container. Questo nome del server sarà necessario durante la creazione di variabili della pipeline in un secondo momento.az acr list \ --resource-group $rgName \ --query "[].{loginServer: loginServer}" \ --output tablePrendere nota del server di accesso. Sarà necessario in un secondo momento quando si configura la pipeline. Ecco un esempio:
LoginServer --------------------------------- tailspinspacegame4692.azurecr.io
Importante
La pagina Pulisci l'ambiente Azure DevOps in questo modulo contiene importanti passaggi di pulizia. 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 nelle pipeline di Azure Pipelines
In questo caso, si aggiungerà una variabile alla pipeline che memorizza il nome della web app in App Service. Inoltre, aggiungerai il nome del tuo Azure Container Registry.
Puoi inserire direttamente questi nomi nella configurazione pipeline, ma se li definisci come variabili, la configurazione sarà più riutilizzabile. Inoltre, se i nomi delle istanze cambiano, è possibile aggiornare le variabili e attivare la pipeline senza modificare la configurazione.
Per aggiungere le variabili:
In Azure DevOps passare al progetto Space Game - Web - Docker .
In Pipeline selezionare Libreria.
Selezionare + Gruppo di variabili.
In Proprietà immettere Release per il nome del gruppo di variabili.
In Variabili selezionare + Aggiungi.
Per il nome della variabile immettere WebAppName. 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 dovresti immettere tailspin-space-game-web-4692 e non tailspin-space-game-web-4692.azurewebsites.net.
Ripetere il processo per aggiungere un'altra variabile denominata RegistryName con il valore del server di accesso di Registro Azure Container, ad esempio tailspinspacegame4692.azurecr.io. Seleziona Salva nella parte superiore della pagina.
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.Selezionare Salva nella parte superiore della pagina per salvare le variabili. Il gruppo di variabili dovrebbe essere simile al seguente:
Creare connessioni al servizio necessarie
In questo caso si creerà 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. Si creerà anche una connessione al Registro Docker per pubblicare il contenitore nel Registro Azure Container.
Importante
Assicurarsi di aver eseguito l'accesso sia al portale di Azure che ad Azure DevOps con lo stesso account Microsoft.
In Azure DevOps passare al progetto Space Game - Web - Docker .
Nell'angolo inferiore della pagina selezionare Impostazioni progetto.
In Pipeline selezionare Connessioni al servizio.
Selezionare Crea connessione al servizio, quindi scegliere Azure Resource Manager e quindi avanti.
Nella parte superiore della pagina, Registrazione app (automatica).
Compilare i campi seguenti:
Campo Valore Livello ambito Abbonamento Abbonamento la propria 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.
Assicurarsi che l'opzione Concedi l'autorizzazione di accesso a tutte le pipeline sia selezionata.
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.
Selezionare Nuova connessione al servizio, quindi scegliere Registro Docker, quindi selezionare Avanti.
Nella parte superiore della pagina selezionare Registro Azure Container.
Selezionare Principale del servizio per Tipo di autenticazione.
Compilare i campi seguenti:
Campo Valore Abbonamento la propria sottoscrizione di Azure Registro Azure Container Selezionare quello creato in precedenza Nome della connessione al servizio Connessione al Registro Container Assicurarsi che l'opzione Concedi l'autorizzazione di accesso a tutte le pipeline sia selezionata.
Al termine, selezionare Salva .