Beheben von Problemen beim Anwenden von Artefakten auf einer Azure DevTest Labs-VM

Dieser Artikel beschreibt mögliche Ursachen und Problembehandlungsschritte für Artefaktfehler auf Azure DevTest Labs-VMs.

Artefakte sind Tools, Aktionen oder Software, die Sie auf Lab-VMs während oder nach der Erstellung der VM installieren können. Labbesitzer können obligatorische Artefakte vorab auswählen, die bei der Erstellung auf alle Lab-VMs angewendet werden sollen, und Labbenutzer können Artefakte auf VMs anwenden, deren Besitzer sie sind.

Es gibt mehrere mögliche Ursachen dafür, dass Artefakte nicht ordnungsgemäß installiert oder ausgeführt werden. Wenn ein Artefakt scheinbar nicht mehr reagiert, untersuchen Sie zunächst, wo das Problem auftritt. Die Artefaktinstallation kann während der anfänglichen Anforderung blockiert werden oder während der Anforderungsausführung fehlschlagen.

Sie können Artefaktfehler von Azure-Portal oder von der VM aus beheben, auf der das Artefakt fehlgeschlagen ist.

Problembehandlung bei Artefaktfehlern über das Azure-Portal

Wenn Sie ein Artefakt nicht auf eine VM anwenden können, überprüfen Sie zunächst die folgenden Elemente im Azure-Portal:

  • Ob die VM ausgeführt wird.
  • Navigieren Sie zur Seite Artifacts für die Lab-VM, um sicherzustellen, dass die VM für die Anwendung von Artefakten bereit ist. Wenn die Funktion zum Anwenden von Artefakten nicht verfügbar ist, wird oben auf der Seite eine Meldung angezeigt.

Einen PowerShell-Befehl verwenden

Sie können auch Azure PowerShell verwenden, um zu ermitteln, ob die VM Artefakte anwenden kann. Überprüfen Sie das Flag canApplyArtifacts, das nur beim Erweitern eines GET-Vorgangs zurückgegeben wird. Zum Beispiel:

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

Untersuchen des fehlerhaften Artefakts

Ein Artefakt kann nicht mehr reagieren und schließlich als fehlgeschlagen angezeigt werden. So untersuchen Sie fehlerhafte Artefakte:

  1. Wählen Sie auf Seite Übersicht ihres Labs in der Liste unter Meine VMs die VM mit dem Artefakt aus, das Sie untersuchen möchten.

  2. Klicken Sie auf der Seite Übersicht der VM im linken Navigationsbereich auf Artefakte. Auf der Seite Artefakte werden der VM zugeordnete Artefakte und deren Status aufgeführt.

    Screenshot: Liste der Artefakte und deren Status.

  3. Wählen Sie ein Artefakt mit dem Status Fehler aus. Das Artefakt wird geöffnet. Es wird eine ausführliche Meldung mit Details zum Fehler des Artefakts angezeigt.

    Screenshot: Fehlermeldung für ein fehlerhaftes Artefakt.

Inspizieren der Aktivitätsprotokolle

Zum Installieren von Artefakten wird eine eine Azure Resource Manager(ARM)-Vorlage von DevTest Labs erstellt und bereitgestellt, die anfordert, die benutzerdefinierte Skripterweiterung (Custom Script Extension, CSE) ausführen zu dürfen. Ein Fehler auf dieser Ebene wird in den Aktivitätsprotokollen für das Abonnement und die Ressourcengruppe der VM angezeigt.

Wenn ein Artefakt nicht installiert werden konnte, überprüfen Sie die Einträge des Aktivitätsprotokolls für dasErstellen oder Aktualisieren von VM-Erweiterungen, wenn Sie das Artefakt direkt angewendet haben, oder Erstellen oder Aktualisieren von VMs, wenn das Artefakt im Rahmen der VM-Erstellung angewendet wurde. Suchen Sie in diesen Einträgen nach Fehlern. Manchmal müssen Sie den Eintrag erweitern, um den Fehler zu sehen.

Wählen Sie den Fehlereintrag aus, um die Fehlerdetails anzuzeigen. Wählen Sie auf der Fehlerseite JSON, um den Inhalt der JSON-Nutzlast zu überprüfen. Der Fehler wird am Ende des JSON-Dokuments angezeigt.

Untersuchen des privaten Artefaktrepositorys und Lab-Speicherkontos

