Informationen zu Erweiterungen und Features für virtuelle Computer für Linux

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 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 dem Azure-Portal 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, erläutert Voraussetzungen für deren Verwendung und bietet Hilfestellung, um sie zu erkennen, zu verwalten und zu entfernen. Dieser Artikel enthält generalisierte Informationen, da viele VM-Erweiterungen verfügbar sind. Jede davon kann ihre eigene Konfiguration und Dokumentation haben.

Anwendungsfälle und Beispiele

Jede Azure-VM-Erweiterung hat einen bestimmten Zweck. 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 Linux ermöglicht die Ausführung beliebiger Bash-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

Azure Linux-Agent

Der Azure Linux-Agent muss installiert sein, damit die Erweiterung auf der VM ausgeführt werden kann. Einige individuelle Erweiterungen haben Voraussetzungen, z.B. den Zugriff auf Ressourcen oder Abhängigkeiten.

Der Azure Linux-Agent verwaltet Interaktionen zwischen einer Azure-VM 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 Linux-Agent ist auf Azure Marketplace-Images vorinstalliert. Sie 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 Linux-Agents verwenden, müssen Sie nicht den Zugriff auf Azure Storage in der VM-Region zulassen. Sie können den Agent verwenden, um dessen Kommunikation auf den Azure Fabric Controller umzuleiten. Wenn Sie eine nicht unterstützte Version des 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 private IP-Adresse 168.63.129.16 mithilfe der Gastfirewall blockiert haben, schlagen Erweiterungen fehl, auch wenn Sie eine unterstützte Version des Agents verwenden oder den ausgehenden Zugriff konfiguriert haben.

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 zusätzliche Firewall- oder Netzwerksicherheitsgruppen-Ports (NSG) geöffnet werden. Verschiedene Erweiterungen haben verschiedene Voraussetzungen, da es sich bei ihnen um eigenständige Anwendungen handelt. Für Erweiterungen, die Zugriff auf Azure Storage benötigen, können Sie den Zugriff über Azure-NSG-Diensttags gewähren.

Für Anfragen zum Umleiten von Datenverkehr verfügt der Azure Linux-Agent über Proxyserverunterstützung. Diese Proxyserverunterstützung gilt jedoch nicht für Erweiterungen. Sie müssen jede einzelne Erweiterung für die Arbeit mit einem Proxy konfigurieren.

Ermitteln von VM-Erweiterungen

Für die Verwendung mit Azure-VMs stehen viele VM-Erweiterungen zur Verfügung. Um eine vollständige Liste anzuzeigen, verwenden Sie az vm extension image list. Im folgenden Beispiel werden alle verfügbaren Erweiterungen am Standort westus (USA, Westen) aufgelistet:

az vm extension image list --location westus --output table

Ausführen von VM-Erweiterungen

Azure-VM-Erweiterungen können auf vorhandenen VMs ausgeführt werden. Dies ist nützlich, wenn Sie Konfigurationsänderungen vornehmen oder die Konnektivität auf einer bereits bereitgestellten VM wiederherstellen müssen. 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.

Azure CLI

