Erweiterungen und Features für virtuelle Computer für Windows

Erweiterungen für virtuelle Azure-Computer sind kleine Anwendungen, die Konfigurations- und Automatisierungsaufgaben auf virtuellen Azure-Computern nach der Bereitstellung ermöglichen. Wenn z. B. Software auf einer VM installiert werden muss, Virenschutz oder die Ausführung eines Skripts innerhalb der VM erforderlich ist, kann eine VM-Erweiterung verwendet werden.

Sie können Azure VM-Erweiterungen mithilfe der Azure CLI, PowerShell, Azure Resource Manager-Vorlagen (ARM-Vorlagen) und des Azure-Portals ausführen. Erweiterungen können mit einer neu bereitgestellten VM gebündelt oder für ein bestehendes System ausgeführt werden.

Dieser Artikel enthält eine Übersicht der VM-Erweiterungen in Azure sowie Voraussetzungen für deren Verwendung. Darüber hinaus dient er als Leitfaden, um Erweiterungen zu erkennen, zu verwalten und zu entfernen. Dieser Artikel enthält generalisierte Informationen, da viele VM-Erweiterungen verfügbar sind. Jede Erweiterung kann ihre eigene Konfiguration und Dokumentation haben.

Anwendungsfälle und Beispiele

Jede Azure-VM-Erweiterung hat einen bestimmten Zweck. Hier einige Beispiele:

Über prozessspezifische Erweiterungen hinaus ist sowohl für virtuelle Windows- als auch für virtuelle Linux-Computer eine benutzerdefinierte Skripterweiterung verfügbar. Die benutzerdefinierte Skripterweiterung für Windows ermöglicht die Ausführung beliebiger PowerShell-Skripts auf VMs. Benutzerdefinierte Skripts sind beim Entwerfen von Azure-Bereitstellungen nützlich, die Konfiguration über das Maß hinaus erfordern, das mithilfe von Azure-Tools erreicht werden kann.

Voraussetzungen

Überprüfen Sie die folgenden Voraussetzungen für die Arbeit mit Azure VM-Erweiterungen.

Azure-VM-Agent

Um mit Erweiterungen auf VMs arbeiten zu können, muss der Azure Virtual Machine Agent für Windows installiert sein. Dieser Agent wird auch als Azure VM-Agent oder Windows Guest Agent bezeichnet. Beachten Sie bei der Vorbereitung der Installation von Erweiterungen, dass einige von ihnen spezielle Voraussetzungen haben, z. B. den Zugriff auf Ressourcen oder Abhängigkeiten.

Der Azure-VM-Agent verwaltet Interaktionen zwischen einem virtuellen Azure-Computer und dem Azure Fabric Controller. Der Agent ist für viele funktionale Aspekte in Bezug auf die Bereitstellung und Verwaltung von Azure-VMs verantwortlich. Dies umfasst auch das Ausführen von VM-Erweiterungen.

Der Azure-VM-Agent ist auf Azure Marketplace-Images vorinstalliert. Der Agent kann auch manuell unter unterstützten Betriebssystemen installiert werden.

Der Agent läuft auf mehreren Betriebssystemen. Das Erweiterungsframework verfügt jedoch über eine Begrenzung der Betriebssysteme, die von Erweiterungen verwendet werden. Manche Erweiterung werden nicht auf allen Betriebssystemen unterstützt. In diesem Fall wird der Fehlercode 51, „Nicht unterstütztes Betriebssystem“, zurückgegeben. Überprüfen Sie die Dokumentation zu Erweiterungen auf Informationen zu Unterstützungsmöglichkeiten.

Netzwerkzugriff

Erweiterungspakete werden aus dem Azure Storage-Erweiterungsrepository heruntergeladen. Erweiterungsstatus-Uploads werden in Azure Storage gepostet.

Wenn Sie eine unterstützte Version des Azure-VM-Agents verwenden, müssen Sie nicht den Zugriff auf Azure Storage in der VM-Region zulassen. Sie können den VM-Agent verwenden, um die Kommunikation an den Azure Fabric Controller für die Agent-Kommunikation umzuleiten (mithilfe des HostGAPlugin-Features über den privilegierten Kanal über die private IP-Adresse 168.63.129.16). Wenn Sie eine nicht unterstützte Version des VM-Agents verwenden, müssen Sie in dieser Region den von der VM ausgehenden Zugriff auf Azure Storage zulassen.

