Problembehandlung für Azure VM Image Builder

Gilt für: ✔️ Linux-VMs ✔️ Flexible Skalierungsgruppen

Verwenden Sie die Informationen in diesem Artikel, um häufige Probleme zu beheben, die bei der Verwendung von Azure VM Image Builder auftreten können.

Voraussetzungen

Wenn Sie einen Build erstellen, beachten Sie Folgendes:

  • Der VM Image Builder-Dienst kommuniziert über WinRM oder Secure Shell (SSH) mit der Build-VM. Deaktivieren Sie diese Einstellungen im Rahmen des Builds nicht.
  • VM Image Builder erstellt Ressourcen in der Staging-Ressourcengruppe als Teil der Builds. Vergewissern Sie sich, dass Azure Policy nicht verhindert, dass VM Image Builder erforderliche Ressourcen erstellt oder verwendet.
  • Stellen Sie sicher, dass Azure Policy keine unbeabsichtigten Features wie z. B. Azure-Erweiterungen auf der Build-VM installiert.
  • Stellen Sie sicher, dass VM Image Builder über die richtigen Berechtigungen zum Lesen/Schreiben von Images und zum Herstellen einer Verbindung mit dem Speicherkonto verfügt. Weitere Informationen finden Sie in der Dokumentation zu Berechtigungen für die Azure CLI oder Azure PowerShell.
  • VM Image Builder kann den Build nicht erstellen, wenn bei den Skripts oder Inlinebefehlen Fehler auftreten (Exitcodes ungleich 0). Stellen Sie sicher, dass Sie die benutzerdefinierten Skripts getestet und verifiziert haben, dass sie ohne Fehler ausgeführt werden (Exitcode 0) und keine Benutzereingaben erfordern. Weitere Informationen finden Sie unter Erstellen eines Azure Virtual Desktop-Images mit VM Image Builder und PowerShell.
  • Stellen Sie sicher, dass Ihr Abonnement über ein ausreichendes Kontingent an Azure-Containerinstanzen verfügt.
    • Jeder Imagebuild kann bis zu einer temporären Azure Container Instance-Ressource (mit vier Standardkernen) in der Stagingressourcengruppe bereitstellen. Diese Ressourcen sind für isolierte Imagebuilds erforderlich.

Fehler bei VM Image Builder können in zwei Bereichen auftreten:

  • Während der Übermittlung von Imagevorlagen
  • Während der Imageerstellung

Hinweis

Von CIS verwaltete und CIS-gehärtete Images (Linux oder Windows) im Azure Marketplace können aufgrund ihrer Konfigurationen Buildfehler mit dem Azure Image Builder-Dienst verursachen. Beispiel:

  • CIS-gehärtete Windows-Images unterbrechen möglicherweise die WinRM-Konnektivität, die eine der Voraussetzungen für AIB-Builds sind.
  • CIS-Linux-Images können aufgrund von chmod +x-Berechtigungsproblemen zu Fehlern führen.

Problembehandlung bei der Übermittlung von Imagevorlagen

Fehler bei der Übermittlung von Imagevorlagen werden nur bei der Übermittlung zurückgegeben. Das heißt, es gibt kein Fehlerprotokoll für Fehler bei der Übermittlung von Imagevorlagen. Wenn bei der Übermittlung ein Fehler aufgetreten ist, können Sie diesen zurückgeben, indem Sie den Status der Vorlage überprüfen, insbesondere ProvisioningState und ProvisioningErrorMessage/provisioningError.

az image builder show --name $imageTemplateName  --resource-group $imageResourceGroup
Get-AzImageBuilderTemplate -ImageTemplateName  <imageTemplateName> -ResourceGroupName <imageTemplateResourceGroup> | Select-Object ProvisioningState, ProvisioningErrorMessage

Hinweis

Für PowerShell müssen Sie die PowerShell-Module von VM Image Builder installieren.

Wichtig

Mit der API-Version 2021-10-01 wurde eine Änderung am Fehlerschema eingeführt, die für alle künftigen API-Releases gilt. Falls Sie über Azure VM Image Builder-Automatisierungen verfügen, beachten Sie die neue Fehlerausgabe, wenn Sie zur API-Version 2021-10-01 oder höher wechseln. Es wird empfohlen, nach dem Wechsel zur neuesten API-Version nicht wieder zu einer früheren Version zurückzukehren, da Sie die Automatisierung erneut ändern müssten, um das frühere Fehlerschema zu erzeugen. Wir rechnen nicht damit, dass sich das Fehlerschema in zukünftigen Releases erneut ändert.

Fehlerausgabe für Version 2020-02-14 und früher

{
  "code": "ValidationFailed",
  "message": "Validation failed: 'ImageTemplate.properties.source': Field 'imageId' has a bad value: '/subscriptions/subscriptionID/resourceGroups/resourceGroupName/providers/Microsoft.Compute/images/imageName'. Please review  http://aka.ms/azvmimagebuildertmplref  for details on fields requirements in the Image Builder Template."
}

Fehlerausgabe für Version 2021-10-01 und höher

{
  "error": {
    "code": "ValidationFailed",
    "message": "Validation failed: 'ImageTemplate.properties.source': Field 'imageId' has a bad value: '/subscriptions/subscriptionID/resourceGroups/resourceGroupName/providers/Microsoft.Compute/images/imageName'. Please review  http://aka.ms/azvmimagebuildertmplref  for details on fields requirements in the Image Builder Template."
  }
}

In den folgenden Abschnitten finden Sie Anleitungen zur Problembehandlung für häufige Fehler bei der Übermittlung von Imagevorlagen.

Ein Update oder Upgrade von Imagevorlagen wird derzeit nicht unterstützt

Fehler

'Conflict'. Details: Update/Upgrade of image templates is currently not supported

Ursache

Die Vorlage ist bereits vorhanden.

Lösung

Wenn Sie eine Imagekonfigurationsvorlage übermitteln und die Übermittlung fehlschlägt, gibt es immer noch ein fehlerhaftes Vorlagenartefakt. Löschen Sie die fehlerhafte Vorlage.

Neuzuweisen von MSIs für Imagevorlagen

Fehler

The assigned managed identity cannot be used. Please remove the existing one and re-assign a new identity. For more troubleshooting steps go to https://aka.ms/azvmimagebuilderts.

Ursache

In bestimmten Fällen können verwaltete Dienstidentitäten (Managed Service Identities, MSIs), die der Imagevorlage zugewiesen sind, nicht verwendet werden:

  • Die Image Builder-Vorlage verwendet eine vom Kunden bereitgestellte Stagingressourcengruppe, und die MSI wird vor der Imagevorlage gelöscht (Szenario Stagingressourcengruppe).
  • Die erstellten verwaltete Dienstidentitäten (Managed Service Identities, MSI), die der Imagevorlage zugewiesen sind, können nicht verwendet werden.

Lösung

Verwenden Sie die Azure CLI, um die Identität für die Imagevorlage zurückzusetzen. Aktualisieren Sie die Azure CLI mindestens auf die Version 2.45.0.

Entfernen Sie die verwaltete Identität aus der Image Builder-Zielvorlage.

az image builder identity remove -g <template resource group> -n <template name> --user-assigned <identity resource id>

Weisen Sie die verwaltete Identität wieder der Image Builder-Zielvorlage zu.

az image builder identity assign -g <template rg> -n <template name> --user-assigned <identity resource id>

Der Ressourcenvorgang wurde mit dem finalen Bereitstellungsstatus „Fehler“ abgeschlossen.

Fehler

