Risolvere i problemi relativi all'applicazione di artefatti nelle macchine virtuali di DevTest Labs

Questo articolo illustra le possibili cause e i passaggi per la risoluzione dei problemi relativi agli errori degli artefatti nelle macchine virtuali di Azure DevTest Labs.

Gli artefatti sono strumenti, azioni o software che è possibile installare nelle macchine virtuali del lab durante o dopo la creazione della macchina virtuale. I proprietari del lab possono pre-selezionare gli artefatti obbligatori da applicare a tutte le macchine virtuali del lab al momento della creazione e gli utenti del lab possono applicare artefatti alle macchine virtuali di cui sono proprietari.

Esistono diverse possibili cause per cui gli artefatti non vengono installati o eseguiti correttamente. Quando un artefatto sembra smettere di rispondere, provare prima a determinare dove è bloccato. L'installazione degli artefatti può essere bloccata durante la richiesta iniziale o non riesce durante l'esecuzione della richiesta.

È possibile risolvere gli errori degli artefatti dal portale di Azure o dalla macchina virtuale in cui l'artefatto non è riuscito.

Risolvere gli errori degli artefatti dal portale di Azure

Se non è possibile applicare un artefatto a una macchina virtuale, controllare prima di tutto gli elementi seguenti nel portale di Azure:

  • Assicurarsi che la macchina virtuale sia in esecuzione.
  • Passare alla pagina Artefatti per la macchina virtuale lab per assicurarsi che la macchina virtuale sia pronta per l'applicazione di artefatti. Se la funzionalità Applica artefatti non è disponibile, viene visualizzato un messaggio nella parte superiore della pagina.

Usare un comando di PowerShell

È anche possibile usare Azure PowerShell per determinare se la macchina virtuale può applicare artefatti. Esaminare il flag canApplyArtifacts, che viene restituito quando si espande un'operazione GET . Ad esempio:

Select-AzSubscription -SubscriptionId $SubscriptionId | Out-Null
$vm = Get-AzResource `
        -Name "$LabName/$VmName" `
        -ResourceGroupName $LabRgName `
        -ResourceType 'microsoft.devtestlab/labs/virtualmachines' `
        -ApiVersion '2018-10-15-preview' `
        -ODataQuery '$expand=Properties($expand=ComputeVm)'
$vm.Properties.canApplyArtifacts

Analizzare l'artefatto non riuscito

Un artefatto può smettere di rispondere e infine viene visualizzato come Non riuscito. Per analizzare gli artefatti non riusciti:

  1. Nella pagina Panoramica del lab, nell'elenco in Macchine virtuali personali selezionare la macchina virtuale con l'artefatto che si vuole analizzare.

  2. Nella pagina Panoramica della macchina virtuale selezionare Artefatti nel riquadro di spostamento a sinistra. Nella pagina Artefatti sono elencati gli elementi associati alla macchina virtuale e il relativo stato.

    Screenshot che mostra l'elenco degli artefatti e il relativo stato.

  3. Selezionare l'artefatto che mostra lo stato Non riuscito . L'artefatto viene aperto con un messaggio di estensione che include dettagli sull'errore dell'artefatto.

    Screenshot del messaggio di errore per un artefatto non riuscito.

Esaminare i log attività

Per installare gli artefatti, DevTest Labs crea e distribuisce un modello di Azure Resource Manager (ARM) che richiede l'uso dell'estensione cse (Custom Script Extension). Un errore a questo livello viene visualizzato nei log attività per la sottoscrizione e per il gruppo di risorse della macchina virtuale.

Se non è stato possibile installare un artefatto, esaminare le voci del log attività per creare o aggiornare l'estensione macchina virtuale, se è stato applicato direttamente l'elemento o Crea o Aggiorna macchina virtuale, se l'artefatto è stato applicato come parte della creazione della macchina virtuale. Cercare errori in queste voci. A volte è necessario espandere la voce per visualizzare l'errore.

Selezionare la voce non riuscita per visualizzare i dettagli dell'errore. Nella pagina dell'errore selezionare JSON per esaminare il contenuto del payload JSON. È possibile visualizzare l'errore alla fine del documento JSON.

Esaminare il repository di artefatti privati e l'account di archiviazione lab

Quando DevTest Labs applica un artefatto, legge la configurazione e i file degli artefatti dai repository connessi. Per impostazione predefinita, DevTest Labs ha accesso al repository di artefatti pubblici di DevTest Labs. È anche possibile connettere un lab a un repository privato per accedere agli artefatti personalizzati. Se l'installazione di un artefatto personalizzato non riesce, assicurarsi che il token di accesso personale per il repository privato non sia scaduto. Se il token di accesso personale è scaduto, l'artefatto non verrà elencato e gli script che fanno riferimento agli artefatti del repository hanno esito negativo.

A seconda della configurazione, le macchine virtuali del lab potrebbero non avere accesso diretto al repository degli artefatti. DevTest Labs memorizza nella cache gli artefatti in un account di archiviazione lab creato al primo inizializzazione del lab. Se l'accesso a questo account di archiviazione è bloccato, ad esempio quando il traffico viene bloccato dalla macchina virtuale al servizio archiviazione di Azure, potrebbe essere visualizzato un errore simile al seguente:

CSE Error: Failed to download all specified files. Exiting. Exception: Microsoft.WindowsAzure.Storage.StorageException: The remote server returned an error: (403) Forbidden. ---> System.Net.WebException: The remote server returned an error: (403) Forbidden.

Questo errore viene visualizzato nel log attività del gruppo di risorse della macchina virtuale.

Per risolvere i problemi di connettività all'account di archiviazione di Azure:

  • Verificare la presenza di gruppi di sicurezza di rete aggiunti.Check for added network security groups (NSG). Se è stato aggiunto un criterio di sottoscrizione per configurare automaticamente i gruppi di sicurezza di rete in tutte le reti virtuali, influirà sulla rete virtuale usata per la creazione di macchine virtuali del lab.

  • Verificare le regole del gruppo di sicurezza di rete. Usare la verifica del flusso IP per determinare se una regola del gruppo di sicurezza di rete blocca il traffico da o verso una macchina virtuale. È anche possibile esaminare le regole effettive dei gruppi di sicurezza per assicurarsi che esista una regola consenti gruppo di sicurezza di rete in ingresso. Per altre informazioni, vedere Uso di regole di sicurezza efficaci per risolvere i problemi del flusso del traffico delle macchine virtuali.

  • Controllare l'account di archiviazione predefinito del lab. L'account di archiviazione predefinito è il primo account di archiviazione creato al momento della creazione del lab. Il nome inizia in genere con la lettera "a" e termina con un numero a più cifre, ad esempio un<labname>#.

    1. Passare al gruppo di risorse del lab.
    2. Individuare la risorsa di tipo Account di archiviazione il cui nome corrisponde alla convenzione.
    3. Nella pagina Panoramica dell'account di archiviazione selezionare Rete nel riquadro di spostamento a sinistra.
    4. Nella scheda Firewall e reti virtuali verificare che l'accesso alla rete pubblica sia impostato su Abilitato da tutte le reti. In alternativa, se l'opzione Abilitato da reti virtuali e indirizzi IP selezionati è selezionata , assicurarsi che le reti virtuali del lab usate per creare macchine virtuali vengano aggiunte all'elenco.

Per informazioni dettagliate sulla risoluzione dei problemi, vedere Configurare firewall e reti virtuali di Archiviazione di Azure.

Risolvere gli errori degli artefatti dalla macchina virtuale lab

È possibile connettersi alla macchina virtuale del lab in cui l'artefatto non è riuscito ed esaminare il problema.

Esaminare il file di log dell'estensione script personalizzato

  1. Nella macchina virtuale lab passare a C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\*1.10.12*\Status\, dove *1.10.12* è il numero di versione CSE.

    Screenshot della cartella Status nel lab V M.

  2. Aprire ed esaminare il file STATUS per visualizzare l'errore.

Per istruzioni su come trovare i file di log in una macchina virtuale Linux , vedere Usare l'estensione script personalizzata di Azure versione 2 con macchine virtuali Linux.

Controllare l'agente di macchine virtuali

Assicurarsi che l'agente di macchine virtuali di Azure sia installato e pronto.

Quando la macchina virtuale viene avviata per la prima volta o quando l'agente del servizio certificati viene installato per la prima volta per soddisfare la richiesta di applicazione degli artefatti, potrebbe essere necessario aggiornare l'agente di macchine virtuali o attendere l'inizializzazione dell'agente di macchine virtuali. L'agente di macchine virtuali può dipendere dai servizi che richiedono molto tempo per l'inizializzazione. Per altre informazioni sulla risoluzione dei problemi, vedere Panoramica dell'agente di macchine virtuali di Azure.

Per verificare se l'artefatto sembra smettere di rispondere a causa dell'agente di macchine virtuali:

  1. Nella macchina virtuale lab passare a C:\WindowsAzure\logs.

  2. Aprire il file WaAppAgent.log.

  3. Cercare le voci che mostrano l'avvio dell'agente di macchine virtuali, il completamento dell'inizializzazione e il primo heartbeat inviato, nel momento in cui si è verificato il problema dell'artefatto.

    [00000006] [11/14/2019 05:52:13.44] [INFO]  WindowsAzureGuestAgent starting. Version 2.7.41491.949
    ...
    [00000006] [11/14/2019 05:52:31.77] [WARN]  Waiting for OOBE to Complete ...
    ...
    [00000006] [11/14/2019 06:02:30.43] [WARN]  Waiting for OOBE to Complete ...
    [00000006] [11/14/2019 06:02:33.43] [INFO]  StateExecutor initialization completed.
    [00000020] [11/14/2019 06:02:33.43] [HEART] WindowsAzureGuestAgent Heartbeat.
    

Nell'esempio precedente l'avvio dell'agente di macchine virtuali ha richiesto 10 minuti e 20 secondi. La causa è che l'avvio del servizio Configurazione guidata richiede molto tempo.

Per informazioni generali sulle estensioni di Azure, vedere Estensioni e funzionalità delle macchine virtuali di Azure.

Analizzare i problemi di script

L'installazione dell'artefatto potrebbe non riuscire a causa della modalità di creazione dello script di installazione dell'artefatto. Ad esempio:

  • Lo script ha parametri obbligatori, ma non riesce a passare un valore, consentendo all'utente di lasciarlo vuoto o perché non esiste alcun valore predefinito nel file di definizione artifactfile.json . Lo script smette di rispondere perché è in attesa dell'input dell'utente.

  • Lo script richiede l'input dell'utente come parte dell'esecuzione. Gli script devono funzionare automaticamente senza richiedere l'intervento dell'utente.

Per risolvere i problemi relativi al fatto che lo script causa l'interruzione della risposta dell'artefatto:

  1. Copiare lo script nella macchina virtuale o individuarlo nella macchina virtuale nel percorso di download dello script di artefatto C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.12\Downloads.
  2. Usando un prompt dei comandi amministrativo, eseguire lo script nella macchina virtuale, fornendo gli stessi valori dei parametri che hanno causato il problema.
  3. Determinare se lo script mostra un comportamento indesiderato. In tal caso, richiedere un aggiornamento o correggere lo script.

Suggerimento

È possibile inviare correzioni di script proposte per gli artefatti ospitati nel repository pubblico di DevTest Labs. Per informazioni dettagliate, vedere la sezione Contributi nel documento README .

Nota

Un artefatto personalizzato deve avere la struttura corretta. Per informazioni su come costruire correttamente un elemento, vedere Creare elementi personalizzati. Per un esempio di artefatto strutturato correttamente, vedere l'artefatto dei tipi di parametri di test .

Per altre informazioni sulla scrittura e sulla correzione degli script degli artefatti, vedere AUTHORING.

Passaggi successivi

Se sono necessarie altre informazioni, provare uno dei canali di supporto seguenti:

  • Contattare gli esperti di Azure DevTest Labs nei forum msdn di Azure e Stack Overflow.
  • Ottenere risposte dagli esperti di Azure tramite i forum di Azure.
  • Connettersi con @AzureSupport, l'account ufficiale di Microsoft Azure per migliorare l'esperienza dei clienti. Il supporto di Azure consente di entrare in contatto con la community di Azure e quindi di ottenere risposte, assistenza e consulenza.
  • Passare al sito supporto tecnico di Azure e selezionare Invia un ticket di supporto per registrare un evento imprevisto supporto tecnico di Azure.