Condividi tramite


Eseguire una factory di immagini da Azure DevOps

Questo articolo illustra tutte le operazioni di preparazione necessarie per eseguire la factory di immagini da Azure DevOps (in precedenza Visual Studio Team Services).

Nota

Qualsiasi motore di orchestrazione funzionerà. Azure DevOps non è obbligatorio. La factory di immagini viene eseguita usando gli script di Azure PowerShell, quindi può essere eseguita manualmente, usando Utilità di pianificazione di Windows, altri sistemi CI/CD e così via.

Creare un lab per la factory di immagini

Il primo passaggio per configurare la factory di immagini consiste nel creare un lab in Azure DevTest Labs. Questo lab è il lab di image factory in cui vengono create le macchine virtuali e vengono salvate immagini personalizzate. Questo lab viene considerato come parte del processo complessivo della factory di immagini. Dopo aver creato un lab, assicurarsi di salvare il nome perché sarà necessario in un secondo momento.

Script e modelli

Il passaggio successivo nell'adozione della factory di immagini per il team consiste nel comprendere cosa è disponibile. Gli script e i modelli di image factory sono disponibili pubblicamente nel repository GitHub di DevTest Labs. Ecco un contorno dei pezzi:

  • Image Factory. Si tratta della cartella radice.
    • Configurazione. Input per la factory di immagini
      • GoldenImages. Questa cartella contiene file JSON che rappresentano le definizioni delle immagini personalizzate.
      • Labs.json. File in cui i team si registrano per ricevere immagini personalizzate specifiche.
  • Script. Motore per la factory di immagini.

Gli articoli di questa sezione forniscono altri dettagli su questi script e modelli.

Creare un progetto team di Azure DevOps

Azure DevOps consente di archiviare il codice sorgente, eseguire Azure PowerShell in un'unica posizione. È possibile pianificare esecuzioni ricorrenti per mantenere aggiornate le immagini. Ci sono buone strutture per registrare i risultati per diagnosticare eventuali problemi. L'uso di Azure DevOps non è tuttavia un requisito, ma è possibile usare qualsiasi harness/motore in grado di connettersi ad Azure ed eseguire Azure PowerShell.

Se si ha un account o un progetto DevOps esistente che si vuole usare, ignorare questo passaggio.

Per iniziare, creare un account gratuito in Azure DevOps. Visitare https://www.visualstudio.com/ e selezionare Introduzione gratuitamente in Azure DevOps (in precedenza VSTS). È necessario scegliere un nome di account univoco e assicurarsi di scegliere di gestire il codice usando Git. Dopo aver creato l'account, salvare l'URL nel progetto team. Di seguito è riportato un URL di esempio: https://<accountname>.visualstudio.com/MyFirstProject.

Archiviare la factory di immagini in Git