Microsoft.VirtualMachineImages/imageTemplates 'helloImageTemplateforSIG01' failed with message '{
  "status": "Failed",
  "error": {
    "code": "ResourceDeploymentFailure",
    "message": "The resource operation completed with terminal provisioning state 'Failed'.",
    "details": [
      {
        "code": "InternalOperationError",
        "message": "Internal error occurred."

Ursache

In den meisten Fällen tritt der Fehler bei der Ressourcenbereitstellung aufgrund fehlender Berechtigungen auf. Dieser Fehler kann auch durch einen Konflikt mit der Stagingressourcengruppe verursacht werden.

Lösung

Je nach Szenario benötigt VM Image Builder möglicherweise Berechtigungen für Folgendes:

  • Das Quellimage oder die Azure Compute Gallery (früher als Shared Image Gallery bezeichnet)
  • Das Distributionsimage oder die Azure Compute Gallery-Ressource
  • Das Speicherkonto, der Container oder das Blob, auf das bzw. den die File-Anpassung zugreift

Stellen Sie außerdem sicher, dass der Name der Stagingressourcengruppe für jede Imagevorlage eindeutig ist.

Weitere Informationen zum Konfigurieren von Berechtigungen finden Sie unter Konfigurieren der VM Image Builder-Berechtigungen mithilfe der Azure CLI oder Konfigurieren der VM Image Builder-Berechtigungen mithilfe von PowerShell.

Fehler beim Abrufen eines verwalteten Images

Fehler

Build (Managed Image) step failed: Error getting Managed Image '/subscriptions/.../providers/Microsoft.Compute/images/mymanagedmg1': Error getting managed image (...): compute.
ImagesClient#Get: Failure responding to request: StatusCode=403 -- Original Error: autorest/azure: Service returned an error.
Status=403 Code="AuthorizationFailed" Message="The client '......' with object id '......' doesn't have authorization to perform action 'Microsoft.Compute/images/read' over scope

Ursache

Fehlende Berechtigungen.

Lösung

Je nach Szenario benötigt VM Image Builder möglicherweise Berechtigungen für Folgendes:

  • Das Quellimage oder die Azure Compute Gallery-Ressourcengruppe
  • Das Distributionsimage oder die Azure Compute Gallery-Ressource
  • Das Speicherkonto, der Container oder das Blob, auf das bzw. den die File-Anpassung zugreift

Weitere Informationen zum Konfigurieren von Berechtigungen finden Sie unter Konfigurieren der VM Image Builder-Berechtigungen mithilfe der Azure CLI oder Konfigurieren der VM Image Builder-Berechtigungen mithilfe von PowerShell.

Fehler beim Buildschritt für die Imageversion

Fehler

Build (Shared Image Version) step failed for Image Version '/subscriptions/.../providers/Microsoft.Compute/galleries/.../images/... /versions/0.23768.4001': Error getting Image Version '/subscriptions/.../resourceGroups/<rgName>/providers/Microsoft.Compute/galleries/.../images/.../versions/0.23768.4001': Error getting image version '... :0.23768.4001': compute.GalleryImageVersionsClient#Get: Failure responding to request: StatusCode=404 -- Original Error: autorest/azure: Service returned an error.
Status=404 Code="ResourceNotFound" Message="The Resource 'Microsoft.Compute/galleries/.../images/.../versions/0.23768.4001' under resource group '<rgName>' was not found."

Ursache

VM Image Builder kann das Quellimage nicht finden.

Lösung

Stellen Sie sicher, dass das Quellimage fehlerfrei und im Speicherort von VM Image Builder vorhanden ist.

Herunterladen einer externen Datei in eine lokale Datei

Fehler

Downloading external file (<myFile>) to local file (xxxxx.0.customizer.fp) [attempt 1 of 10] failed: Error downloading '<myFile>' to 'xxxxx.0.customizer.fp'..

Ursache

Der Dateiname oder der Speicherort ist falsch, oder der Speicherort ist nicht erreichbar.

Lösung

Stellen Sie sicher, dass die Datei erreichbar ist. Vergewissern Sie sich, dass Name und Speicherort korrekt angegeben sind.

Autorisierungsfehler beim Erstellen des Datenträgers

Der Azure Image Builder-Build schlägt mit einem Autorisierungsfehler fehl, der wie folgt aussieht:

Fehler

Attempting to deploy created Image template in Azure fails with an 'The client '6df325020-fe22-4e39-bd69-10873965ac04' with object id '6df325020-fe22-4e39-bd69-10873965ac04' does not have authorization to perform action 'Microsoft.Compute/disks/write' over scope '/subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/disks/proxyVmDiskWin_<timestamp>' or the scope is invalid. If access was recently granted, please refresh your credentials.'

Ursache

Dieser Fehler wird verursacht, wenn Sie versuchen, eine vorhandene Ressourcengruppe und VNet für den Azure Image Builder-Dienst mit einem Windows-Quellimage anzugeben.

Lösung

Sie müssen der Ressourcengruppe für den Dienstprinzipal, der der Erstanbieter-App von Azure Image Builder entspricht, die Rolle „Mitwirkender“ zuweisen, indem Sie den CLI-Befehl oder die nachstehenden Portalanweisungen verwenden.

Überprüfen Sie zunächst mit dem folgenden CLI-Befehl, ob der Dienstprinzipal der Erstanbieter-App von Azure Image Builder zugeordnet ist:

az ad sp show --id {servicePrincipalName, or objectId}

Verwenden Sie dann den folgenden Befehl, um diese Lösung mithilfe der CLI zu implementieren:

az role assignment create -g {ResourceGroupName} --assignee {AibrpSpOid} --role Contributor

Befolgen Sie zum Implementieren dieser Lösung im Portal die Anweisungen in dieser Dokumentation: Zuweisen von Azure-Rollen mithilfe des Azure-Portals – Azure RBAC.

Für Schritt 1: Identifizieren des erforderlichen Bereichs: Der erforderliche Bereich ist Ihre Ressourcengruppe.

Für Schritt 3: Auswahl der geeigneten Rolle: Die Rolle ist Mitwirkender.

Für Schritt 4: Auswählen, wer Zugriff benötigt: Wählen Sie das Element „Azure Virtual Machine Image Builder“ aus.

Fahren Sie dann mit Schritt 6: Rolle zuweisen fort, um die Rolle zuzuweisen.

Beheben von Buildfehlern

Treten Fehler bei der Imageerstellung auf, rufen Sie den Fehler aus lastrunstatus ab, und sehen Sie sich dann die Details in der Datei customization.log an.

az image builder show --name $imageTemplateName  --resource-group $imageResourceGroup
Get-AzImageBuilderTemplate -ImageTemplateName  <imageTemplateName> -ResourceGroupName <imageTemplateResourceGroup> | Select-Object LastRunStatus, LastRunStatusMessage

Anpassungsprotokoll

Sobald die Imageerstellung ausgeführt wird, werden Protokolle erstellt und in einem Speicherkonto gespeichert. Wenn Sie ein Imagevorlagenartefakt erstellen, erstellt VM Azure Image Builder das Speicherkonto in der temporären Ressourcengruppe.

Der Speicherkontoname verwendet dieses Muster: IT_<NameDerImageressourcengruppe><Vorlagenname><GUID> (Beispiel: IT_aibmdi_helloImageTemplateLinux01).

Um die Datei customization.log in der Ressourcengruppe anzuzeigen, wählen Sie Speicherkonto>Blobs>packerlogs, Verzeichnis und dann die Datei customization.log aus.

Grundlegendes zum Anpassungsprotokoll

Das Protokoll ist sehr ausführlich. Es enthält Informationen zur Imageerstellung sowie alle Probleme bei der Imageverteilung, wie z. B. die Azure Compute Gallery-Replikation. Diese Fehler werden in der Fehlermeldung des Status der Imagevorlage angezeigt.

Die Datei customization.log umfasst die folgenden Stages:

  1. Bereitstellung der Build-VM und der Abhängigkeiten mithilfe von ARM-Vorlagen in der „IT_“-Stagingressourcengruppe. Diese Stage umfasst mehrere POST-Vorgänge für den VM Image Builder-Ressourcenanbieter:

    Azure request method="POST" request="https://management.azure.com/subscriptions/<subID>/resourceGroups/IT_aibImageRG200_window2019VnetTemplate01_dec33089-1cc3-cccc-cccc-ccccccc/providers/Microsoft.Storage/storageAccounts
    ..
    PACKER OUT ==> azure-arm: Deploying deployment template ...
    ..
    
  2. Status der Bereitstellungen. Diese Stage umfasst den Status der einzelnen Ressourcenbereitstellungen:

    PACKER ERR 2020/04/30 23:28:50 packer: 2020/04/30 23:28:50 Azure request method="GET" request="https://management.azure.com/subscriptions/<subID>/resourcegroups/IT_aibImageRG200_window2019VnetTemplate01_dec33089-1cc3-4505-ae28-6661e43fac48/providers/Microsoft.Resources/deployments/pkrdp51lc0339jg/operationStatuses/08586133176207523519?[REDACTED]" body=""
    
  3. Herstellen der Verbindung mit der Build-VM.

    Unter Windows stellt VM Image Builder eine Verbindung über WinRM her:

    PACKER ERR 2020/04/30 23:30:50 packer: 2020/04/30 23:30:50 Waiting for WinRM, up to timeout: 10m0s
    ..
    PACKER OUT     azure-arm: WinRM connected.
    

    Unter Linux stellt VM Image Builder eine Verbindung über SSH her:

    PACKER OUT ==> azure-arm: Waiting for SSH to become available...
    PACKER ERR 2019/12/10 17:20:51 packer: 2020/04/10 17:20:51 [INFO] Waiting for SSH, up to timeout: 20m0s
    PACKER OUT ==> azure-arm: Connected to SSH!
    
  4. Ausführen von Anpassungen. Wenn Anpassungen ausgeführt werden, können Sie diese anhand der Datei customization.log identifizieren. Suchen Sie nach (telemetry) .

    (telemetry) Starting provisioner windows-update
    (telemetry) ending windows-update
    (telemetry) Starting provisioner powershell
    (telemetry) ending powershell
    (telemetry) Starting provisioner file
    (telemetry) ending file
    (telemetry) Starting provisioner windows-restart
    (telemetry) ending windows-restart
    
    (telemetry) Finalizing. - This means the build hasfinished
    
  5. Aufheben der Bereitstellung. VM Image Builder fügt eine verborgene Anpassung hinzu. Dieser Schritt zur Aufhebung der Bereitstellung ist für die Vorbereitung der VM auf die Aufhebung der Bereitstellung erforderlich. Unter Windows wird Sysprep ausgeführt (mit c:\DeprovisioningScript.ps1). Unter Linux wird waagent-deprovision ausgeführt (mit /tmp/DeprovisioningScript.sh).

    Beispiel:

    PACKER ERR 2020/03/04 23:05:04 [INFO] (telemetry) Starting provisioner powershell
    PACKER ERR 2020/03/04 23:05:04 packer: 2020/03/04 23:05:04 Found command: if( TEST-PATH c:\DeprovisioningScript.ps1 ){cat c:\DeprovisioningScript.ps1} else {echo "Deprovisioning script [c:\DeprovisioningScript.ps1] could not be found. Image build may fail or the VM created from the Image may not boot. Please make sure the deprovisioning script is not accidentally deleted by a Customizer in the Template."}
    
  6. Bereinigen. Nachdem die Builderstellung abgeschlossen ist, werden die VM Image Builder-Ressourcen gelöscht.

    PACKER ERR ==> azure-arm: Deleting individual resources ...
    ...
    PACKER ERR 2020/02/04 02:04:23 packer: 2020/02/04 02:04:23 Azure request method="DELETE" request="https://management.azure.com/subscriptions/<subId>/resourceGroups/IT_aibDevOpsImg_t_vvvvvvv_yyyyyy-de5f-4f7c-92f2-xxxxxxxx/providers/Microsoft.Network/networkInterfaces/pkrnijamvpo08eo?[REDACTED]" body=""
    ...
    PACKER ERR ==> azure-arm: The resource group was not created by Packer, not deleting ...
    

Tipps zur Problembehandlung bei der Skript- oder Inlineanpassung

  • Testen Sie den Code, bevor Sie ihn für VM Image Builder bereitstellen.
  • Stellen Sie sicher, dass Azure Policy und Firewall die Verbindung mit Remoteressourcen zulassen.
  • Geben Sie Kommentare mit Write-Host oder echo an die Konsole aus. Auf diese Weise können Sie die Datei customization.log durchsuchen.

Problembehandlung für häufige Buildfehler

Bei der Vorlagenbereitstellung ist aufgrund einer Richtlinienverletzung ein Fehler aufgetreten.

Fehler

{
  "statusCode": "BadRequest",
  "serviceRequestId": null,
  "statusMessage": "{\"error\":{\"code\":\"InvalidTemplateDeployment\",\"message\":\"The template deployment failed because of policy violation. Please see details for more information.\",\"details\":[{\"code\":\"RequestDisallowedByPolicy\",\"target\":\"<target_name>\",\"message\":\"Resource '<resource_name>' was disallowed by policy. Policy identifiers: '[{\\\"policyAssignment\\\":{\\\"name\\\":\\\"[Initiative] KeyVault (Microsoft.KeyVault)\\\",\\\"id\\\":\\\"/providers/Microsoft.Management/managementGroups/<managementGroup_name>/providers/Microsoft.Authorization/policyAssignments/Microsoft.KeyVault\\\"},\\\"policyDefinition\\\":{\\\"name\\\":\\\"Azure Key Vault should disable public network access\\\",\\\"id\\\":\\\"/providers/Microsoft.Management/managementGroups/<managementGroup_name>/providers/Microsoft.Authorization/policyDefinitions/KeyVault.disablePublicNetworkAccess_deny_deny\\\"},\\\"policySetDefinition\\\":{\\\"name\\\":\\\"[Initiative] KeyVault (Microsoft.KeyVault)\\\",\\\"id\\\":\\\"/providers/Microsoft.Management/managementGroups/<managementGroup_name>/providers/Microsoft.Authorization/policySetDefinitions/Microsoft.KeyVault\\\"}}]'.\",\"additionalInfo\":[{\"type\":\"PolicyViolation\"}]}]}}",
  "eventCategory": "Administrative",
  "entity": "/subscriptions/<subscription_ID>/<resourcegroups>/<resourcegroupname>/providers/Microsoft.Resources/deployments/<deployment_name>",
  "message": "Microsoft.Resources/deployments/validate/action",
  "hierarchy": "<subscription_ID>/<resourcegroupname>/<policy_name>/<managementGroup_name>/<deployment_ID>"
}

Ursache

Der oben gezeigte Richtlinienverstoß ist das Ergebnis der Verwendung einer Azure Key Vault-Instanz mit deaktiviertem öffentlichem Zugriff. Derzeit unterstützt Azure Image Builder diese Konfiguration nicht.

Lösung

Die Azure Key Vault-Instanz muss mit aktiviertem öffentlichen Zugriff erstellt werden.

Fehler beim Packer-Build-Befehl

Fehler

  "provisioningState": "Succeeded",
  "lastRunStatus": {
   "startTime": "2020-04-30T23:24:06.756985789Z",
   "endTime": "2020-04-30T23:39:14.268729811Z",
   "runState": "Failed",
   "message": "Failed while waiting for packerizer: Microservice has failed: Failed while processing request: Error when executing packerizer: Packer build command has failed: exit status 1. During the image build, a failure has occurred, please review the build log to identify which build/customization step failed. For more troubleshooting steps go to https://aka.ms/azvmimagebuilderts. Image Build log location: https://xxxxxxxxxx.blob.core.windows.net/packerlogs/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx/customization.log. OperationId: xxxxxx-5a8c-4379-xxxx-8d85493bc791. Use this operationId to search packer logs."

Ursache

Anpassungsfehler.

Lösung

Sehen Sie sich das Protokoll an, um Fehler bei der Anpassung zu ermitteln. Suchen Sie nach (telemetry) .

Beispiel:

(telemetry) Starting provisioner windows-update
(telemetry) ending windows-update
(telemetry) Starting provisioner powershell
(telemetry) ending powershell
(telemetry) Starting provisioner file
(telemetry) ending file
(telemetry) Starting provisioner windows-restart
(telemetry) ending windows-restart

(telemetry) Finalizing. - This means the build has finished

Timeout überschritten

Fehler

Deployment failed. Correlation ID: xxxxx-xxxx-xxxx-xxxx-xxxxxxxxx. Failed in building/customizing image: Failed while waiting for packerizer: Timeout waiting for microservice to complete: 'context deadline exceeded'

Ursache

Der Build hat das Buildtimeout überschritten. Dieser Fehler wird in „lastrunstatus“ angezeigt.

Lösung

  1. Sehen Sie sich die Datei customization.log an. Identifizieren Sie die Anpassung, die zuletzt ausgeführt werden sollte. Suchen Sie, ausgehend vom Ende des Protokolls, nach (telemetry).

  2. Überprüfen Sie die Skriptanpassungen. Die Anpassungen unterdrücken möglicherweise nicht die Benutzerinteraktion für Befehle, wie z. B. quiet-Optionen. apt-get install -y führt beispielsweise dazu, dass die Skriptausführung auf eine Benutzerinteraktion wartet.

  3. Wenn Sie die File-Anpassung zum Herunterladen von Artefakten mit mehr als 20 MB verwenden, finden Sie weitere Informationen im Abschnitt mit den Problemumgehungen.

  4. Sehen Sie sich Fehler und Abhängigkeiten im Skript an, die möglicherweise dazu führen, dass das Skript wartet.

  5. Wenn Sie davon ausgehen, dass die Anpassungen mehr Zeit benötigen, erhöhen Sie den Wert für buildTimeoutInMinutes. Die Standardeinstellung beträgt 4 Stunden.

  6. Wenn Sie ressourcenintensive Aktionen durchführen, wie z. B. das Herunterladen mehrerer Gigabyte (GB) an Dateien, sollten Sie die Größe der zugrunde liegenden Build-VM berücksichtigen. Der Dienst verwendet eine Standard_D1_v2-VM. Die VM verfügt über 1 vCPU und 3,5 GB Arbeitsspeicher. Wenn Sie 50 GB herunterladen, überlasten Sie wahrscheinlich die VM-Ressourcen und verursachen Kommunikationsfehler zwischen VM Image Builder und der Build-VM. Wiederholen Sie den Buildvorgang mit einer VM mit mehr Arbeitsspeicher, indem Sie den Parameter VM_size festlegen.

Lange Downloadzeit für Datei

Fehler

[086cf9c4-0457-4e8f-bfd4-908cfe3fe43c] PACKER OUT
myBigFile.zip 826 B / 826000 B  1.00%
[086cf9c4-0457-4e8f-bfd4-908cfe3fe43c] PACKER OUT
myBigFile.zip 1652 B / 826000 B  2.00%
[086cf9c4-0457-4e8f-bfd4-908cfe3fe43c] PACKER OUT
..
hours later...
..
myBigFile.zip 826000 B / 826000 B  100.00%
[086cf9c4-0457-4e8f-bfd4-908cfe3fe43c] PACKER OUT

Ursache

Die File-Anpassung lädt eine große Datei herunter.

Lösung

Die File-Anpassung eignet sich nur zum Herunterladen kleiner Dateien (weniger als 20 MB). Verwenden Sie für größere Dateidownloads ein Skript oder einen Inlinebefehl. Unter Linux können Sie zum Beispiel wget oder curl verwenden. Unter Windows können Sie Invoke-WebRequest verwenden.

Beim Ausführen von Windows-Restart durch den Generator tritt fortlaufend Fehlercode 1190 auf

Fehler

[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 [INFO] (telemetry) Starting provisioner windows-restart
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-plugin-azure plugin: 2023/06/13 08:28:58 [INFO] starting remote command: shutdown /r /f /t 10
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-plugin-azure plugin: 2023/06/13 08:28:58 [INFO] command 'shutdown /r /f /t 10' exited with code: 0
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER OUT ==> azure-arm: A system shutdown has already been scheduled.(1190)
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-plugin-azure plugin: 2023/06/13 08:28:58 [INFO] RPC endpoint: Communicator ended with: 0
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 [INFO] 0 bytes written for 'stdout'
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 [INFO] 0 bytes written for 'stderr'
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 [INFO] RPC client: Communicator ended with: 0
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 [INFO] RPC endpoint: Communicator ended with: 0
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-provisioner-windows-restart plugin: [INFO] 0 bytes written for 'stdout'
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-provisioner-windows-restart plugin: [INFO] 0 bytes written for 'stderr'
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-provisioner-windows-restart plugin: [INFO] RPC client: Communicator ended with: 0
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-provisioner-windows-restart plugin: Check if machine is rebooting...
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-plugin-azure plugin: 2023/06/13 08:28:58 [INFO] starting remote command: shutdown /r /f /t 60 /c "packer restart test"
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-plugin-azure plugin: 2023/06/13 08:28:58 [INFO] command 'shutdown /r /f /t 60 /c "packer restart test"' exited with code: 1190
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-plugin-azure plugin: 2023/06/13 08:28:58 [INFO] RPC endpoint: Communicator ended with: 1190
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 [INFO] 52 bytes written for 'stderr'
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 [INFO] 0 bytes written for 'stdout'
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 [INFO] RPC client: Communicator ended with: 1190
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 [INFO] RPC endpoint: Communicator ended with: 1190
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-provisioner-windows-restart plugin: [INFO] 52 bytes written for 'stderr'
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-provisioner-windows-restart plugin: [INFO] 0 bytes written for 'stdout'
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-provisioner-windows-restart plugin: [INFO] RPC client: Communicator ended with: 1190
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-provisioner-windows-restart plugin: Reboot already in progress, waiting...
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:29:08 packer-provisioner-windows-restart plugin: Check if machine is rebooting...
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:29:09 [INFO] 0 bytes written for 'stderr'
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:29:09 packer-provisioner-windows-restart plugin: [INFO] 0 bytes written for 'stderr'
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:29:09 packer-provisioner-windows-restart plugin: Waiting for machine to reboot with timeout: 15m0s
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:29:09 packer-provisioner-windows-restart plugin: Waiting for machine to become available...
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER OUT ==> Some builds didn't complete successfully and had errors:
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:46:26 machine readable: azure-arm,error []string{"Timeout waiting for machine to restart."}
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER OUT --> azure-arm: Timeout waiting for machine to restart.
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR ==> Builds finished but no artifacts were created.
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER OUT
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:46:26 [INFO] (telemetry) Finalizing.
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER OUT ==> Builds finished but no artifacts were created.

Ursache

Der Windows-Updateschritt wird in Images, die auf Windows Server 2016 basieren, vorzeitig deklariert.

Lösung

Erhöhen Sie restartTimeout von 15 Minuten auf 30 Minuten.

Fehler

Deployment failed. Correlation ID: XXXXXX-XXXX-XXXXXX-XXXX-XXXXXX. Failed in distributing 1 images out of total 1: {[Error 0] [Distribute 0] Error publishing MDI to Azure Compute Gallery:/subscriptions/<subId>/resourceGroups/xxxxxx/providers/Microsoft.Compute/galleries/xxxxx/images/xxxxxx, Location:eastus. Error: Error returned from SIG client while publishing MDI to Azure Compute Gallery for dstImageLocation: eastus, dstSubscription: <subId>, dstResourceGroupName: XXXXXX, dstGalleryName: XXXXXX, dstGalleryImageName: XXXXXX. Error: Error waiting on Azure Compute Gallery future for resource group: XXXXXX, gallery name: XXXXXX, gallery image name: XXXXXX.Error: Future#WaitForCompletion: context has been cancelled: StatusCode=200 -- Original Error: context deadline exceeded}

Ursache

Es ist ein Timeout aufgetreten, während VM Image Builder darauf gewartet hat, dass das Image hinzugefügt und in der Azure Compute Gallery repliziert wurde. Wenn das Image in die Gallery eingefügt wurde, können Sie davon ausgehen, dass der Imagebuildvorgang erfolgreich war. Der Gesamtprozess war jedoch nicht erfolgreich, da VM Image Builder darauf gewartet hat, dass die Azure Compute Gallery die Replikation abschließt. Obwohl der Build fehlgeschlagen ist, wird die Replikation fortgesetzt. Sie können die Eigenschaften der Imageversion abrufen, indem Sie die Distribution runOutput überprüfen.

$runOutputName=<distributionRunOutput>
az resource show \
    --ids "/subscriptions/$subscriptionID/resourcegroups/$imageResourceGroup/providers/Microsoft.VirtualMachineImages/imageTemplates/$imageTemplateName/runOutputs/$runOutputName"  \
    --api-version=2020-02-14

Lösung

Erhöhen Sie den Wert von buildTimeoutInMinutes.

Zu wenige Informationsereignisse zu Windows-Ressourcen

Fehler

[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT     azure-arm: Waiting for operation to complete (system performance: 1% cpu; 37% memory)...
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT     azure-arm: Waiting for operation to complete (system performance: 51% cpu; 35% memory)...
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT     azure-arm: Waiting for operation to complete (system performance: 21% cpu; 37% memory)...
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT     azure-arm: Waiting for operation to complete (system performance: 21% cpu; 36% memory)...
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT     azure-arm: Waiting for operation to complete (system performance: 90% cpu; 32% memory)...
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT     azure-arm: Waiting for the Windows Modules Installer to exit...
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer: 2020/04/30 23:38:58 [INFO] command 'PowerShell -ExecutionPolicy Bypass -OutputFormat Text -File C:/Windows/Temp/packer-windows-update-elevated.ps1' exited with code: 101
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT ==> azure-arm: Restarting the machine...
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer: 2020/04/30 23:38:58 [INFO] RPC endpoint: Communicator ended with: 101
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 [INFO] 1672 bytes written for 'stdout'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 [INFO] 0 bytes written for 'stderr'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 [INFO] RPC client: Communicator ended with: 101
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 [INFO] RPC endpoint: Communicator ended with: 101
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT ==> azure-arm: Waiting for machine to become available...
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer-provisioner-windows-update: 2020/04/30 23:38:58 [INFO] 1672 bytes written for 'stdout'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer-provisioner-windows-update: 2020/04/30 23:38:58 [INFO] 0 bytes written for 'stderr'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer-provisioner-windows-update: 2020/04/30 23:38:58 [INFO] RPC client: Communicator ended with: 101
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer: 2020/04/30 23:38:58 [INFO] starting remote command: shutdown.exe -f -r -t 0 -c "packer restart"
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer: 2020/04/30 23:38:58 [INFO] command 'shutdown.exe -f -r -t 0 -c "packer restart"' exited with code: 0
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer: 2020/04/30 23:38:58 [INFO] RPC endpoint: Communicator ended with: 0
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 [INFO] 0 bytes written for 'stderr'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 [INFO] 0 bytes written for 'stdout'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT ==> azure-arm: A system shutdown is in progress.(1115)
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 [INFO] RPC client: Communicator ended with: 0
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 [INFO] RPC endpoint: Communicator ended with: 0
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer-provisioner-windows-update: 2020/04/30 23:38:58 [INFO] 0 bytes written for 'stdout'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer-provisioner-windows-update: 2020/04/30 23:38:58 [INFO] 0 bytes written for 'stderr'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer-provisioner-windows-update: 2020/04/30 23:38:58 [INFO] RPC client: Communicator ended with: 0
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 packer: 2020/04/30 23:38:59 [INFO] starting remote command: shutdown.exe -f -r -t 60 -c "packer restart test"
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 packer: 2020/04/30 23:38:59 [INFO] command 'shutdown.exe -f -r -t 60 -c "packer restart test"' exited with code: 1115
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 packer: 2020/04/30 23:38:59 [INFO] RPC endpoint: Communicator ended with: 1115
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 [INFO] 0 bytes written for 'stdout'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 [INFO] 40 bytes written for 'stderr'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 [INFO] RPC client: Communicator ended with: 1115
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 [INFO] RPC endpoint: Communicator ended with: 1115
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 packer-provisioner-windows-update: 2020/04/30 23:38:59 [INFO] 40 bytes written for 'stderr'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 packer-provisioner-windows-update: 2020/04/30 23:38:59 [INFO] 0 bytes written for 'stdout'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 packer-provisioner-windows-update: 2020/04/30 23:38:59 [INFO] RPC client: Communicator ended with: 1115
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 packer-provisioner-windows-update: 2020/04/30 23:38:59 Retryable error: Machine not yet available (exit status 1115)
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT Build 'azure-arm' errored: unexpected EOF
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT

Ursache

Ressourcenauslastung. Dieses Problem tritt häufig bei Windows Update auf, wenn es mit der Standardgröße D1_V2 der Build-VM ausgeführt wird.

Lösung

Erhöhen Sie die Build-VM-Größe.

Der Build ist abgeschlossen, aber es wurden keine Artefakte erstellt

Warnung

[<log_id>] PACKER 2023/09/14 19:01:18 ui: Build 'azure-arm' finished after 3 minutes 13 seconds.
[<log_id>] PACKER 2023/09/14 19:01:18 ui:
[<log_id>] PACKER ==> Wait completed after 3 minutes 13 seconds
[<log_id>] PACKER 2023/09/14 19:01:18 ui:
[<log_id>] PACKER ==> Builds finished but no artifacts were created.
[<log_id>] PACKER 2023/09/14 19:01:18 [INFO] (telemetry) Finalizing.
[<log_id>] PACKER 2023/09/14 19:01:19 waiting for all plugin processes to complete...
[<log_id>] PACKER 2023/09/14 19:01:19 /aib/packerInput/packer-plugin-azure: plugin process exited
[<log_id>] PACKER 2023/09/14 19:01:19 /aib/packerInput/packer: plugin process exited
[<log_id>] PACKER 2023/09/14 19:01:19 /aib/packerInput/packer: plugin process exited
[<log_id>] PACKER 2023/09/14 19:01:19 /aib/packerInput/packer: plugin process exited
[<log_id>] PACKER Done exporting Packer logs to Azure Storage.

Lösung

Die Warnung oben kann ignoriert werden.

Überspringen der Imageerstellung

Warnung

[<log_id>] PACKER 2023/09/14 19:00:18 ui: ==> azure-arm:  -> Snapshot ID : '/subscriptions/<subscription_id>/resourceGroups/<resourcegroup_name>/providers/Microsoft.Compute/snapshots/<snapshot_name>'
[<log_id>] PACKER 2023/09/14 19:00:18 ui: ==> azure-arm: Skipping image creation...
[<log_id>] PACKER 2023/09/14 19:00:18 ui: ==> azure-arm:
[<log_id>] PACKER ==> azure-arm: Deleting individual resources ...
[<log_id>] PACKER 2023/09/14 19:00:18 packer-plugin-azure plugin: 202

Lösung

Die Warnung oben kann ignoriert werden.

Ressource nicht gefunden

Fehler

  "provisioningState": "Succeeded",
  "lastRunStatus": {
   "startTime": "2020-05-01T00:13:52.599326198Z",
   "endTime": "2020-05-01T00:15:13.62366898Z",
   "runState": "Failed",
   "message": "network.InterfacesClient#UpdateTags: Failure responding to request: StatusCode=404 -- Original Error: autorest/azure: Service returned an error. Status=404 Code=\"ResourceNotFound\" Message=\"The Resource 'Microsoft.Network/networkInterfaces/aibpls7lz2e.nic.4609d697-be0a-4cb0-86af-49b6fe877fe1' under resource group 'IT_aibImageRG200_window2019VnetTemplate01_9988723b-af56-413a-9006-84130af0e9df' was not found.\""
  },

Ursache

Fehlende Berechtigungen.

Lösung

Überprüfen Sie VM Image Builder erneut, um sicherzustellen, dass alle erforderlichen Berechtigungen vorhanden sind.

Weitere Informationen zum Konfigurieren von Berechtigungen finden Sie unter Konfigurieren der VM Image Builder-Berechtigungen mithilfe der Azure CLI oder Konfigurieren der VM Image Builder-Berechtigungen mithilfe von PowerShell.

Sysprep-Timing

Fehler

[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: Write-Output '>>> Waiting for GA Service (RdAgent) to start ...'
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: while ((Get-Service RdAgent) -and ((Get-Service RdAgent).Status -ne 'Running')) { Start-Sleep -s 5 }
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: Write-Output '>>> Waiting for GA Service (WindowsAzureTelemetryService) to start ...'
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: while ((Get-Service WindowsAzureTelemetryService) -and ((Get-Service WindowsAzureTelemetryService).Status -ne 'Running')) { Start-Sleep -s 5 }
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: Write-Output '>>> Waiting for GA Service (WindowsAzureGuestAgent) to start ...'
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: while ((Get-Service WindowsAzureGuestAgent) -and ((Get-Service WindowsAzureGuestAgent).Status -ne 'Running')) { Start-Sleep -s 5 }
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: Write-Output '>>> Sysprepping VM ...'
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: if( Test-Path $Env:SystemRoot\system32\Sysprep\unattend.xml ) {
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm:   Remove-Item $Env:SystemRoot\system32\Sysprep\unattend.xml -Force
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: }
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: & $Env:SystemRoot\System32\Sysprep\Sysprep.exe /oobe /generalize /quiet /quit
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: while($true) {
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm:   $imageState = (Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State).ImageState
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm:   Write-Output $imageState
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm:   if ($imageState -eq 'IMAGE_STATE_GENERALIZE_RESEAL_TO_OOBE') { break }
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm:   Start-Sleep -s 5
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: }
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: Write-Output '>>> Sysprep complete ...'
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: >>> Waiting for GA Service (RdAgent) to start ...
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: >>> Waiting for GA Service (WindowsAzureTelemetryService) to start ...
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: >>> Waiting for GA Service (WindowsAzureGuestAgent) to start ...
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: >>> Sysprepping VM ...
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: IMAGE_STATE_COMPLETE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT ==> azure-arm: Get-Service : Cannot find any service with service name 'WindowsAzureGuestAgent'.
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT ==> azure-arm: At C:\DeprovisioningScript.ps1:6 char:9
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT ==> azure-arm: + while ((Get-Service WindowsAzureGuestAgent) -and ((Get-Service Window ...
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT ==> azure-arm: +         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT ==> azure-arm:     + CategoryInfo          : ObjectNotFound: (WindowsAzureGuestAgent:String) [Get-Service], ServiceCommandException
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT ==> azure-arm:     + FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.GetServiceCommand
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT ==> azure-arm:
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: IMAGE_STATE_UNDEPLOYABLE
...
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT     azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER ERR 2020/05/05 22:26:17 Cancelling builder after context cancellation context canceled
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT Cancelling build after receiving terminated
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER ERR 2020/05/05 22:26:17 packer: 2020/05/05 22:26:17 Cancelling provisioning due to context cancellation: context canceled
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT ==> azure-arm:
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER ERR 2020/05/05 22:26:17 packer: 2020/05/05 22:26:17 Cancelling hook after context cancellation context canceled
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT ==> azure-arm: The resource group was not created by Packer, deleting individual resources ...
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER ERR ==> azure-arm: The resource group was not created by Packer, deleting individual resources ...

Ursache

Aufgrund der VM-Größe D1_V2 kann ein Timingproblem auftreten. Wenn wenige Anpassungen ausgeführt werden müssen und diese in weniger als drei Sekunden abgeschlossen sind, führt VM Image Builder Sysprep-Befehle aus, um die Bereitstellung aufzuheben. Wenn VM Image Builder die Bereitstellung aufhebt, überprüft der Befehl Sysprep den WindowsAzureGuestAgent, der möglicherweise nicht vollständig installiert ist und das Timingproblem auslöst.

Lösung

Um das Timingproblem zu vermeiden, können Sie die VM-Größe erhöhen oder eine Anpassung des PowerShell-Energiesparzustands um 60 Sekunden hinzufügen.

Nicht registrierter Anbieter von Azure Container Instances

Fehler

Azure Container Instances provider not registered for your subscription.

Ursache

In Ihrem Vorlagenabonnement ist der Anbieter von Azure Container Instances nicht registriert.

Lösung

Registrieren Sie den Anbieter von Azure Container Instances für Ihr Vorlagenabonnement und fügen Sie die Azure CLI- oder PowerShell-Befehle hinzu:

  • Azure-Befehlszeilenschnittstelle: az provider register -n Microsoft.ContainerInstance
  • PowerShell: Register-AzResourceProvider -ProviderNamespace Microsoft.ContainerInstance

Azure Container Instances-Kontingent überschritten

Fehler

Azure Container Instances quota exceeded"

Ursache

Das ACI-Kontingent (Azure Container Instances) Ihres Abonnements reicht für die erfolgreiche Imageerstellung durch Azure Image Builder nicht aus.

Lösung

Sie können wie folgt vorgehen, um das ACI-Kontingent für Azure Image Builder verfügbar zu machen:

  • Suchen Sie nach anderen Verwendungen von Azure Container Instances in Ihrem Abonnement, und entfernen Sie alle nicht benötigten Instanzen, um das Kontingent für Azure Image Builder verfügbar zu machen.
  • Azure Image Builder stellt ACI nur vorübergehend während eines Buildvorgangs bereit. Diese Instanzen werden nach Abschluss des Buildvorgangs gelöscht. Wenn in Ihrem Abonnement zu viele gleichzeitige Imagebuildvorgänge stattfinden, können Sie ggf. einige der Imagebuildvorgänge verzögern. Dadurch wird die gleichzeitige Nutzung von ACI in Ihrem Abonnement reduziert. Wenn Ihre Imagevorlagen für automatische Imagebuildvorgänge unter Verwendung von Triggern eingerichtet sind, werden solche fehlerhaften Buildvorgänge automatisch von Azure Image Builder wiederholt.
  • Sollten die aktuellen ACI-Grenzwerte für Ihr Abonnement zu niedrig sein, um Ihre Imageerstellungsszenarien zu unterstützen, können Sie eine Erhöhung Ihres ACI-Kontingents anfordern.

Hinweis

ACI-Ressourcen sind für isolierte Imagebuilds erforderlich.

Zu viele bereitgestellte ACI-Instanzen innerhalb eines bestimmten Zeitraums

Fehler

„Zu viele bereitgestellte ACI-Instanzen innerhalb eines bestimmten Zeitraums“

Ursache

Das ACI-Kontingent (Azure Container Instances) Ihres Abonnements reicht für die erfolgreiche gleichzeitige Imageerstellung durch Azure Image Builder nicht aus.

Lösung

Sie können folgendermaßen vorgehen:

  • Wiederholen Sie die nicht erfolgreichen Buildvorgänge mit weniger Parallelität.
  • Sollten die aktuellen ACI-Grenzwerte für Ihr Abonnement zu niedrig sein, um Ihre Imageerstellungsszenarien zu unterstützen, können Sie eine Erhöhung Ihres ACI-Kontingents anfordern.

Fehler für isolierten Imagebuild

Fehler

Azure Image Builder-Buildvorgänge sind aufgrund eines isolierten Imagebuilds nicht erfolgreich.

Ursache

Buildvorgänge von Azure Image Builder sind möglicherweise aus Gründen, die an anderer Stelle in diesem Dokument aufgeführt sind, nicht erfolgreich. In seltenen Fällen tritt jedoch aufgrund von isolierten Imagebuilds ein Fehler für einen Build auf (abhängig von Ihrem Szenario, von Abonnementkontingenten oder von einem unvorhergesehenen Dienstfehler). Weitere Informationen zu isolierten Imagebuilds finden Sie hier.

Lösung

Wenn Sie feststellen, dass für einen Build ein Fehler aufgrund von isolierten Imagebuilds auftritt, haben Sie folgende Möglichkeiten:

  • Vergewissern Sie sich, dass keine Richtlinie von Azure Policy die Bereitstellung von Ressourcen blockiert, die im Abschnitt „Voraussetzungen“ angegeben sind – insbesondere Azure Container Instances, Azure Virtual Network-Instanzen und private Azure-Endpunkte.
  • Stellen Sie sicher, dass Ihr Abonnement über ein ausreichendes Kontingent an Azure-Containerinstanzen verfügt, um alle Ihre gleichzeitigen Imagebuildvorgänge zu unterstützen. Weitere Informationen finden Sie unter Azure Container Instances-Kontingent überschritten.

Azure Image Builder ist gerade dabei, isolierte Imagebuilds bereitzustellen. Spezifische Imagevorlagen sind nicht an isolierte Imagebuilds gebunden, und die gleiche Imagevorlage kann während verschiedener Buildvorgänge isolierte Imagebuilds verwenden (oder auch nicht). Sie können die folgenden Schritte ausführen, um Ihren Build vorübergehend ohne isolierte Imagebuilds auszuführen.

  • Wiederholen Sie Ihren Buildvorgang. Da Imagevorlagen nicht an das Feature für isolierte Imagebuilds gebunden sind, ist es sehr wahrscheinlich, dass die Wiederholung eines Buildvorgangs ohne isolierte Imagebuilds ausgeführt wird.

Sollte keine dieser Lösungen das Problem mit nicht erfolgreichen Imagebuildvorgängen lösen, können Sie sich an den Azure-Support wenden, um isolierte Imagebuilds vorübergehend für Ihr Abonnement zu deaktivieren. Weitere Informationen finden Sie unter Erstellen einer Azure-Supportanfrage.

Hinweis

Isolierte Imagebuilds werden letztendlich in allen Regionen und Vorlagen aktiviert. Daher sollten die oben genannten Entschärfungen als temporär betrachtet werden, und die zugrunde liegende Ursache von Buildfehlern muss behoben werden.

Der Build wird abgebrochen, nachdem der Kontextabbruchkontext abgebrochen wurde

Fehler

PACKER ERR 2020/03/26 22:11:23 Cancelling builder after context cancellation context canceled
PACKER OUT Cancelling build after receiving terminated
PACKER ERR 2020/03/26 22:11:23 packer-builder-azure-arm plugin: Cancelling hook after context cancellation context canceled
..
PACKER ERR 2020/03/26 22:11:23 packer-builder-azure-arm plugin: Cancelling provisioning due to context cancellation: context canceled
PACKER ERR 2020/03/26 22:11:25 packer-builder-azure-arm plugin: [ERROR] Remote command exited without exit status or exit signal.
PACKER ERR 2020/03/26 22:11:25 packer-builder-azure-arm plugin: [INFO] RPC endpoint: Communicator ended with: 2300218
PACKER ERR 2020/03/26 22:11:25 [INFO] 148974 bytes written for 'stdout'
PACKER ERR 2020/03/26 22:11:25 [INFO] 0 bytes written for 'stderr'
PACKER ERR 2020/03/26 22:11:25 [INFO] RPC client: Communicator ended with: 2300218
PACKER ERR 2020/03/26 22:11:25 [INFO] RPC endpoint: Communicator ended with: 2300218

Ursache

VM Image Builder verwendet Port 22 (Linux) oder 5986 (Windows), um eine Verbindung mit der Build-VM herzustellen. Dieser Fehler kann auftreten, wenn während der Erstellung eines Imagebuilds die Verbindung zwischen Dienst und Build-VM getrennt wird. Die Gründe für die Trennung können variieren, aber das Aktivieren oder Konfigurieren einer Firewall im Skript kann die zuvor erwähnten Ports blockieren.

Lösung

Überprüfen Sie Ihre Skripts auf Firewalländerungen/-aktivierung oder Änderungen an SSH oder WinRM, und stellen Sie sicher, dass alle Änderungen eine konstante Konnektivität zwischen dem Dienst und der Build-VM an den oben genannten Ports zulassen. Weitere Informationen finden Sie unter Netzwerkoptionen für VM Image Builder.

JWT-Fehler im Protokoll früh im Build

Fehler

Früh im Buildprozess tritt ein Fehler auf, und das Protokoll weist auf einen JWT-Fehler (JSON Web Token) hin:

PACKER OUT Error: Failed to prepare build: "azure-arm"
PACKER ERR
PACKER OUT
PACKER ERR * client_jwt will expire within 5 minutes, please use a JWT that is valid for at least 5 minutes
PACKER OUT 1 error(s) occurred:

Ursache

Der buildTimeoutInMinutes-Wert in der Vorlage ist auf 1 bis 5 Minuten festgelegt.

Lösung

Wie unter Erstellen einer VM Image Builder-Vorlage beschrieben, muss das Timeout auf 0 festgelegt werden, um den Standardwert zu verwenden, oder auf mehr als 5 Minuten, um den Standardwert zu überschreiben. Ändern Sie das Timeout in Ihrer Vorlage auf 0, um den Standardwert zu verwenden, oder mindestens auf 6 Minuten.

Fehler beim Löschen von Ressourcen

Fehler

Zwischenressourcen werden gegen Ende des Buildvorgangs bereinigt, und im Anpassungsprotokoll können mehrere Fehler beim Löschen von Ressourcen angezeigt werden:

PACKER OUT ==> azure-arm: Error deleting resource. Will retry.
...
PACKER OUT ==> azure-arm: Error: network.PublicIPAddressesClient#Delete: Failure sending request: StatusCode=0 -- Original Error: Code="PublicIPAddressCannotBeDeleted" Message=...
...
PACKER ERR 2022/03/07 18:43:06 packer-plugin-azure plugin: 2022/03/07 18:43:06 Retryable error: network.SecurityGroupsClient#Delete: Failure sending request: StatusCode=0 -- Original Error: Code="InUseNetworkSecurityGroupCannotBeDeleted"...

Ursache

Diese Fehlerprotokollmeldungen sind größtenteils unbedenklich, da das Löschen von Ressourcen mehrmals versucht wird und in der Regel schlussendlich auch gelingt. Sie können dies überprüfen, indem Sie die Löschprotokolle durchsehen, bis Sie eine Erfolgsmeldung finden. Alternativ dazu können Sie die Ressourcengruppe für den Stagingprozess untersuchen, um zu überprüfen, ob die Ressource gelöscht wurde.

Diese Beobachtungen sind besonders wichtig bei nicht erfolgreichen Buildausführungen, da solche Fehlermeldungen Sie zu der Annahme verleiten könnten, dass sie der Grund für die nicht erfolgreiche Ausführung sind, auch wenn die Fehler eigentlich woanders liegen.

Fehler

Wenn Images bei der Löschung von Vorlagen hängen bleiben, enthält das Anpassungsprotokoll möglicherweise den folgenden Fehler:

error deleting resource id /subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Network/networkInterfaces/<networkInterfacName>: resources.Client#DeleteByID: Failure sending request: StatusCode=400 --
Original Error: Code="NicInUseWithPrivateEndpoint"
Message="Network interface /subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Network/networkInterfaces/<networkInterfacName> cannot be deleted because it is currently in use with an private endpoint (/subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Network/privateEndpoints/<pIname>)." Details=[]

Ursache

Der Fehler tritt auf, weil die Netzwerkschnittstelle derzeit mit einem privaten Endpunkt verwendet wird.

Lösung

Um das Problem zu beheben, löschen Sie die folgenden Ressourcen einzeln in der bestimmten Reihenfolge:

  1. Verbindung mit privatem Endpunkt. Sie können dies in der Private Link-Dienstressource finden, indem Sie auf der Ressourcenseite des Private Link-Diensts zur Registerkarte „Verbindungen mit privaten Endpunkten“ wechseln.
  2. Private Link-Dienst.
  3. Netzwerkschnittstelle und Lastenausgleich.
  4. Ressourcengruppe.
  5. Imagevorlage.

Wenn Sie weitere Unterstützung benötigen, können Sie sich an den Azure-Support wenden, um den Fehler beim Löschvorgang zu beheben.

Verteilungsziel in Updateanforderung nicht gefunden

Fehler

Validation failed: Distribute target with Runoutput name <runoutputname> not found in the update request. Deleting a distribution target is not allowed.

Ursache

Dieser Fehler tritt auf, wenn ein vorhandenes Verteilungsziel nicht im Anforderungstext für den Patch gefunden wird.

Lösung

Das Verteilungsarray sollte alle Verteilungsziele enthalten, d. h. neue Ziele (falls vorhanden), vorhandene Ziele ohne Änderung und aktualisierte Ziele. Wenn Sie ein vorhandenes Verteilungsziel entfernen möchten, wird die Imagevorlage gelöscht und neu erstellt, da das Löschen eines Verteilungsziels über die Patch-API derzeit nicht unterstützt wird.

Fehlende Pflichtfelder

Fehler

Validation failed: 'ImageTemplate.properties.distribute[<index>]': Missing field <fieldname>. Please review http://aka.ms/azvmimagebuildertmplref for details on fields required in the Image Builder Template.

Ursache

Dieser Fehler tritt auf, wenn ein Pflichtfeld in einem Verteilungsziel fehlt.

Lösung

Wenn Sie eine Anforderung erstellen, müssen Sie jedes erforderliche Feld in einem Verteilungsziel angeben, auch wenn keine Änderung vorhanden ist.

DevOps-Aufgaben

Problembehandlung für den Task

Der Task wird nur dann nicht erfolgreich ausgeführt, wenn während der Anpassung ein Fehler auftritt. In diesem Fall meldet der Task den Fehler und behält die Stagingressourcengruppe mit den Protokollen bei, damit Sie das Problem identifizieren können.

Um das Protokoll zu finden, müssen Sie den Vorlagennamen kennen. Wechseln Sie zu Pipeline>fehlerhafter Build, und führen Sie einen Drilldown zum DevOps-Task von VM Image Builder aus.

Hier sehen Sie das Protokoll und einen Vorlagennamen:

start reading task parameters...
found build at:  /home/vsts/work/r1/a/_ImageBuilding/webapp
end reading parameters
getting storage account details for aibstordot1556933914
created archive /home/vsts/work/_temp/temp_web_package_21475337782320203.zip
Source for image:  { type: 'SharedImageVersion',
  imageVersionId: '/subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/galleries/<galleryName>/images/<imageDefName>/versions/<imgVersionNumber>' }
template name:  t_1556938436xxx
  1. Wechseln Sie zum Azure-Portal, suchen Sie in der Ressourcengruppe nach dem Vorlagennamen, und suchen Sie dann nach der Ressourcengruppe, indem Sie „IT_*“ eingeben.
  2. Wählen Sie den Speicherkontonamen und dann >Blobs>Container>Protokolle aus.

Problembehandlung bei erfolgreichen Builds

Möglicherweise müssen Sie gelegentlich erfolgreiche Builds untersuchen und ihre Protokolle überprüfen. Wie bereits erwähnt, wird die Stagingressourcengruppe, die die Protokolle enthält, bei der Bereinigung gelöscht, wenn der Imagebuild erfolgreich ausgeführt wurde. Um eine automatische Bereinigung zu verhindern, können Sie jedoch nach dem Inlinebefehl einen sleep-Wert angeben und dann die Protokolle anzeigen, während der Build angehalten wird. Führen Sie hierzu folgende Schritte aus:

  1. Aktualisieren Sie den Inlinebefehl, indem Sie Write-Host / Echo “Sleep” hinzufügen. Damit erhalten Sie genügend Zeit, um im Protokoll zu suchen.
  2. Fügen Sie mit einem Start-Sleep-Cmdlet oder einem Sleep-Linux-Befehl einen sleep-Wert von mindestens 10 Minuten hinzu.
  3. Verwenden Sie diese Methode, um den Protokollspeicherort zu ermitteln, und fahren Sie dann mit dem Herunterladen oder Überprüfen des Protokolls fort, bis sleep erreicht wird.

Der Vorgang wurde abgebrochen.

Fehler

2020-05-05T18:28:24.9280196Z ##[section]Starting: Azure VM Image Builder Task
2020-05-05T18:28:24.9609966Z ==============================================================================
2020-05-05T18:28:24.9610739Z Task         : Azure VM Image Builder Test
2020-05-05T18:28:24.9611277Z Description  : Build images using Azure Image Builder resource provider.
2020-05-05T18:28:24.9611608Z Version      : 1.0.18
2020-05-05T18:28:24.9612003Z Author       : Microsoft Corporation
2020-05-05T18:28:24.9612718Z Help         : For documentation, and end to end example, please visit: http://aka.ms/azvmimagebuilderdevops
2020-05-05T18:28:24.9613390Z ==============================================================================
2020-05-05T18:28:26.0651512Z start reading task parameters...
2020-05-05T18:28:26.0673377Z found build at:  d:\a\r1\a\_AppsAndImageBuilder\webApp
2020-05-05T18:28:26.0708785Z end reading parameters
2020-05-05T18:28:26.0745447Z getting storage account details for aibstagstor1565047758
2020-05-05T18:28:29.8812270Z created archive d:\a\_temp\temp_web_package_09737279437949953.zip
2020-05-05T18:28:33.1568013Z Source for image:  { type: 'PlatformImage',
2020-05-05T18:28:33.1584131Z   publisher: 'MicrosoftWindowsServer',
2020-05-05T18:28:33.1585965Z   offer: 'WindowsServer',
2020-05-05T18:28:33.1592768Z   sku: '2016-Datacenter',
2020-05-05T18:28:33.1594191Z   version: '14393.3630.2004101604' }
2020-05-05T18:28:33.1595387Z template name:  t_1588703313152
2020-05-05T18:28:33.1597453Z starting put template...
2020-05-05T18:28:52.9278603Z put template:  Succeeded
2020-05-05T18:28:52.9281282Z starting run template...
2020-05-05T19:33:14.3923479Z ##[error]The operation was canceled.
2020-05-05T19:33:14.3939721Z ##[section]Finishing: Azure VM Image Builder Task

Ursache

Wenn der Build nicht von einem Benutzer abgebrochen wurde, wurde er vom Azure DevOps-Benutzer-Agent abgebrochen. Am wahrscheinlichsten ist aufgrund von Azure DevOps-Funktionen nach einer Stunde ein Timeout aufgetreten. Wenn Sie ein privates Projekt und einen Agent verwenden, erhalten Sie eine Buildzeit von 60 Minuten. Wenn der Buildvorgang diesen Timeoutwert überschreitet, bricht DevOps den laufenden Task ab.

Weitere Informationen zu Azure DevOps-Funktionen und -Einschränkungen finden Sie im Abschnitt zu von Microsoft gehosteten Agents.

Lösung

Sie können eigene DevOps-Agents hosten oder versuchen, die Buildzeit zu verkürzen. Bei einer Verteilung an Azure Compute Gallery können Sie die Agents beispielsweise in einer Region oder asynchron replizieren.

Langsame Windows-Anmeldung

Fehler

Dieser Fehler kann auftreten, wenn Sie mithilfe von VM Image Builder ein Windows 10 Image erstellen, aus diesem Image eine VM erstellen und dann das Remotedesktopprotokoll (RDP) verwenden. Sie warten mehrere Minuten auf dem ersten Anmeldebildschirm, und dann wird auf einem Bluescreen die folgende Meldung angezeigt:

Please wait for the Windows Modules Installer

Lösung

  1. Überprüfen Sie Folgendes im Imagebuild:

    • Es gibt keine ausstehenden Neustarts, die aufgrund der Hinzufügung einer Windows-Neustartanpassung bei der letzten Anpassung erforderlich sind.
    • Die Installation sämtlicher Softwareprogramme ist abgeschlossen.
  2. Fügen Sie die Option /mode:vm zum Sysprep-Standardbefehl hinzu, der von VM Image Builder verwendet wird. Weitere Informationen finden Sie unter „Aus VM Image Builder-Images erstellte VMs werden nicht erfolgreich erstellt“ im Abschnitt Überschreiben der Befehle.

Aus VM Image Builder-Images erstellte VMs werden nicht erfolgreich erstellt

VM Image Builder führt nach jeder Imageanpassungsphase standardmäßig Code zum Aufheben der Bereitstellung aus, um das Image zu generalisieren. Generalisieren eines Image bedeutet, es so einzurichten, dass damit mehrere VMs erstellt werden können. Im Rahmen des Prozesses können Sie VM-Einstellungen wie Hostname, Benutzername usw. übergeben. VM Image Builder führt unter Windows Sysprep und unter Linux waagent -deprovision aus.

Unter Windows verwendet VM Image Builder einen generischen Sysprep-Befehl. Dieser Befehl ist jedoch möglicherweise nicht für jede erfolgreiche Windows-Generalisierung geeignet. Mit VM Image Builder können Sie den Sysprep-Befehl anpassen. Beachten Sie, dass VM Image Builder ein Imageautomatisierungstool ist, das für die erfolgreiche Ausführung des Befehls Sysprep zuständig ist. Sie benötigen jedoch möglicherweise verschiedene Sysprep-Befehle, damit Ihr Image wiederverwendbar wird. Unter Linux verwendet VM Image Builder einen generischen waagent -deprovision+user-Befehl. Weitere Informationen finden Sie in der Microsoft Azure-Dokumentation zu Linux-Agents.

Wenn Sie eine vorhandene Anpassung migrieren und verschiedene Sysprep- oder waagent-Befehle verwenden, können Sie die generischen Befehle von VM Image Builder ausprobieren. Wenn die VM-Erstellung nicht erfolgreich ist, verwenden Sie Ihre vorherigen Sysprep- oder waagent-Befehle.

Angenommen, Sie haben VM Image Builder erfolgreich zum Erstellen eines benutzerdefinierten Windows-Images verwendet, aber Sie konnten aus dem Image keine VM erstellen. Die VM-Erstellung kann z. B. nicht abgeschlossen werden, oder es tritt ein Timeout auf. Führen Sie in diesem Fall eine der folgenden Aktionen aus:

  • Sehen Sie sich die Sysprep-Dokumentation für Windows Server an.
  • Reichen Sie beim für Windows Server-Sysprep zuständigen Kundendienstteam eine Supportanfrage ein. Dieses Team kann Ihnen bei der Problembehandlung helfen und Ihnen den richtigen Sysprep-Befehl nennen.

Befehlsspeicherorte und Dateinamen

Windows:

c:\DeprovisioningScript.ps1

Linux:

/tmp/DeprovisioningScript.sh

Der Sysprep-Befehl: Windows

Write-Output '>>> Waiting for GA Service (RdAgent) to start ...'
while ((Get-Service RdAgent).Status -ne 'Running') { Start-Sleep -s 5 }
Write-Output '>>> Waiting for GA Service (WindowsAzureTelemetryService) to start ...'
while ((Get-Service WindowsAzureTelemetryService) -and ((Get-Service WindowsAzureTelemetryService).Status -ne 'Running')) { Start-Sleep -s 5 }
Write-Output '>>> Waiting for GA Service (WindowsAzureGuestAgent) to start ...'
while ((Get-Service WindowsAzureGuestAgent).Status -ne 'Running') { Start-Sleep -s 5 }
Write-Output '>>> Sysprepping VM ...'
if( Test-Path $Env:SystemRoot\system32\Sysprep\unattend.xml ) {
  Remove-Item $Env:SystemRoot\system32\Sysprep\unattend.xml -Force
}
& $Env:SystemRoot\System32\Sysprep\Sysprep.exe /oobe /generalize /quiet /quit
while($true) {
  $imageState = (Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State).ImageState
  Write-Output $imageState
  if ($imageState -eq 'IMAGE_STATE_GENERALIZE_RESEAL_TO_OOBE') { break }
  Start-Sleep -s 5
}
Write-Output '>>> Sysprep complete ...'

Der -deprovision-Befehl: Linux

sudo /usr/sbin/waagent -force -deprovision+user && export HISTSIZE=0 && sync

Überschreiben der Befehle

Verwenden Sie zum Überschreiben der Befehle die PowerShell- oder Shell-Skriptbereitstellungen, um die Befehlsdateien mit dem korrekten Dateinamen zu erstellen und sie in die zuvor aufgeführten Verzeichnisse einzufügen. VM Image Builder liest diese Befehle und schreibt die Ausgabe in die Datei customization.log.

Support

Wenn Sie den Leitfaden gelesen haben und weiterhin vor Problemen stehen, können Sie einen Supportfall eröffnen. Wählen Sie das richtige Produkt und Supportthema aus. Dadurch wird sichergestellt, dass Sie mit dem Supportteam für Azure VM Image Builder in Verbindung gesetzt werden.

Auswahl des Produkts für die Anfrage:

Product Family: Azure
Product: Virtual Machine Running (Window\Linux)
Support Topic: Azure Features
Support Subtopic: Azure Image Builder

Nächste Schritte

Weitere Informationen finden Sie unter Übersicht über VM Image Builder.