Wenn DevTest Labs ein Artefakt anwendet, liest es die Artefaktkonfiguration und die zugehörigen Dateien aus den konfigurierten Repositorys. Standardmäßig hat DevTest Labs Zugriff auf das öffentliche Artefaktrepository von DevTest Labs. Sie können ein Lab auch mit einem privaten Repository verbinden, um auf benutzerdefinierte Artefakte zuzugreifen. Wenn ein benutzerdefiniertes Artefakt nicht installiert werden kann, stellen Sie sicher, dass das persönliche Zugriffstoken (Personal Access Token, PAT) für das private Repository nicht abgelaufen ist. Wenn das PAT abgelaufen ist, wird das Artefakt nicht aufgelistet, und alle Skripts, die auf Artefakte aus diesem Repository verweisen, schlagen fehl.

Je nach Konfiguration haben Lab-VMs möglicherweise keinen direkten Zugriff auf das Artefaktrepository. DevTest Labs speichert die Artefakte in einem Lab-Speicherkonto zwischen, das bei der ersten Initialisierung des Labs erstellt wird. Wenn der Zugriff auf dieses Speicherkonto in irgendeiner Weise blockiert wird (wenn etwa der Datenverkehr von der VM zum Azure Storage-Dienst blockiert wird), wird möglicherweise ein Fehler wie der folgende angezeigt:

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.

Dieser Fehler wird im Aktivitätsprotokoll der Ressourcengruppe dieser VM angezeigt.

So beheben Sie Konnektivitätsprobleme mit dem Azure Storage-Konto:

  • Überprüfen Sie, ob Netzwerksicherheitsgruppen (NSGs) hinzugefügt wurden. Wenn eine Abonnementrichtlinie hinzugefügt wurde, durch die NSGs in allen virtuellen Netzwerken automatisch konfiguriert werden, wirkt sich dies auf das virtuelle Netzwerk aus, das zum Erstellen von Lab-VMs verwendet wird.

  • Überprüfen Sie die NSG-Regeln. Verwenden Sie die IP-Datenflussüberprüfung, um zu bestimmen, ob eine NSG-Regel den Datenverkehr zu oder von einer VM blockiert. Sie können auch die aktiven Sicherheitsgruppenregeln überprüfen, um sicherzustellen, dass die NSG-Regel Zulassen für eingehende Verbindungen vorhanden ist. Weitere Informationen finden Sie unter Problembehandlung bei Netzwerksicherheitsgruppen über das Azure-Portal.

  • Überprüfen Sie das Standardspeicherkonto des Labs. Das Standardspeicherkonto ist das erste Speicherkonto, das beim Erstellen des Labs erstellt wurde. Der Name beginnt in der Regel mit dem Buchstaben "a" und endet mit einer mehrstelligen Zahl, z. B. <alabname>#.

    1. Navigieren Sie zur Ressourcengruppe des Labs.
    2. Suchen Sie die Ressource vom Typ Speicherkonto, deren Name mit der Konvention übereinstimmt.
    3. Wählen Sie auf Speicherkontoseite Übersicht im linken Navigationsbereich die Option Netzwerk aus.
    4. Stellen Sie auf der Registerkarte Firewalls und virtuelle Netzwerke sicher, dass der Zugriff über öffentliche Netzwerke auf Aus allen Netzwerken aktiviert festgelegt ist. Falls die Option Aktiviert von ausgewählten virtuellen Netzwerken und IP-Adressen ausgewählt ist, stellen Sie sicher, dass die virtuellen Netzwerke des Labs, die zum Erstellen von VMs verwendet werden, der Liste hinzugefügt werden.

Ausführlichere Informationen zur Problembehandlung finden Sie unter Konfigurieren von Azure Storage-Firewalls und virtuellen Netzwerken.

Problembehandlung bei Artefaktfehlern von der VM aus

Sie können eine Verbindung mit der Lab-VM herstellen, auf der das Artefakt fehlgeschlagen ist, und das Problem dort untersuchen.

Überprüfen der Protokolldatei für die benutzerdefinierte Skripterweiterung

  1. Navigieren Sie auf der Lab-VM zu C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.12\Status, wobei 1.10.12 die CSE-Versionsnummer ist.

    Screenshot: Ordner „Status“ auf der Lab-VM.

  2. Öffnen Sie die STATUS-Date, und überprüfen Sie sie, um den Fehler anzuzeigen.

Anweisungen zum Suchen der Protokolldateien auf einer Linux-VM finden Sie unter Verwenden von Version 2 der Azure-Erweiterung für benutzerdefinierte Skripts mit Linux-VMs.