Sie können Azure VM-Erweiterungen mit dem Befehl az vm extension set für eine vorhandene VM ausführen. Im folgenden Beispiel wird die Erweiterung für benutzerdefinierte Skripts für einen virtuellen Computer mit dem Namen myVM in der Ressourcengruppe myResourceGroup ausgeführt. Ersetzen Sie den Ressourcengruppennamen, den VM-Namen und das auszuführende Skript (https://raw.githubusercontent.com/me/project/hello.sh) im Beispiel durch Ihre eigenen Informationen.

az vm extension set \
  --resource-group myResourceGroup \
  --vm-name myVM \
  --name customScript \
  --publisher Microsoft.Azure.Extensions \
  --settings '{"fileUris": ["https://raw.githubusercontent.com/me/project/hello.sh"],"commandToExecute": "./hello.sh"}'

Wenn die Erweiterung ordnungsgemäß ausgeführt wird, ähnelt die Ausgabe dem folgenden Beispiel:

info:    Executing command vm extension set
+ Looking up the VM "myVM"
+ Installing extension "CustomScript", VM: "mvVM"
info:    vm extension set command OK

Azure PowerShell

Mit dem Befehl Set-AzVMExtension können Sie Azure VM-Erweiterungen für eine vorhandene VM ausführen. Im folgenden Beispiel wird die Erweiterung für benutzerdefinierte Skripts für einen virtuellen Computer mit dem Namen myVM in der Ressourcengruppe myResourceGroup ausgeführt. Ersetzen Sie den Ressourcengruppennamen, den VM-Namen und das auszuführende Skript (https://raw.githubusercontent.com/me/project/hello.sh) im Beispiel durch Ihre eigenen Informationen.

$Params = @{
    ResourceGroupName  = 'myResourceGroup'
    VMName             = 'myVM'
    Name               = 'CustomScript'
    Publisher          = 'Microsoft.Azure.Extensions'
    ExtensionType      = 'CustomScript'
    TypeHandlerVersion = '2.1'
    Settings          = @{fileUris = @('https://raw.githubusercontent.com/me/project/hello.sh'); commandToExecute = './hello.sh'}
}
Set-AzVMExtension @Params

Wenn die Erweiterung ordnungsgemäß ausgeführt wird, ähnelt die Ausgabe dem folgenden Beispiel:

RequestId IsSuccessStatusCode StatusCode ReasonPhrase
--------- ------------------- ---------- ------------
                         True         OK OK

Azure-Portal

Sie können VM-Erweiterungen mithilfe des Azure-Portals auf eine vorhandene VM anwenden werden. Wählen Sie im Azure-Portal Erweiterungen 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.

Das folgende Bild zeigt die Installation der benutzerdefinierten Skripterweiterung vom Azure-Portal aus:

Screenshot of the dialog for installing the Custom Script extension for Linux.

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.

Beispielsweise stammt der folgende JSON-Code 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/', concat(variables('vmName'),copyindex()))]"
    ],
    "tags": {
    "displayName": "config-app"
    },
    "properties": {
    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.1",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"
        ]
    },
    "protectedSettings": {
        "commandToExecute": "[concat('sudo sh config-music.sh ',variables('musicStoreSqlName'), ' ', parameters('adminUsername'), ' ', parameters('sqlAdminPassword'))]"
    }
    }
}

Informationen zur Bereitstellung mithilfe von ARM-Vorlagen finden Sie unter VMs in einer Azure Resource Manager-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 jede wird in der erweiterungsspezifischen Dokumentation ausführlich erläutert.

Das folgende Beispiel zeigt eine Instanz der benutzerdefinierten Skripterweiterung für Linux. 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/', concat(variables('vmName'),copyindex()))]"
  ],
  "tags": {
    "displayName": "config-app"
  },
  "properties": {
    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.1",
    "autoUpgradeMinorVersion": true,
    "settings": {
      "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"
      ],
      "commandToExecute": "[concat('sudo sh config-music.sh ',variables('musicStoreSqlName'), ' ', parameters('adminUsername'), ' ', parameters('sqlAdminPassword'))]"
    }
  }
}

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/', concat(variables('vmName'),copyindex()))]"
  ],
  "tags": {
    "displayName": "config-app"
  },
  "properties": {
    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.1",
    "autoUpgradeMinorVersion": true,
    "settings": {
      "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"
      ]
    },
    "protectedSettings": {
      "commandToExecute": "[concat('sudo sh config-music.sh ',variables('musicStoreSqlName'), ' ', parameters('adminUsername'), ' ', parameters('sqlAdminPassword'))]"
    }
  }
}

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 dem virtuellen Computer installiert, nachdem eine Änderung an einer Erweiterung vorgenommen wurde oder nachdem andere VM-Modelländerungen vorgenommen wurden, z. B.:

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

Herausgeber stellen Updates in verschiedenen Regionen zu verschiedenen Zeiten zur Verfügung, d.h., möglicherweise haben Ihre VMs in verschiedenen Regionen unterschiedliche Versionen.

Hinweis

Einige Updates erfordern eventuell zusätzliche Firewallregeln. Siehe Netzwerkzugriff.

