Condividi tramite


Distribuire app Web in macchine virtuali di Azure con gruppi di distribuzione

Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020

Nelle versioni precedenti di Azure Pipelines, la distribuzione di applicazioni in più server richiede una pianificazione e una manutenzione significative. La comunicazione remota di Windows PowerShell doveva essere abilitata manualmente, erano necessarie porte specifiche da aprire e gli agenti di distribuzione devono essere installati in ogni server. Anche la gestione delle distribuzioni di implementazione richiedeva l'intervento manuale. Queste sfide sono state notevolmente semplificate con l'introduzione dei gruppi di distribuzione.

Un gruppo di distribuzione installa un agente di distribuzione in ogni server di destinazione del gruppo e consente alla pipeline di versione di distribuire gradualmente l'applicazione in tali server. È possibile creare più pipeline per le distribuzioni di implementazione, consentendo il recapito graduale degli aggiornamenti delle applicazioni a gruppi di utenti diversi.

Nota

I gruppi di distribuzione vengono usati nelle pipeline classiche. Se stai utilizzando pipeline YAML, consulta Ambienti.

Prerequisiti

Prodotto Requisiti
Azure DevOps - Un'organizzazione di Azure DevOps.
- Un progetto Azure DevOps .
Generatore demo di Azure DevOps - Configurare demo generatore.
- Creare un nuovo progetto Azure DevOps e assicurarsi di scegliere il modello DeploymentGroups (numero 15 nell'elenco).
Azure - Una sottoscrizione di Azure .

Configurare le risorse in Azure

Questa sezione illustra come configurare le risorse di Azure usando un modello di Resource Manager. Effettua il provisioning di sei server Web macchina virtuale (VM) con IIS configurato, una macchina virtuale di SQL Server (server di database), un servizio di bilanciamento del carico di Azure e tutte le connessioni di rete necessarie.

  1. Selezionare il pulsante Distribuisci in Azure per avviare la distribuzione delle risorse in Azure.

  2. Immettere le informazioni necessarie, quindi selezionare Rivedi e crea. È possibile usare qualsiasi combinazione consentita di nomi utente e password, perché non verranno usati di nuovo in questa esercitazione. Il nome del prefisso Env viene aggiunto a tutti i nomi delle risorse per garantire l'univocità globale. Usa qualcosa di personale o casuale. Se si verifica un conflitto di denominazione durante la convalida o la creazione, provare a modificare questo valore e ridistribuire. Il provisioning richiede in genere 10-15 minuti.

    Screenshot che mostra come configurare le risorse di Azure in Azure.

  3. Al termine della convalida, selezionare Crea per distribuire le risorse.

  4. Al termine della distribuzione, passare al gruppo di risorse nel portale di Azure per esaminare le risorse generate. Selezionare la macchina virtuale del server di database con sqlSrv nel nome per visualizzarne i dettagli.

    Screenshot che mostra le risorse appena create in Azure.

  5. Copiare il nome DNS come sarà necessario in un passaggio successivo.

    Screenshot che mostra la macchina virtuale del server di database in Azure.

Creare un gruppo di distribuzione

Un gruppo di distribuzione è una raccolta di computer, ognuno con un agente di distribuzione installato. Questi computer comunicano con Azure Pipelines per coordinare le distribuzioni di applicazioni.

  1. Passare al progetto Azure DevOps creato in precedenza usando il generatore demo.

  2. Selezionare Pipeline>Gruppi di distribuzione.

  3. Selezionare Aggiungi un gruppo di distribuzione.

  4. Immettere Release come nome del gruppo di distribuzione e quindi selezionare Crea. Verrà generato uno script di registrazione. È possibile usare questo script per registrare i server di destinazione e installare manualmente l'agente di distribuzione. Tuttavia, in questa esercitazione, i server di destinazione vengono registrati automaticamente come parte della release pipeline.

Creare un token di accesso personale

  1. Dal progetto Azure DevOps selezionare l'icona Impostazioni utente e quindi token di accesso personali.

  2. Selezionare Nuovo token, immettere un nome per il pat e quindi scegliere una data di scadenza.

  3. Selezionare Personalizzato definito per Ambiti, selezionare Mostra tutti gli ambiti e quindi controllare gli ambiti seguenti:

    1. Progetto e team ->Lettura e scrittura.
    2. Pool di agenti ->Lettura e gestione
    3. Gruppi di distribuzione ->Lettura e gestione.
  4. Al termine, selezionare Crea e copiare il pat come sarà necessario nella sezione seguente.

Configurare la pipeline di versione

Il modello di pipeline di versione classica include un processo dell'agente, la fase agent, che esegue attività su un agente in un pool di agenti. Include anche due processi del gruppo di distribuzione: la fase gruppo di distribuzione e la fase di distribuzione IIS. I processi del gruppo di distribuzione eseguono attività nei computer definiti in un gruppo di distribuzione. Seguire questa procedura per configurare ogni processo.

Configurare il processo dell'agente

  1. Passare al progetto Azure DevOps e selezionare Versioni pipeline>.

  2. Selezionare la definizione di rilascio gruppi di distribuzione e quindi selezionare Modifica.

  3. Selezionare la scheda Attività per visualizzare le attività di distribuzione nella pipeline.

  4. Selezionare la fase Fase agente e quindi scegliere il pool di Azure Pipelines e la specifica più recente di Windows .

    Screenshot che mostra la fase dell'agente nella pipeline di versione classica.

  5. Selezionare l'attività Distribuzione gruppo di risorse di Azure , selezionare la sottoscrizione di Azure usata in precedenza per creare le risorse e quindi selezionare Autorizza per autorizzare la connessione. Dopo l'autorizzazione, selezionare il gruppo di risorse creato per questa esercitazione.

    Screenshot che mostra come configurare il gruppo di risorse nell'attività di distribuzione.

  6. Questa attività verrà eseguita in macchine virtuali in Azure e deve essere in grado di connettersi di nuovo alla pipeline per completare i requisiti del gruppo di distribuzione. Per proteggere la connessione, è necessario configurare una connessione al servizio usando il token di accesso personale creato in precedenza. Scorrere verso il basso all'interno della stessa attività e selezionare Nuovo in Connessione al servizio Azure Pipelines.

  7. Nel pannello Nuova connessione al servizio immettere l'URL di connessione dell'organizzazione https://dev.azure.com/organizationNameAzure DevOps. Incollare il token di accesso personale creato in precedenza, specificare un nome di connessione del servizio e selezionare la casella Concedi autorizzazione di accesso a tutte le pipeline . Al termine, selezionare Verifica e salva .

    Screenshot che mostra come configurare una nuova connessione al servizio per l'attività di distribuzione.

  8. Scorrere verso il basso nell'attività Distribuzione gruppo di risorse di Azure , quindi selezionare tra i menu a discesa il progetto Team e il gruppo di distribuzione creato in precedenza.

    Screenshot che mostra come configurare il progetto team e il gruppo di distribuzione per l'attività di distribuzione.

Configurare i processi del gruppo di distribuzione

  1. Nella definizione di versione Gruppi di distribuzione selezionare il processo fase del gruppo di distribuzione . Questo processo esegue attività nei computer definiti nel gruppo di distribuzione. Questo processo usa il tag SQL-Svr-DB per eseguire la distribuzione in un subset di destinazioni nel gruppo di distribuzione. Nell'elenco a discesa Gruppo di distribuzione selezionare il gruppo di distribuzione Versione creato in precedenza.

    Screenshot che mostra come configurare il processo di fase del gruppo di distribuzione.

  2. Selezionare il processo di fase di distribuzione IIS . Questo processo usa il tag WebSrv per distribuire l'applicazione Web in un subset dei server Web. Scegliere il gruppo di distribuzione creato in precedenza dall'elenco a discesa.

  3. Le attività Disconnect Azure Network Load Balancer e Connect Azure Network Load Balancer sono deprecate. è possibile disabilitarli per il momento facendo clic con il pulsante destro del mouse sull'attività e selezionando Disabilita le attività di selezione.

  4. Le attività Gestione app Web IIS e Distribuzione app Web IIS vengono precompilata e non richiedono modifiche.

  5. Selezionare la scheda Variabili nell'angolo superiore sinistro, selezionare Variabili pipeline e specificare i valori seguenti. Sostituire il segnaposto nella variabile DefaultConnectionString con il nome DNS di SQL Server copiato in precedenza:

    Nome variabile Valore variabile
    DatabaseName PartsUnlimited-Dev
    DBPassword xxxxxxxx
    DBUserName xxxxxxxx
    DefaultConnectionString Origine dati=[YOUR_DNS_NAME]; Initial Catalog=PartsUnlimited-Dev; User ID=xxxxxxxx; Password=xxxxxxxx; MultipleActiveResultSets=False; Connection Timeout=30;
    ServerName localhost
  6. Selezionare Salva, aggiungere un commento se si vuole, quindi selezionare OK.

Suggerimento

Se viene visualizzato un errore che indica che la variabile DefaultConnectionString deve essere salvata come segreto, selezionare l'icona del lucchetto accanto al relativo valore per proteggerla.

Creare una versione e distribuire un'applicazione

Ora che la definizione di versione è configurata e salvata, è possibile procedere con la creazione di una versione per distribuire l'app Web in Azure. Tuttavia, prima di avviare la versione, è necessario assicurarsi che la pipeline di compilazione sia stata eseguita almeno una volta. In questo modo viene generato l'artefatto della pipeline necessario per la distribuzione. Se si tenta di eseguire la pipeline di versione prima della pipeline di compilazione, la sezione Artifacts nel pannello di versione sarà vuota. Seguire questa procedura per eseguire la pipeline, generare un artefatto della pipeline e quindi creare una nuova versione:

  1. Dal progetto Azure DevOps selezionare Pipeline e quindi selezionare la pipeline di compilazione Gruppi di distribuzione .

  2. Selezionare Esegui pipeline. Nel pannello di esecuzione della pipeline selezionare la specifica dell'agente e quindi selezionare Esegui.

    Screenshot che mostra come configurare l'esecuzione della pipeline.

  3. Al termine della pipeline, verrà generato un artefatto della pipeline. È possibile visualizzarlo dalla finestra di riepilogo della pipeline:

    Screenshot che mostra l'artefatto della pipeline generata.

  4. Passare ora a Versione pipeline>, selezionare la definizione di versione e quindi selezionare Crea versione per avviare la pipeline di distribuzione.

    Screenshot che mostra come creare una nuova versione.

  5. Al termine selezionare Crea e quindi selezionare l'esecuzione della pipeline per aprire la panoramica. Verrà visualizzata la pipeline in corso. Fare clic sulla fase per visualizzare i log di distribuzione dettagliati.

    Screenshot che mostra la panoramica della pipeline di versione.

  6. Nella finestra di riepilogo è possibile visualizzare lo stato di ogni fase della distribuzione:

    Screenshot che mostra il riepilogo della versione.

Risoluzione dei problemi

  • Impossibile connettersi al server master o di destinazione o a una connessione stabilita correttamente con il server, ma si è verificato un errore durante il processo di accesso.

Se si verifica uno di questi errori durante l'esecuzione dell'attività Distribuzione Sql Dacpac nel gruppo di computer, seguire questa procedura:

  1. Verificare il database:

Assicurarsi che il database sia stato creato correttamente durante la distribuzione delle risorse. È possibile confermarlo usando l'interfaccia della riga di comando di Azure o sqlcmd:

sqlcmd -S <server-name> -U <username> -P <password> -Q "SELECT name FROM sys.databases"

Se il database non è presente nell'elenco, è possibile crearne uno nuovo usando il comando seguente:

sqlcmd -S <server-name> -U <username> -P <password> -Q "CREATE DATABASE [YourDatabaseName]"
  1. Verificare l'autenticazione di SQL Server:

Assicurarsi che l'autenticazione di SQL Server sia abilitata, è necessario configurare SQL Server per consentire l'autenticazione di SQL e Windows (modalità mista). Per abilitare:

a) Connettersi con SSMS o sqlcmd