Überprüfen des VM-Agents

Stellen Sie sicher, dass der Azure-VM-Agent auf der VM installiert ist.

Beim ersten Start der VM oder wenn die CSE zuerst installiert wird, um die Anforderung zum Anwenden von Artefakten zu erfüllen, muss die VM möglicherweise entweder ein Upgrade des VM-Agents durchführen oder darauf warten, dass der VM-Agent initialisiert wird. Der VM-Agent kann von Diensten abhängen, deren Initialisierung lange dauern kann. Weitere Informationen zur Problembehandlung finden Sie unter Übersicht über den Agent für virtuelle Azure-Computer.

So überprüfen Sie, ob das Artefakt aufgrund des VM-Agents scheinbar nicht mehr reagiert:

  1. Navigieren Sie auf der Lab-VM zu C:\WindowsAzure\logs.

  2. Öffnen Sie die Datei WaAppAgent.log.

  3. Suchen Sie nach Einträgen, die zeigen, dass der VM-Agent ungefähr zu dem Zeitpunkt, zu dem das Artefaktproblem auftritt, gestartet wird, die Initialisierung beendet und den ersten Heartbeat sendet.

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

Im vorherigen Beispiel hat der VM-Agent 10 Minuten und 20 Sekunden zum Starten benötigt. Die Ursache war also, dass der Start des OOBE-Diensts eine lange Zeit in Anspruch genommen hat.

Allgemeine Informationen zu Azure-Erweiterungen finden Sie unter Erweiterungen und Features für virtuelle Azure-Computer.

Untersuchen von Skriptproblemen

Die Artefaktinstallation kann aufgrund mangelhaft erstellter Artefaktinstallationsskripts fehlschlagen. Zum Beispiel:

  • Ein Skript hat obligatorische Parameter, aber es wird kein Wert übergeben, entweder weil Sie dem Benutzer erlauben, ihn leer zu lassen, oder weil in der Definitionsdatei artifactfile.json kein Standardwert für die Eigenschaft vorhanden ist. Das Skript reagiert nicht mehr, weil es auf eine Benutzereingabe wartet.

  • Das Skript erfordert Benutzereingaben als Teil der Ausführung. Skripts sollten so geschrieben werden, dass sie ohne Benutzereingriff unbeaufsichtigt funktionieren.

So ermitteln Sie, ob das Skript dazu führt, dass das Artefakt nicht mehr reagiert:

  1. Kopieren Sie das Skript auf die VM, oder suchen Sie es auf der VM im Downloadspeicherort des Artefaktskripts C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.12\Downloads.
  2. Führen Sie an einer administrativen Eingabeaufforderung das Skript auf der VM aus und geben Sie dabei die gleichen Parameterwerte an, die das Problem verursacht haben.
  3. Ermitteln Sie, ob das Skript unerwünschtes Verhalten aufweist. Falls ja, fordern Sie eine Verbesserung an oder korrigieren Sie das Skript.

Tipp

Sie können Korrekturvorschläge für im öffentlichen Repository des DevTest Labs gehostete Skripts für Artefakte übermitteln. Weitere Informationen finden Sie im Abschnitt Beiträge im README-Dokument.

Hinweis

Ein benutzerdefiniertes Artefakt muss über die richtige Struktur verfügen. Informationen dazu, wie ein Artefakt ordnungsgemäß erstellt wird, finden Sie unter Erstellen benutzerdefinierter Artefakte. Ein Beispiel eines ordnungsgemäß strukturierten Artefakts ist das Artefakt zum Testen von Parametertypen.

Weitere Informationen zum Schreiben und Korrigieren von Artefaktskripts finden Sie unter AUTHORING.

Nächste Schritte

Wenn Sie weitere Hilfe benötigen, probieren Sie eine der folgenden Supportangebote:

  • Sie können sich über das MSDN Azure-Forum oder über das Stack Overflow-Forum mit den DevTest Labs-Experten in Verbindung setzen.
  • Erhalten Sie Antworten von Azure-Experten über Azure-Foren.
  • Kontaktieren Sie @AzureSupport, das offizielle Microsoft Azure-Konto für die Optimierung der Customer Experience. Der Azure-Support verbindet die Azure-Community mit Antworten, Support und Experten.
  • Wechseln Sie zur Azure-Supportwebsite, und wählen Sie Supportticket übermitteln aus, um einen Azure-Supportfall zu melden.