Updates für Agents

Der Linux-VM-Agent enthält Bereitstellungs-Agent-Code und Code für die Behandlung von Erweiterungen in einem Paket. Sie können nicht getrennt werden.

Sie können den Bereitstellungs-Agent deaktivieren, wenn Sie die Bereitstellung in Azure mit cloud-init durchführen möchten.

Unterstützte Versionen der Agents können automatische Updates verwenden. Der einzige Code, der aktualisiert werden kann, ist die Erweiterung zur Behandlung von Code, nicht der Bereitstellungs-Agent-Code. Der Bereitstellungs-Agent-Code wird einmalig ausgeführt.

Der Code zur Behandlung von Erweiterungen ist für Folgendes verantwortlich:

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

Beim Installieren des Agents wird ein übergeordneter Daemon erstellt. Dieses übergeordnete Element erzeugt dann einen untergeordneten Prozess, mit dem Erweiterungen behandelt werden. Wenn ein Update für den Agent verfügbar ist, wird es heruntergeladen. Der übergeordnete Prozess beendet den untergeordneten Prozess, aktualisiert ihn und startet ihn dann neu. Falls ein Problem durch das Update entsteht, führt der übergeordnete Prozess ein Rollback auf die Vorgängerversion des untergeordneten Prozesses durch.

Der übergeordnete Prozess kann nicht automatisch aktualisiert werden. Er kann nur durch ein Update des Verteilungspakets aktualisiert werden.

Um herauszufinden, welche Version ausgeführt wird, überprüfen Sie waagent wie folgt:

waagent --version

Die Ausgabe sieht in etwa wie das folgende Beispiel aus:

WALinuxAgent-2.2.45 running on <Linux Distro>
Python: 3.6.9
Goal state agent: 2.7.1.0

In der vorhergehenden Beispielausgabe ist die Version des übergeordneten Prozesses (oder des bereitgestellten Pakets) WALinuxAgent-2.2.45. Der Wert Goal state agent ist die Version der automatischen Aktualisierung.

Wir empfehlen dringend, die automatische Aktualisierung für den Agent immer zu aktivieren: AutoUpdate.Enabled=y. Wenn Sie das automatische Update nicht aktivieren, müssen Sie den Agent manuell aktualisieren, und Sie erhalten keine Fehler- und Sicherheitsfixes.

Updates für Erweiterungen

Wenn ein Erweiterungsupdate verfügbar ist und automatische Updates aktiviert sind, lädt der Azure Linux-Agent die Erweiterung herunter und aktualisiert sie, nachdem eine Änderung am VM-Modell erfolgt ist.

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 von "autoUpgradeMinorVersion": true, automatisch aktualisiert werden:

    "publisher": "Microsoft.Azure.Extensions",
    "type": "CustomScript",
    "typeHandlerVersion": "2.1",
    "autoUpgradeMinorVersion": true,
    "settings": {
        "fileUris": [
        "https://raw.githubusercontent.com/Microsoft/dotnet-core-sample-templates/master/dotnet-core-music-linux/scripts/config-music.sh"
        ]
    },

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 ein Upgrade für eine Hauptversion durchführen müssen, verwenden Sie az vm extension set oder Set-AzVMExtension, und geben Sie die Zielversion an.

So identifizieren Sie Updates für Erweiterungen

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

Sie können am VM-Modell erkennen, ob die Erweiterung mit autoUpgradeMinorVersion bereitgestellt wurde. Um dies zu überprüfen, verwenden Sie az vm show, und geben Sie die Ressourcengruppe und den VM-Namen wie folgt an:

az vm show --resource-group myResourceGroup --name myVM