Tutti i modelli e la configurazione di PowerShell per la factory di immagini si trovano nel repository GitHub di DevTest Labs pubblico. Il modo più rapido per ottenere il codice nel nuovo progetto team consiste nell'importare un repository. Importazione di pull nell'intero repository di DevTest Labs (in modo da ottenere documenti e esempi aggiuntivi).

  1. Visitare il progetto Azure DevOps creato nel passaggio precedente (l'URL è simile a https://< accountname.visualstudio.com/MyFirstProject>).

  2. Selezionare Importa un repository.

  3. Immettere l'URL clone per il repository devTest Labs: https://github.com/Azure/azure-devtestlab.

  4. Selezionare Importa.

    Screenshot che mostra Importa repository Git.

Se si decide di archiviare solo i file necessari (i file di image factory), seguire questa procedura per clonare il repository Git ed eseguire il push solo dei file presenti nella directory scripts/ImageFactory.

Creare una compilazione e connettersi ad Azure

A questo punto, i file di origine sono archiviati in un repository Git in Azure DevOps. È ora necessario configurare una pipeline per eseguire Azure PowerShell. Sono disponibili numerose opzioni per eseguire questi passaggi. In questo articolo si usa la definizione di compilazione per semplicità, ma funziona con DevOps Build, DevOps Release (uno o più ambienti), altri motori di esecuzione come Utilità di pianificazione di Windows o qualsiasi altro harness in grado di eseguire Azure PowerShell.

Nota

Un punto importante da tenere presente che alcuni dei file di PowerShell richiedono molto tempo per l'esecuzione quando sono presenti molte immagini personalizzate (10+) da creare. Gli agenti devOps build/release ospitati gratuitamente hanno un timeout di 30 minuti, quindi non è possibile usare l'agente ospitato gratuito dopo aver iniziato a creare molte immagini. Questa sfida di timeout si applica a qualsiasi harness che si decide di usare, è consigliabile verificare in anticipo che sia possibile estendere i timeout tipici per gli script di Azure PowerShell a esecuzione prolungata. Nel caso di Azure DevOps, è possibile usare agenti ospitati a pagamento o usare il proprio agente di compilazione.

  1. Per iniziare, selezionare Configura compilazione nella home page del progetto DevOps:

    Screenshot che mostra il pulsante Configura compilazione.

  2. Specificare un nome per la compilazione, ad esempio Compilare e distribuire immagini in DevTest Labs.

  3. Selezionare una definizione di compilazione vuota e selezionare Applica per creare la compilazione.

  4. In questa fase è possibile scegliere Ospitato per l'agente di compilazione.

  5. Salvare la definizione di compilazione .

    Screenshot che mostra la definizione di compilazione.

Configurare le variabili di compilazione

Per semplificare i parametri della riga di comando, incapsulare i valori chiave che determinano la factory dell'immagine in un set di variabili di compilazione. Selezionare la scheda Variabili e verrà visualizzato un elenco di diverse variabili predefinite. Ecco l'elenco delle variabili da immettere in Azure DevOps:

Nome variabile Valore Note
ConfigurationLocation /Scripts/ImageFactory/Configuration Questo percorso è il percorso completo nel repository nella cartella Configuration . Se è stato importato l'intero repository precedente, il valore a sinistra è corretto. In caso contrario, aggiornare in modo che punti al percorso di configurazione.
DevTestLabName MyImageFactory Nome del lab in Azure DevTest Labs usato come factory per produrre immagini. Se non si dispone di un account Microsoft, è possibile crearne uno. Assicurarsi che il lab si trova nella stessa sottoscrizione a cui l'endpoint del servizio ha accesso.
ImageRetention 1 Numero di immagini da salvare di ogni tipo. Impostare il valore predefinito su 1.
MachinePassword ******* Password dell'account amministratore predefinito per le macchine virtuali. Questo account è temporaneo, quindi assicurarsi che sia sicuro. Selezionare l'icona di blocco a destra per assicurarsi che sia una stringa sicura.
MachineUserName ImageFactoryUser Nome utente dell'account amministratore predefinito per le macchine virtuali. Questo account è temporaneo.
StandardTimeoutMinutes 30 Il timeout dovrebbe attendere le normali operazioni di Azure.
SubscriptionId 0000000000-0000-0000-0000-0000000000000 ID della sottoscrizione in cui è presente il lab e a cui l'endpoint del servizio ha accesso.
VMSize Standard_A3 Dimensioni della macchina virtuale da usare per il passaggio Crea . Le macchine virtuali create sono temporanee. La dimensione deve essere quella abilitata per il lab. Verificare che sia presente una quota di core di sottoscrizione sufficiente.

Screenshot che mostra le variabili di compilazione.

Connect to Azure

Il passaggio successivo consiste nel configurare un'entità servizio. Un'entità servizio è un'identità in Microsoft Entra ID che consente all'agente di compilazione DevOps di operare in Azure per conto dell'utente. Per configurarla, iniziare con l'aggiunta del primo passaggio di compilazione di Azure PowerShell.

  1. Selezionare Aggiungi attività.
  2. Cercare Azure PowerShell.
  3. Dopo averla trovata, selezionare Aggiungi per aggiungere l'attività alla compilazione. Quando si seleziona Aggiungi, viene visualizzata l'attività sul lato sinistro come aggiunto.

Screenshot che mostra il passaggio Configura PowerShell.

Il modo più rapido per configurare un'entità servizio consiste nel consentire ad Azure DevOps di farlo.

  1. Selezionare l'attività appena aggiunta.
  2. Per Tipo di connessione di Azure scegliere Azure Resource Manager.
  3. Selezionare il collegamento Gestisci per configurare l'entità servizio.

Per ulteriori informazioni, vedi questo post di blog. Quando si seleziona il collegamento Gestisci , si verrà posizionati nella posizione corretta in DevOps (secondo screenshot nel post di blog) per configurare la connessione ad Azure. Assicurarsi di scegliere Endpoint servizio di Azure Resource Manager durante la configurazione della connessione.

Completare l'attività di compilazione

Se si seleziona l'attività di compilazione, verranno visualizzati tutti i dettagli nel riquadro di destra che devono essere compilati.

  1. Assegnare innanzitutto un nome all'attività di compilazione: Crea Macchine virtuali.

  2. Scegliere l'entità servizio creata scegliendo Azure Resource Manager

  3. Scegliere l'endpoint del servizio.

  4. Per Percorso script selezionare ... (puntini di sospensione) a destra.

  5. Passare allo script MakeImageenImageVMs.ps1 .

  6. I parametri script dovrebbero avere un aspetto simile al seguente: -ConfigurationLocation $(System.DefaultWorkingDirectory)$(ConfigurationLocation) -DevTestLabName $(DevTestLabName) -vmSize $(VMSize) -machineUserName $(MachineUserName) -machinePassword (ConvertTo-SecureString -string '$(MachinePassword)' -AsPlainText -Force) -StandardTimeoutMinutes $(StandardTimeoutMinutes)

    Screenshot che mostra Completare la definizione di compilazione.

Accodamento della compilazione

Verificare che tutto sia configurato correttamente accodando una nuova compilazione. Mentre la compilazione è in esecuzione, passare al portale di Azure e selezionare Tutte le Macchine virtuali nel lab di factory delle immagini per verificare che tutto funzioni correttamente. Verranno visualizzate tre macchine virtuali create nel lab.

Macchine virtuali nel lab

Passaggi successivi

Il primo passaggio per configurare la factory di immagini basata su Azure DevTest Labs è stato completato. Nell'articolo successivo della serie si ottengono le macchine virtuali generalizzate e salvate in immagini personalizzate. Quindi, sono stati distribuiti a tutti gli altri lab. Vedere l'articolo successivo della serie: Salvare immagini personalizzate e distribuire in più lab.