Wichtig

Wenn Sie den Zugriff auf die IP-Adresse 168.63.129.16 mithilfe der Gastfirewall oder über einen Proxy blockieren, schlagen Erweiterungen fehl. Ein Fehler tritt auch dann auf, wenn Sie eine unterstützte Version des VM-Agents verwenden oder den ausgehenden Zugriff konfigurieren. Die Ports 80 und 32526 sind erforderlich.

Agents können nur zum Herunterladen von Erweiterungspaketen und für Statusberichte verwendet werden. Wenn z. B. bei der Installation einer Erweiterung ein Skript aus GitHub heruntergeladen werden muss (benutzerdefinierte Skripterweiterung) oder Zugriff auf Azure Storage (Azure Backup) notwendig ist, müssen Sie zusätzliche Firewall- oder Netzwerksicherheitsgruppen-Ports (NSG) öffnen. Verschiedene Erweiterungen haben verschiedene Voraussetzungen, da es sich bei ihnen um eigenständige Anwendungen handelt. Für Erweiterungen, die Zugriff auf Azure Storage oder Microsoft Entra ID benötigen, können Sie den Zugriff über Azure-NSG-Diensttags gewähren.

Der Azure-VM-Agent bietet keine Proxyserverunterstützung, um die Umleitung von Datenverkehrsanforderungen des Agents zu ermöglichen. Der VM-Agent greift auf Ihren benutzerdefinierten Proxy (sofern vorhanden) zurück, um über die IP-Adresse 168.63.129.16 auf Ressourcen im Internet oder auf dem Host zuzugreifen.

Ermitteln von VM-Erweiterungen

Für die Verwendung mit Azure-VMs stehen viele VM-Erweiterungen zur Verfügung. Verwenden Sie das PowerShell-Cmdlet „Get-AzVMExtensionImage“, um eine vollständige Liste anzuzeigen.

Der folgende Befehl listet alle verfügbaren VM-Erweiterungen in der Region „USA, Westen“ auf:

Get-AzVmImagePublisher -Location "West US" |
Get-AzVMExtensionImageType |
Get-AzVMExtensionImage | Select Type, Version

Dieser Befehl bietet eine Ausgabe, die dem folgenden Beispiel ähnelt:

Type                Version
----                -------
AcronisBackup       1.0.33
AcronisBackup       1.0.51
AcronisBackupLinux  1.0.33
AlertLogicLM        1.3.0.1
AlertLogicLM        1.3.0.0
AlertLogicLM        1.4.0.1

Ausführen von VM-Erweiterungen

Azure-VM-Erweiterungen können auf vorhandenen VMs ausgeführt werden, was nützlich ist, um Konfigurationsänderungen vorzunehmen oder die Konnektivität für eine bereits bereitgestellte VM wiederherzustellen. VM-Erweiterungen können auch mit ARM-Vorlagenbereitstellungen gebündelt werden. Indem Sie Erweiterungen mit ARM-Vorlagen verwenden, können Sie Azure-VMs bereitstellen, ohne hinterher eingreifen zu müssen.

Sie können die folgenden Methoden verwenden, um eine Erweiterung für eine vorhandene VM auszuführen.

Hinweis

In einigen der folgenden Beispiele werden "<placeholder>"-Parameterwerte in den Befehlen verwendet. Bevor Sie die einzelnen Befehl ausführe, müssen Sie alle "<placeholder>"-Werte durch die entsprechenden Werte Ihrer Konfiguration ersetzen.

PowerShell

Mehrere PowerShell-Befehle können zum Ausführen einzelner Erweiterungen verwendet werden. Verwenden Sie zum Anzeigen einer Liste den Befehl Get-Command, und filtern Sie nach Erweiterung:

Get-Command Set-Az*Extension* -Module Az.Compute

Dieser Befehl bietet eine Ausgabe, die dem folgenden Beispiel ähnelt:

CommandType     Name                                          Version    Source
-----------     ----                                          -------    ------
Cmdlet          Set-AzVMAccessExtension                       4.5.0      Az.Compute
Cmdlet          Set-AzVMADDomainExtension                     4.5.0      Az.Compute
Cmdlet          Set-AzVMAEMExtension                          4.5.0      Az.Compute
Cmdlet          Set-AzVMBackupExtension                       4.5.0      Az.Compute
Cmdlet          Set-AzVMBginfoExtension                       4.5.0      Az.Compute
Cmdlet          Set-AzVMChefExtension                         4.5.0      Az.Compute
Cmdlet          Set-AzVMCustomScriptExtension                 4.5.0      Az.Compute
Cmdlet          Set-AzVMDiagnosticsExtension                  4.5.0      Az.Compute
Cmdlet          Set-AzVMDiskEncryptionExtension               4.5.0      Az.Compute
Cmdlet          Set-AzVMDscExtension                          4.5.0      Az.Compute
Cmdlet          Set-AzVMExtension                             4.5.0      Az.Compute
Cmdlet          Set-AzVMSqlServerExtension                    4.5.0      Az.Compute
Cmdlet          Set-AzVmssDiskEncryptionExtension             4.5.0      Az.Compute

Im folgenden Beispiel wird mit der benutzerdefinierten Skripterweiterung ein Skript von einem GitHub-Repository auf den virtuellen Zielcomputer heruntergeladen und dann das Skript ausgeführt.