Die folgende Beispielausgabe zeigt, dass autoUpgradeMinorVersion auf true gestellt ist:

  "resources": [
    {
      "autoUpgradeMinorVersion": true,
      "forceUpdateTag": null,
      "id": "/subscriptions/guid/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM/extensions/customScript",

Ermitteln, wann ein autoUpgradeMinorVersion-Ereignis aufgetreten ist

Um zu sehen, wann die Erweiterung aktualisiert wurde, überprüfen Sie die Protokolldatei des Agents auf der VM unter /var/log/waagent.log.

Im folgenden Beispiel war Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9025 auf der VM installiert. Ein Hotfix auf Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027 war verfügbar.

INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Expected handler state: enabled
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Decide which version to use
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Use version: 2.3.9027
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Current handler state is: NotInstalled
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Download extension package
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Unpack extension package
INFO Event: name=Microsoft.OSTCExtensions.LinuxDiagnostic, op=Download, message=Download succeeded
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Initialize extension directory
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Update settings file: 0.settings
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9025] Disable extension.
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9025] Launch command:diagnostic.py -disable
...
INFO Event: name=Microsoft.OSTCExtensions.LinuxDiagnostic, op=Disable, message=Launch command succeeded: diagnostic.py -disable
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Update extension.
INFO [Microsoft.OSTCExtensions.LinuxDiagnostic-2.3.9027] Launch command:diagnostic.py -update
2017/08/14 20:21:57 LinuxAzureDiagnostic started to handle.

Berechtigungen für Agents

Damit er seine Aufgaben ausführen kann, muss der Agent als root 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 wurde.

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

  • Um das Protokoll des Azure Linux-Agents zu überprüfen, sollten Sie die Aktivität bei der Bereitstellung der Erweiterung in /var/log/waagent.log untersuchen.

  • Überprüfen Sie die Protokolle der Erweiterung in /var/log/azure/<NameDerErweiterung>, um weitere Informationen zu erhalten.

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

Häufige Ursachen für Fehler bei der Erweiterung

  • Erweiterungen haben 20 Minuten für die Ausführung. (Ausnahmen sind Custom Script und Chef mit 90 Minuten.) Wenn Ihre Bereitstellung diese Zeit überschreitet, wird sie als Zeitüberschreitung markiert. Die Ursache hierfür können VMs mit geringen Ressourcen sein, oder starker Ressourcenverbrauch durch andere VM-Konfigurationen oder Starttasks, 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 eine VM ausgeführt wurde, können Sie mit az vm get-instance-view wie folgt zum Erweiterungsstatus zurückkehren:

az vm get-instance-view \
    --resource-group myResourceGroup \
    --name myVM \
    --query "instanceView.extensions"

Die Ausgabe sieht in etwa wie das folgende Beispiel aus:

  {
    "name": "customScript",
    "statuses": [
      {
        "code": "ProvisioningState/failed/0",
        "displayStatus": "Provisioning failed",
        "level": "Error",
        "message": "Enable failed: failed to execute command: command terminated with exit status=127\n[stdout]\n\n[stderr]\n/bin/sh: 1: ech: not found\n",
        "time": null
      }
    ],
    "substatuses": null,
    "type": "Microsoft.Azure.Extensions.CustomScript",
    "typeHandlerVersion": "2.1.6"
  }

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 kann die erneute Ausführung einer VM-Erweiterung erforderlich sein. Sie können eine Erweiterung erneut ausführen, indem Sie sie entfernen und die Erweiterung dann mit einer Ausführungsmethode Ihrer Wahl erneut ausführen.

Verwenden Sie zum Entfernen einer Erweiterung az vm extension delete wie folgt:

az vm extension delete \
    --resource-group myResourceGroup \
    --vm-name myVM \
    --name customScript

Sie können eine Erweiterung auch im Azure-Portal entfernen:

  1. Wählen Sie einen virtuellen Computer aus.
  2. Wählen Sie Erweiterungen.
  3. Wählen Sie die Erweiterung aus.
  4. Wählen Sie Deinstallieren aus.

Allgemeine VM-Erweiterungsreferenz

Name der Erweiterung BESCHREIBUNG
Benutzerdefinierte Skripterweiterung für Linux Ausführen von Skripts für Azure-VMs.
VMAccess-Erweiterung Wiedererlangen des Zugriffs auf eine Azure-VM. Kann auch zum Verwalten von Benutzern und Anmeldeinformationen verwendet werden.
Azure-Diagnoseerweiterung Verwalten der Azure-Diagnose.

Nächste Schritte

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