b. Eseguire la query riportata di seguito:

EXEC xp_instance_regwrite 
    N'HKEY_LOCAL_MACHINE',
    N'Software\\Microsoft\\MSSQLServer\\MSSQLServer',
    N'LoginMode',
    REG_DWORD,
    2;

c. Riavviare il servizio SQL Server per rendere effettiva la modifica:

net stop MSSQLSERVER
net start MSSQLSERVER
  • Alcuni agenti sono offline anche se l'agente è in esecuzione nella macchina virtuale

Se uno o più agenti vengono visualizzati come offline, è possibile provare un paio di cose. Per prima cosa, accedere alla macchina virtuale in cui è in esecuzione l'agente ed eseguire il comando seguente per verificare se la macchina virtuale sta risolvendo lo stesso set di indirizzi IP.

nslookup dev.azure.com

Se tutte le macchine virtuali si risolvono nello stesso set di indirizzi IP, assicurarsi che il servizio di bilanciamento del carico sia configurato con la regola in uscita corretta. È possibile aggiungere un pool back-end al servizio di bilanciamento del carico in Azure, aggiungere le schede di interfaccia di rete delle macchine virtuali al pool back-end e quindi associarlo alla regola in uscita del servizio di bilanciamento del carico. Per fare questo:

  1. Passare ad Azure e trovare il servizio di bilanciamento del carico.

  2. Selezionare Pool back-end, scegliere il pool esistente o crearne uno nuovo e aggiungere i server Web in Configurazioni IP.

  3. Passare a Regole di bilanciamento del carico, selezionare la regola di bilanciamento del carico e scegliere il pool back-end dall'elenco a discesa Pool back-end .

Pulire le risorse

Questa esercitazione ha creato un progetto Azure DevOps e distribuito risorse in Azure. Se non sono più necessari, seguire questa procedura per eseguire la pulizia:

  1. Eliminare il progetto Azure DevOps: passare alle impostazioni> del progettoPanoramica>Elimina.

  2. Eliminare il gruppo di risorse di Azure Tutte le risorse di Azure create durante questa esercitazione sono state inserite nello stesso gruppo di risorse. L'eliminazione del gruppo di risorse rimuoverà tutte le risorse associate. A tale scopo, è possibile usare il portale di Azure o l'interfaccia della riga di comando:

  • Interfaccia della riga di comando di Azure

    az group delete --name <RESOURCE_GROUP_NAME> --yes --no-wait
    
  • Portale di Azure

  1. Passare a > del portale di Azure.

  2. Selezionare il gruppo di risorse usato nell'esercitazione.

  3. Selezionare Elimina gruppo di risorse, confermare il nome e quindi selezionare Elimina.