Set-AzVMCustomScriptExtension -ResourceGroupName "<myResourceGroup>" `
    -VMName "<myVM>" -Name "<myCustomScript>" `
    -FileUri "https://raw.githubusercontent.com/neilpeterson/nepeters-azure-templates/master/windows-custom-script-simple/support-scripts/Create-File.ps1" `
    -Run "Create-File.ps1" -Location "<myVMregion>"

Im folgenden Beispiel wird die VM-Zugriffserweiterung verwendet, um das Administratorkennwort eines virtuellen Windows-Computers auf ein vorübergehendes Kennwort zurückzusetzen. Nachdem Sie diesen Code ausgeführt haben, sollten Sie das Kennwort bei der ersten Anmeldung zurücksetzen.

$cred=Get-Credential

Set-AzVMAccessExtension -ResourceGroupName "myResourceGroup" -VMName "myVM" -Name "myVMAccess" `
    -Location "myVMregion" -UserName $cred.GetNetworkCredential().Username `
    -Password $cred.GetNetworkCredential().Password -typeHandlerVersion "2.0"

Sie können den Befehl Set-AzVMExtension verwenden, um eine beliebige VM-Erweiterung zu starten.

Azure-Portal

Sie können VM-Erweiterungen mithilfe des Azure-Portals auf eine vorhandene VM anwenden werden. Wählen Sie im Azure-Portal Erweiterungen und Anwendungen aus, und klicken Sie dann auf + Hinzufügen. Wählen Sie aus der Liste verfügbarer Erweiterungen die gewünschte Erweiterung aus und befolgen Sie die Anweisungen im Assistenten.

Im folgenden Beispiel wird die Installation der Microsoft Antimalware-Erweiterung aus dem Azure-Portal gezeigt:

Screenshot: Dialogfeld zum Installieren der Microsoft Antimalware-Erweiterung.

Azure Resource Manager-Vorlagen

Sie können einer ARM-Vorlage VM-Erweiterungen hinzufügen und sie beim Bereitstellen der Vorlage ausführen. Wenn Sie eine Erweiterung mithilfe einer Vorlage bereitstellen, können Sie vollständig konfigurierte Azure-Bereitstellungen erstellen.

Der folgende JSON-Code ist ein Beispiel aus einer vollständigen ARM-Vorlage, die einen Satz von VMs mit Lastenausgleich und einer Azure SQL-Datenbank bereitstellt und dann auf jeder VM eine .NET Core-Anwendung installiert. Die VM-Erweiterung erledigt die Softwareinstallation.

{
    "apiVersion": "2015-06-15",
    "type": "extensions",
    "name": "config-app",
    "location": "[resourceGroup().location]",
    "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'),copyindex())]",
    "[variables('musicstoresqlName')]"
    ],
    "tags": {
    "displayName": "config-app"
    },
    "properties": {
    "publisher": "Microsoft.Compute",
    "type": "CustomScriptExtension",
    "typeHandlerVersion": "1.9",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-windows/scripts/configure-music-app.ps1"
        ]
    },
    "protectedSettings": {
        "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File configure-music-app.ps1 -user ',parameters('adminUsername'),' -password ',parameters('adminPassword'),' -sqlserver ',variables('musicstoresqlName'),'.database.windows.net')]"
    }
    }
}

Informationen zur Bereitstellung mithilfe von ARM-Vorlagen finden Sie unter VMs in einer ARM-Vorlage.

Schützen der Daten von VM-Erweiterungen

Beim Ausführen einer VM-Erweiterung müssen möglicherweise vertrauliche Informationen wie Anmeldeinformationen, Namen von Speicherkonten und Zugriffsschlüssel angegeben werden. Viele VM-Erweiterungen beinhalten eine geschützte Konfiguration, die Daten verschlüsselt und sie ausschließlich innerhalb des virtuellen Zielcomputers entschlüsselt. Jede Erweiterung weist ein spezifisches Schema für die geschützte Konfiguration auf, und jedes Schema wird in der erweiterungsspezifischen Dokumentation ausführlich erläutert.

Das folgende JSON-Beispiel zeigt eine Instanz der benutzerdefinierten Skripterweiterung für Windows. Der auszuführende Befehl enthält Anmeldeinformationen. In diesem Beispiel wird der auszuführende Befehl nicht verschlüsselt.

{
    "apiVersion": "2015-06-15",
    "type": "extensions",
    "name": "config-app",
    "location": "[resourceGroup().location]",
    "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'),copyindex())]",
    "[variables('musicstoresqlName')]"
    ],
    "tags": {
    "displayName": "config-app"
    },
    "properties": {
    "publisher": "Microsoft.Compute",
    "type": "CustomScriptExtension",
    "typeHandlerVersion": "1.9",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-windows/scripts/configure-music-app.ps1"
        ],
        "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File configure-music-app.ps1 -user ',parameters('adminUsername'),' -password ',parameters('adminPassword'),' -sqlserver ',variables('musicstoresqlName'),'.database.windows.net')]"
    }
    }
}

Durch Verschieben der Eigenschaft commandToExecute in die protected-Konfiguration wird die Ausführungszeichenfolge, wie im folgenden Beispiel gezeigt, geschützt:

{
    "apiVersion": "2015-06-15",
    "type": "extensions",
    "name": "config-app",
    "location": "[resourceGroup().location]",
    "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'),copyindex())]",
    "[variables('musicstoresqlName')]"
    ],
    "tags": {
    "displayName": "config-app"
    },
    "properties": {
    "publisher": "Microsoft.Compute",
    "type": "CustomScriptExtension",
    "typeHandlerVersion": "1.9",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-windows/scripts/configure-music-app.ps1"
        ]
    },
    "protectedSettings": {
        "commandToExecute": "[concat('powershell -ExecutionPolicy Unrestricted -File configure-music-app.ps1 -user ',parameters('adminUsername'),' -password ',parameters('adminPassword'),' -sqlserver ',variables('musicstoresqlName'),'.database.windows.net')]"
    }
    }
}

Auf einer Azure-IaaS-VM (Infrastructure-as-a-Service), die Erweiterungen verwendet, werden möglicherweise Zertifikate des Antragstellers Windows Azure CRP Certificate Generator angezeigt. Auf einer klassischen RDFE-VM (RedDog Front End) tragen diese Zertifikate den Antragstellernamen Windows Azure Service Management for Extensions.

Diese Zertifikate sichern die Kommunikation zwischen dem virtuellen Computer und seinem Host während der Übertragung geschützter Einstellungen (Kennwort und andere Anmeldeinformationen), die von Erweiterungen verwendet werden. Der Azure Fabric Controller erstellt die Zertifikate und übergibt sie an den Azure VM-Agent. Wenn Sie die VM jeden Tag beenden und starten, erstellt der Fabric Controller möglicherweise ein neues Zertifikat. Das Zertifikat wird im persönlichen Zertifikatspeicher des Computers gespeichert. Diese Zertifikate können gelöscht werden. Der Azure-VM-Agent erstellt Zertifikate bei Bedarf neu.

Aktualisieren von Agents und Erweiterungen

Agents und Erweiterungen besitzen den gleichen Updatemechanismus.

Wenn ein Update verfügbar ist und automatische Updates aktiviert sind, wird das Update erst auf der VM installiert, nachdem eine Erweiterung oder ein anderes VM-Modell geändert wurde. Diese Änderungen können Folgendes umfassen:

  • Datenträger
  • Erweiterungen
  • Erweiterungstags
  • Container der Startdiagnose
  • Geheimnisse des Gastbetriebssystems
  • Größe des virtuellen Computers
  • Netzwerkprofil

Herausgeber stellen Updates für Regionen zu verschiedenen Zeitpunkten zur Verfügung. Es ist daher möglich, dass Sie über VMs in verschiedenen Regionen mit unterschiedlichen Versionen verfügen.

Hinweis

Einige Updates erfordern eventuell zusätzliche Firewallregeln. Weitere Informationen finden Sie unter Netzwerkzugriff.

Auflisten von Erweiterungen, die einer VM bereitgestellt wurden

Sie können den folgenden Befehl verwenden, um die einer VM bereitgestellten Erweiterungen aufzulisten:

$vm = Get-AzVM -ResourceGroupName "<myResourceGroup>" -VMName "<myVM>"
$vm.Extensions | select Publisher, VirtualMachineExtensionType, TypeHandlerVersion

Dieser Befehl erzeugt eine Ausgabe ähnlich wie im folgenden Beispiel:

Publisher             VirtualMachineExtensionType          TypeHandlerVersion
---------             ---------------------------          ------------------
Microsoft.Compute     CustomScriptExtension                1.9

Updates für Agents

Der Azure-VM-Agent enthält nur Code zur Behandlung von Erweiterungen. Der Windows-Bereitstellungscode ist separat. Sie können den Azure-VM-Agent deinstallieren. Sie können das automatische Update des Azure-VM-Agents nicht deaktivieren.

Der Code für die Behandlung von Erweiterungen ist für folgende Aufgaben verantwortlich:

  • Kommunikation mit dem Azure-Fabric.
  • Behandeln der Vorgänge von VM-Erweiterungen, z. B. Installationen, Statusberichte, Aktualisieren der einzelnen Erweiterungen und Entfernen von Erweiterungen. Updates enthalten Sicherheitsfixes, Fehlerbehebungen und Verbesserungen für den Code für die Behandlung von Erweiterungen.

Informationen zur ausgeführten Version finden Sie unter Erkennen des Azure VM-Agents.

Updates für Erweiterungen

Wenn ein Erweiterungsupdate verfügbar ist, automatische Updates aktiviert sind, und sich ein VM-Modell geändert hat, lädt der Azure VM-Agent die Erweiterung herunter und führt ein Upgrade durch.

Automatische Updates für Erweiterungen sind entweder kleinere Updates oder Hotifxupdates. Sie können beim Bereitstellen der Erweiterung entscheiden, ob Sie kleinere Updates für Erweiterungen beziehen wollen oder nicht. Das folgende Beispiel zeigt, wie Nebenversionen in einer ARM-Vorlage mithilfe des Parameters „"autoUpgradeMinorVersion": true,“ automatisch aktualisiert werden:

    "properties": {
    "publisher": "Microsoft.Compute",
    "type": "CustomScriptExtension",
    "typeHandlerVersion": "1.9",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-windows/scripts/configure-music-app.ps1"
        ]
    },

Sie sollten für Ihre Bereitstellungen von Erweiterungen immer automatische Updates auswählen, um die neuesten kleineren Updates mit Bugfixes zu erhalten. Das Beziehen von Hotfixupdates mit Fixes für Sicherheitslücken oder große Bugs kann nicht gekündigt werden.

Wenn Sie automatische Updates deaktivieren oder eine Hauptversion upgraden müssen, verwenden Sie den Befehl Set-AzVMExtension, und geben Sie die Zielversion an.

So identifizieren Sie Updates für Erweiterungen

Es gibt mehrere Möglichkeiten, wie Sie Updates für eine Erweiterung identifizieren können.

Erkennen, ob die Erweiterung auf „autoUpgradeMinorVersion“ auf einer VM festgelegt ist

Sie können das VM-Modell anzeigen, um zu ermitteln, ob die Erweiterung mit dem Parameter „autoUpgradeMinorVersion“ bereitgestellt wird. Um das VM-Modell zu überprüfen, verwenden Sie den Befehl Get-AzVm, und geben Sie die Ressourcengruppe und den VM-Namen wie folgt an:

 $vm = Get-AzVm -ResourceGroupName "myResourceGroup" -VMName "myVM"
 $vm.Extensions

Die folgende Beispielausgabe zeigt, dass der Parameter „autoUpgradeMinorVersion“ auf „true“ festgelegt ist:

ForceUpdateTag              :
Publisher                   : Microsoft.Compute
VirtualMachineExtensionType : CustomScriptExtension
TypeHandlerVersion          : 1.9
AutoUpgradeMinorVersion     : True

Ermitteln, wann ein autoUpgradeMinorVersion-Ereignis auftritt

Um zu erkennen, wann die Erweiterung aktualisiert wurde, können Sie die Protokolldatei des Agents auf der VM unter C:\WindowsAzure\Logs\WaAppAgent.log überprüfen.

Das folgende Beispiel zeigt die VM mit Microsoft.Compute.CustomScriptExtension mit installierter Version 1.8 sowie einem Hotfix, der für Version 1.9verfügbar ist.

[INFO]  Getting plugin locations for plugin 'Microsoft.Compute.CustomScriptExtension'. Current Version: '1.8', Requested Version: '1.9'
[INFO]  Auto-Upgrade mode. Highest public version for plugin 'Microsoft.Compute.CustomScriptExtension' with requested version: '1.9', is: '1.9'

Berechtigungen für Agents

Um seine Aufgaben auszuführen, muss der Azure VM-Agent als lokales System ausgeführt werden.

Problembehandlung bei VM-Erweiterungen

Für jede VM-Erweiterung gibt es möglicherweise spezifische Schritte zur Problembehandlung. Wenn Sie beispielsweise die benutzerdefinierte Skripterweiterung verwenden, finden Sie Details zur Skriptausführung lokal auf der VM, auf der die Erweiterung ausgeführt wird.

Die folgenden Aktionen zur Problembehandlung gelten für alle VM-Erweiterungen:

  • Um die Protokolldatei des Azure-VM-Agents zu überprüfen, sollten Sie die Aktivität bei der Bereitstellung der Erweiterung in C:\WindowsAzure\Logs\WaAppAgent.log näher betrachten.

  • Überprüfen Sie die Erweiterungsprotokolle unter C:\WindowsAzure\Logs\Plugins<extensionName> für weitere Einzelheiten.

  • Informationen zu Fehlercodes, bekannten Problemen und anderen erweiterungsspezifischen Informationen finden Sie in den Abschnitten zur Problembehandlung in der erweiterungsspezifischen Dokumentation.

  • Sehen Sie sich die Systemprotokolle an. Überprüfen Sie, ob es andere Vorgänge gab, die möglicherweise die Erweiterung beeinträchtigt haben, z. B. eine lange Installation einer anderen Anwendung, für die exklusiver Zugriff auf den Paket-Manager notwendig war.

  • Wenn auf einem virtuellen Computer eine Erweiterung mit dem Bereitstellungsstatus „Fehler“ vorhanden ist, kann keine andere neue Erweiterung installiert werden.

Häufige Ursachen für Fehler bei der Erweiterung

Hier einige häufige Gründe, warum eine Erweiterung fehlschlagen kann:

  • Erweiterungen haben 20 Minuten für die Ausführung. (Ausnahmen sind Custom Script, Chef und DSC mit 90 Minuten.) Wenn Ihre Bereitstellung diesen Zeitraum überschreitet, wird sie als Timeout gekennzeichnet. Die Ursache für dieses Problem können VMs mit geringen Ressourcen oder starker Ressourcenverbrauch durch andere VM-Konfigurationen oder Starttasks sein, während die Erweiterung versucht, die Bereitstellung durchzuführen.

  • Die Mindestvoraussetzungen werden nicht erfüllt. Einige Erweiterungen verfügen über VM-SKUs, z.B. HPC-Images. Erweiterungen können bestimmte Voraussetzungen für den Netzwerkzugriff erfordern, z. B. die Kommunikation mit Azure Storage oder öffentlichen Diensten. Andere Beispiele sind u.a. der Zugriff auf Paket-Repositorys, nahezu vollständig belegter Festplattenspeicher oder Sicherheitseinschränkungen.

  • Der Zugriff auf den Paket-Manager ist exklusiv. In einigen Fällen können eine lange ausgeführte VM-Konfiguration und die Installation der Erweiterung in Konflikt stehen, da beide exklusiven Zugriff auf den Paket-Manager benötigen.

Anzeigen des Erweiterungsstatus

Wenn eine VM-Erweiterung für einen virtuellen Computer ausgeführt wird, können Sie mit dem Befehl Get-AzVM zum Erweiterungsstatus zurückkehren. Das Ergebnis „Substatuses[0]“ zeigt an, dass die Bereitstellung der Erweiterung erfolgreich war, was bedeutet, dass sie erfolgreich auf dem virtuellen Computer bereitgestellt wurde. Wenn das Ergebnis „Substatuses[1]“ angezeigt wird, ist bei der Ausführung der Erweiterung innerhalb der VM ein Fehler aufgetreten.

Get-AzVM -ResourceGroupName "myResourceGroup" -VMName "myVM" -Status

Die Ausgabe sieht in etwa wie das folgende Beispiel aus:

Extensions[0]           :
  Name                  : CustomScriptExtension
  Type                  : Microsoft.Compute.CustomScriptExtension
  TypeHandlerVersion    : 1.9
  Substatuses[0]        :
    Code                : ComponentStatus/StdOut/succeeded
    Level               : Info
    DisplayStatus       : Provisioning succeeded
    Message             : Windows PowerShell \nCopyright (C) Microsoft Corporation. All rights reserved.\n
  Substatuses[1]        :
    Code                : ComponentStatus/StdErr/succeeded
    Level               : Info
    DisplayStatus       : Provisioning succeeded
    Message             : The argument 'cseTest%20Scriptparam1.ps1' to the -File parameter does not exist. Provide the path to an existing '.ps1' file as an argument to the

-File parameter.
  Statuses[0]           :
    Code                : ProvisioningState/failed/-196608
    Level               : Error
    DisplayStatus       : Provisioning failed
    Message             : Finished executing command

Der Ausführungsstatus von Erweiterungen finden Sie ebenfalls im Azure-Portal. Wählen Sie die VM, dann Erweiterungen und anschließend die gewünschte Erweiterung aus.

Erneutes Ausführen einer VM-Erweiterung

In manchen Fällen müssen Sie möglicherweise eine VM-Erweiterung erneut ausführen. Sie können eine Erweiterung erneut ausführen, indem Sie sie entfernen und dann mit einer Ausführungsmethode Ihrer Wahl noch einmal ausführen. Verwenden Sie zum Entfernen einer Erweiterung den Befehl Remove-AzVMExtension folgendermaßen:

Remove-AzVMExtension -ResourceGroupName "myResourceGroup" -VMName "myVM" -Name "myExtensionName"

Sie können eine Erweiterung auch im Azure-Portal entfernen. Wählen Sie eine VM, dann Erweiterungen und anschließend die gewünschte Erweiterung aus. Wählen Sie Deinstallieren aus.

Allgemeine VM-Erweiterungsreferenz

Die folgende Tabelle enthält einige allgemeine Verweise für VM-Erweiterungen.

Name der Erweiterung BESCHREIBUNG
Benutzerdefinierte Skripterweiterung für Windows Ausführen von Skripts für Azure-VMs.
DSC-Erweiterung für Windows Wenden Sie PowerShell-Konfigurationen für den gewünschten Zustand auf einen virtuellen Computer an.
Azure-Diagnoseerweiterung Verwalten der Azure-Diagnose.
VMAccess-Erweiterung Verwalten von Benutzern und Anmeldeinformationen

Nächste Schritte

Weitere Informationen zu VM-Erweiterungen finden Sie unter Erweiterungen und Features für Azure-VMs.