Udostępnij za pośrednictwem


Rozwiązywanie problemów dotyczących usługi Azure VM Image Builder

Dotyczy: ✔️ Maszyny wirtualne z systemem Linux — elastyczne zestawy skalowania ✔️

Skorzystaj z tego artykułu, aby rozwiązać typowe problemy, które mogą wystąpić podczas korzystania z narzędzia Azure VM Image Builder.

Błędy konstruktora obrazów maszyny wirtualnej mogą wystąpić w dwóch obszarach:

  • Podczas przesyłania szablonu obrazu
  • Podczas budowania obrazów

Wymagania wstępne

Te wymagania wstępne dotyczą tworzenia kompilacji:

  • Usługa Vm Image Builder komunikuje się z maszyną wirtualną kompilacji przy użyciu zdalnego zarządzania systemem Windows (WinRM) lub protokołu Secure Shell (SSH). Nie wyłączaj tych ustawień w ramach kompilacji.

  • Konstruktor obrazów maszyny wirtualnej tworzy zasoby w przejściowej grupie zasobów w ramach kompilacji. Dokładna lista zasobów zależy od konfiguracji sieci , którą określa szablon obrazu. Upewnij się, że usługa Azure Policy nie uniemożliwia Azure VM Image Builder tworzenia lub używania niezbędnych zasobów.

  • Upewnij się, że usługa Azure Policy nie instaluje niezamierzonych funkcji na maszynie wirtualnej kompilacji lub innych zasobach przejściowych, takich jak rozszerzenia platformy Azure lub modyfikacje tagów.

  • Upewnij się, że konstruktor obrazów maszyny wirtualnej ma odpowiednie uprawnienia do odczytu/zapisu obrazów do nawiązywania połączenia z kontem magazynu. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją uprawnień dla interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell.

  • VM Image Builder kończy się niepowodzeniem kompilacji, jeśli skrypty lub polecenia wbudowane kończą się niepowodzeniem z błędami (niezerowe kody zakończenia). Upewnij się, że przetestowano skrypty niestandardowe i sprawdzono, czy działają bez błędu (kod 0 zakończenia) lub wymagają wprowadzenia danych przez użytkownika. Aby uzyskać więcej informacji, zobacz Tworzenie obrazu usługi Azure Virtual Desktop przy użyciu VM Image Builder i PowerShell).

  • Upewnij się, że twoja subskrypcja ma wystarczający limit przydziału dla usługi Azure Container Instances.

    Każda kompilacja obrazu może wdrażać do jednego tymczasowego zasobu usługi Azure Container Instances, który składa się z czterech standardowych rdzeni, w przejściowej grupie zasobów. Te zasoby są wymagane dla izolowanych kompilacji obrazów.

Uwaga / Notatka

Obrazy ze wzmocnionymi zabezpieczeniami CIS (Linux lub Windows) w Azure Marketplace, zarządzane przez Center for Internet Security (CIS), mogą powodować błędy kompilacji z usługą VM Image Builder z powodu ich konfiguracji. Przykład:

  • Obrazy CIS ze wzmocnionymi zabezpieczeniami dla systemu Windows mogą zakłócać łączność z usługą WinRM, co jest wymogiem wstępnym do budowy za pomocą narzędzia VM Image Builder.
  • Obrazy CIS ze wzmocnionymi zabezpieczeniami dla systemu Linux mogą nie działać z powodu problemów związanych z uprawnieniami.

Rozwiązywanie problemów z błędami przesyłania szablonu obrazu

Błędy przesyłania szablonu obrazu są zwracane tylko podczas przesyłania. W przypadku błędów przesyłania szablonu obrazu nie istnieje żaden dziennik błędów. Jeśli podczas przesyłania wystąpi błąd, możesz zwrócić błąd, sprawdzając stan szablonu. W szczególności przejrzyj ProvisioningState i ProvisioningErrorMessage/provisioningError.

Oto polecenie Azure CLI:

az image builder show --name $imageTemplateName  --resource-group $imageResourceGroup

Oto polecenie dla programu Azure PowerShell. Aby użyć programu Azure PowerShell, należy zainstalować moduły PowerShell VM Image Builder.

Get-AzImageBuilderTemplate -ImageTemplateName  <imageTemplateName> -ResourceGroupName <imageTemplateResourceGroup> | Select-Object ProvisioningState, ProvisioningErrorMessage

Oto dane wyjściowe błędu dla wersji 2020-02-14 i starszych:

{
  "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."
}

Oto dane wyjściowe błędu dla wersji 2021-10-01 i nowszych:

{
  "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."
  }
}

Ważne

Interfejs API w wersji 2021-10-01 wprowadza zmianę schematu błędów, który będzie częścią każdej przyszłej wersji interfejsu API. Jeśli masz jakiekolwiek automatyzacje narzędzia Image Builder maszyny wirtualnej platformy Azure, pamiętaj o nowych danych wyjściowych błędów podczas przełączania się do interfejsu API w wersji 2021-10-01 lub nowszej.

Zalecamy, aby po przełączeniu się do najnowszej wersji interfejsu API nie przywrócić starszej wersji. Jeśli wrócisz, musisz ponownie zmienić automatyzację, aby utworzyć wcześniejszy schemat błędów. Nie spodziewamy się, że schemat błędu zmieni się ponownie w przyszłych wersjach.

W poniższych sekcjach przedstawiono wskazówki dotyczące rozwiązywania problemów dla typowych błędów przesyłania szablonów obrazów.

Aktualizowanie lub uaktualnianie szablonów obrazów nie jest obecnie obsługiwane

Błąd

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

Przyczyna

Szablon już istnieje.

Rozwiązanie

Jeśli przesyłasz szablon konfiguracji obrazu i przesyłanie zakończy się niepowodzeniem, nadal istnieje artefakt szablonu, który uległ awarii. Usuń szablon, który zakończył się niepowodzeniem.

Nie można użyć przypisanej tożsamości zarządzanej w szablonie obrazu

Błąd

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.

Przyczyna

Istnieją przypadki, w których nie można użyć utworzonej tożsamości zarządzanej przypisanej do szablonu obrazu.

Jedną z możliwych przyczyn jest to, że szablon kreatora obrazów maszyn wirtualnych używa tymczasowej grupy zasobów dostarczonej przez klienta, a tożsamość zarządzana jest usuwana przed usunięciem szablonu obrazu. (Jest to scenariusz przejściowej grupy zasobów ).

Rozwiązanie

Użyj Azure CLI, aby zresetować tożsamość zarządzaną w szablonie obrazu. Pamiętaj, aby zaktualizować interfejs wiersza polecenia platformy Azure do wersji 2.45.0 lub nowszej.

Potwierdź tożsamość zarządzaną z docelowego szablonu Image Builder dla maszyny wirtualnej:

az image builder identity show -g <template resource group> -n <template name> 

Usuń tożsamość zarządzaną z docelowego szablonu narzędzia Image Builder maszyny wirtualnej:

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

Przypisz nową tożsamość do docelowego szablonu Image Builder maszyny wirtualnej.

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

Aby uzyskać więcej informacji na temat konfigurowania uprawnień, zobacz Konfigurowanie uprawnień konstruktora obrazów maszyny wirtualnej przy użyciu interfejsu wiersza polecenia platformy Azure lub Konfigurowanie uprawnień konstruktora obrazów maszyny wirtualnej przy użyciu programu PowerShell.

Przypisana tożsamość zarządzana nie jest autoryzowana do uzyskiwania dostępu do zasobu

Błąd

Not authorized to access the resource: <resource-not-able-to-access>. Please check the user assigned identity has the correct permissions. For more details, go to https://aka.ms/azvmimagebuilderts.

Przyczyna

Utworzona tożsamość zarządzana przypisana do szablonu obrazu nie ma wszystkich uprawnień dostępu do zasobu udostępnionego w komunikacie o błędzie.

Rozwiązanie

Potwierdź tożsamość zarządzaną z docelowego szablonu Image Builder dla maszyny wirtualnej:

az image builder identity show -g <template resource group> -n <template name> 

Przejrzyj przypisania ról dla tożsamości:

az role assignment list --assignee <identity_client_id_or_principal_id>

Przypisz wymaganą rolę. W razie potrzeby utwórz rolę z wymaganymi uprawnieniami.

Aby uzyskać więcej informacji na temat konfigurowania uprawnień, zobacz Konfigurowanie uprawnień konstruktora obrazów maszyny wirtualnej przy użyciu interfejsu wiersza polecenia platformy Azure lub Konfigurowanie uprawnień konstruktora obrazów maszyny wirtualnej przy użyciu programu PowerShell.

Operacja zasobu została zakończona z stanem aprowizacji terminalu "Niepowodzenie"

Błąd

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

Przyczyna

W większości przypadków błąd dotyczący niepowodzenia wdrażania zasobów występuje z powodu braku uprawnień. Konflikt z grupą zasobów inscenizacyjnych może również spowodować ten błąd.

Rozwiązanie

W zależności od scenariusza konstruktor obrazów maszyny wirtualnej może potrzebować uprawnień:

  • Źródłowy obraz lub grupa zasobów Galerii obliczeniowej Azure (dawniej Galeria obrazów udostępnionych).
  • Obraz dystrybucyjny lub zasób Azure Compute Gallery.
  • Konto magazynowe, kontener lub obiekt blob, do którego File uzyskuje dostęp konfigurator.

Upewnij się również, że nazwa grupy zasobów staging jest unikalna dla każdego szablonu obrazu.

Aby uzyskać więcej informacji na temat konfigurowania uprawnień, zobacz Konfigurowanie uprawnień konstruktora obrazów maszyny wirtualnej przy użyciu interfejsu wiersza polecenia platformy Azure lub Konfigurowanie uprawnień konstruktora obrazów maszyny wirtualnej przy użyciu programu PowerShell.

Wystąpił błąd podczas pobierania obrazu zarządzanego

Błąd

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

Przyczyna

Brak uprawnień.

Rozwiązanie

W zależności od scenariusza Kreator obrazów VM może potrzebować uprawnień:

  • Źródłowy obraz lub grupa zasobów usługi Azure Compute Gallery.
  • Obraz dystrybucji lub zasób usługi Azure Compute Gallery.
  • Konto magazynu, kontener lub obiekt blob, do którego dostęp uzyskuje File konfigurator.

Aby uzyskać więcej informacji na temat konfigurowania uprawnień, zobacz Konfigurowanie uprawnień konstruktora obrazów maszyny wirtualnej przy użyciu interfejsu wiersza polecenia platformy Azure lub Konfigurowanie uprawnień konstruktora obrazów maszyny wirtualnej przy użyciu programu PowerShell.

Krok kompilacji nie powiódł się dla wersji obrazu

Błąd

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

Przyczyna

Konstruktor obrazów maszyny wirtualnej nie może zlokalizować obrazu źródłowego.

Rozwiązanie

Upewnij się, że obraz źródłowy jest poprawny i istnieje w lokalizacji konstruktora obrazów maszyny wirtualnej.

Wystąpił błąd podczas pobierania pliku zewnętrznego do pliku lokalnego

Błąd

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

Przyczyna

Nazwa pliku lub lokalizacja jest niepoprawna lub lokalizacja nie jest osiągalna.

Rozwiązanie

Upewnij się, że plik jest osiągalny. Sprawdź, czy nazwa i lokalizacja są poprawne.

Niektóre repozytoria plików mogą używać nieobsługiwanych zestawów szyfrowania i powodować błędy pobierania w narzędziu Vm Image Builder. Przechowywanie plików i skryptów na koncie usługi Azure Storage w celu zapewnienia bezpiecznych zestawów szyfrowania i ułatwień dostępu przez narzędzie VM Image Builder. Aby uzyskać więcej informacji na temat sposobu przechowywania plików na kontach Azure Storage, zobacz Omówienie konta przechowywania.

Wystąpił błąd autoryzacji podczas tworzenia dysku

Kompilacja konstruktora obrazów maszyny wirtualnej kończy się niepowodzeniem z powodu błędu autoryzacji, który wygląda jak w poniższym przykładzie.

Błąd

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

Przyczyna

Ten błąd występuje, gdy próbujesz określić wcześniej współistniejącą grupę zasobów i sieć wirtualną w usłudze VM Image Builder z obrazem źródłowym systemu Windows.

Rozwiązanie

Musisz przypisać rolę Współautorów do grupy zasobów dla usługi głównej odpowiadającej aplikacji pierwszej strony VM Image Builder. Użyj następujących poleceń interfejsu wiersza polecenia platformy Azure lub instrukcji witryny Azure Portal.

Najpierw sprawdź, czy jednostka usługi jest skojarzona z aplikacją first-party konstruktora obrazów maszyny wirtualnej przy użyciu następującego polecenia interfejsu wiersza polecenia platformy Azure:

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

Następnie, aby zaimplementować to rozwiązanie przy użyciu interfejsu wiersza polecenia platformy Azure, użyj następującego polecenia:

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

Aby zaimplementować to rozwiązanie w portalu, postępuj zgodnie z instrukcjami w temacie Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal:

Rozwiązywanie problemów w przypadku kompilacji

W przypadku niepowodzeń kompilacji obrazu pobierz błąd z lastRunStatus pliku, a następnie przejrzyj szczegóły w customization.log pliku.

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

Dziennik dostosowywania

Uzyskiwanie dostępu do dzienników na żywo podczas kompilacji obrazu

Aby skutecznie monitorować postęp kompilacji obrazu, możesz uzyskać dostęp do dzienników na żywo generowanych przez narzędzie Vm Image Builder w usłudze Azure Container Instances. Te dzienniki zapewniają wgląd w proces kompilacji w czasie rzeczywistym. Pomagają one zidentyfikować wszelkie problemy lub potwierdzić, że kompilacja jest kontynuowana zgodnie z oczekiwaniami.

Aby zlokalizować dzienniki na żywo i je wyświetlić:

  1. Uruchom proces kompilacji obrazu.

  2. Przejdź do witryny Azure Portal i wybierz pozycję Grupy zasobów. Filtruj według subskrypcji, w której zainicjowano kompilację obrazu.

  3. Znajdź i wybierz tymczasową grupę zasobów skojarzona z kompilacją obrazu. Ta grupa zasobów zawiera zasoby kompilacji dla usługi Vm Image Builder. Aby uzyskać więcej informacji na temat przejściowej grupy zasobów, zobacz Właściwości: stagingResourceGroup.

  4. W tej grupie zasobów wyszukaj zasób o nazwie vmimagebuilder-build-container-**********. Jeśli strona nie jest widoczna, zaczekaj kilka minut i odśwież stronę.

  5. W okienku po lewej stronie w obszarze Ustawienia wybierz pozycję Kontenery.

  6. Przejdź do karty Dzienniki , aby wyświetlić dzienniki na żywo podczas procesu kompilacji obrazu.

Jeśli nie widzisz żadnych dzienników, spróbuj odświeżyć kontener po kilku minutach.

Pobieranie dziennika dostosowywania i/lub walidacji po kompilacji obrazu

Po zakończeniu kompilacji obrazu dzienniki dostosowywania i walidacji są przechowywane w kontenerze w ramach konta magazynu w przejściowej grupie zasobów utworzonej przez usługę Vm Image Builder. Aby uzyskać więcej informacji na temat grupy zasobów staging, zobacz Właściwości: stagingResourceGroup.

Aby zlokalizować i pobrać plik customization.log lub validation.log:

  1. W portalu Azure przejdź do odpowiedniego konta magazynu, filtrując konta magazynu w grupie zasobów tymczasowych utworzonej przez usługę VM Image Builder.

  2. W obszarze konta magazynu przejdź do pozycji Magazyn danych.

  3. Wybierz opcję Kontener , a następnie wybierz packerlogs kontener.

  4. W kontenerze packerlogs jest wyświetlanych wiele folderów, jeśli kompilacja obrazu została uruchomiona wiele razy. Te foldery są rozmieszczane od najstarszej kompilacji do najnowszej. Wybierz folder odpowiadający interesującej Cię kompilacji.

  5. W wybranym folderze wybierz customization.log plik i/lub validation.log , a następnie wybierz pozycję Pobierz , aby pobrać jego zawartość.

Etapy dziennika dostosowywania

Dziennik jest pełny. Obejmuje on kompilację obrazu, w tym wszelkie problemy z dystrybucją obrazów, takie jak replikacja usługi Azure Compute Gallery. Te problemy są wyświetlane w komunikacie o błędzie stanu szablonu obrazu.

Plik customization.log zawiera następujące etapy:

  1. Wdróż maszynę wirtualną i zależności kompilacji przy użyciu szablonów usługi Azure Resource Manager do przejściowej IT_ grupy zasobów. Ten etap obejmuje wiele POST żądań do dostawcy zasobów usługi VM Image Builder.

    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. Uzyskaj stan wdrożeń. Ten etap obejmuje stan każdego wdrożenia zasobów:

    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. Nawiąż połączenie z maszyną wirtualną kompilacji.

    W systemie Windows narzędzie VM Image Builder nawiązuje połączenie przy użyciu usługi WinRM:

    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.
    

    W systemie Linux narzędzie VM Image Builder nawiązuje połączenie przy użyciu protokołu SSH:

    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. Uruchamianie dostosowań. Gdy dostosowania są uruchamiane, można je zidentyfikować, przeglądając plik customization.log. Szukaj (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 has finished
    
  5. Anulowanie aprowizacji. Konstruktor obrazów maszyny wirtualnej dodaje ukryty konfigurator. Ten krok jest odpowiedzialny za przygotowanie maszyny wirtualnej do anulowania aprowizacji. W systemie Windows uruchamia się Sysprep (przy użyciu c:\DeprovisioningScript.ps1). W systemie Linux wykonywany jest waagent-deprovision (przy użyciu /tmp/DeprovisioningScript.sh).

    Przykład:

    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. Wyczyść. Po zakończeniu kompilacji zasoby narzędzia Image Builder maszyny wirtualnej zostaną usunięte:

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

Rozwiązywanie problemów ze skryptem lub dostosowywaniem wbudowanym

Poniższe porady mogą pomóc w rozwiązywaniu problemów ze skryptem lub dostosowywaniem wbudowanym:

  • Przetestuj kod przed dostarczeniem go do konstruktora obrazów maszyny wirtualnej.
  • Upewnij się, że usługi Azure Policy i Azure Firewall zezwalają na łączność ze zdalnymi zasobami.
  • Wyślij komentarze wyjściowe do konsoli przy użyciu polecenia Write-Host lub echo. Umożliwia to przeszukiwanie customization.log pliku.

Rozwiązywanie typowych błędów kompilacji

Wdrażanie szablonu nie powiodło się z powodu naruszenia zasad

Błąd

{
  "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>"
}

Przyczyna

Powyższy błąd naruszenia zasad jest wynikiem korzystania z usługi Azure Key Vault z wyłączonym dostępem publicznym. Obecnie konstruktor obrazów maszyny wirtualnej nie obsługuje tej konfiguracji.

Rozwiązanie

Musisz utworzyć magazyn kluczy, mając włączony dostęp publiczny.

Komenda budowania Packer kończy się niepowodzeniem

Błąd

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

Przyczyna

Niepowodzenie polecenia kompilacji pakietu jest niepowodzeniem dostosowywania.

Rozwiązanie

Przejrzyj dziennik, aby zlokalizować błędy konfiguratora. Wyszukaj (telemetry).

Przykład:

(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

Wdrażanie kończy się niepowodzeniem z powodu przekroczenia limitu czasu

Błąd

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'

Przyczyna

Kompilacja przekroczyła limit czasu. Ten błąd pojawia się w pliku lastRunStatus.

Rozwiązanie

  1. Przejrzyj plik customization.log. Zidentyfikuj ostatni program dostosowujący uruchomiony. Wyszukaj ciąg (telemetry), zaczynając od dołu dziennika.

  2. Sprawdź dostosowania skryptu. Dostosowania mogą nie wyłączać interakcji użytkownika dla poleceń, takich jak opcje quiet. Na przykład apt-get install -y powoduje, że wykonanie skryptu oczekuje na interakcję użytkownika.

  3. Jeśli używasz konfiguratora File do pobierania artefaktów większych niż 20 MB, zobacz sekcję obejścia.

  4. Przejrzyj błędy i zależności w skrypcie, które mogą powodować, że skrypt oczekuje.

  5. Jeśli spodziewasz się, że dostosowania wymagają więcej czasu, zwiększ wartość buildTimeoutInMinutes. Wartość domyślna to 4 godziny.

  6. Jeśli masz akcje intensywnie korzystające z zasobów, takie jak pobieranie gigabajtów plików, rozważ rozmiar podstawowej maszyny wirtualnej kompilacji.

    Usługa używa maszyny wirtualnej Standard_D1_v2. Maszyna wirtualna ma jeden procesor wirtualny i 3,5 GB pamięci. Jeśli pobierasz 50 GB, prawdopodobnie wyczerpasz zasoby maszyny wirtualnej i wystąpią błędy komunikacji między konstruktorem obrazów maszyny wirtualnej a maszyną wirtualną kompilacji. Ponów próbę kompilacji przy użyciu maszyny wirtualnej o większej ilości pamięci, ustawiając wartość VM_size.

Czas pobierania pliku jest długi

Błąd

[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

Przyczyna

Konfigurator File pobiera duży plik.

Rozwiązanie

Konfigurator File nadaje się tylko do pobierania małych plików (mniej niż 20 MB). W przypadku większych plików do pobrania użyj skryptu lub wbudowanego polecenia. Na przykład w systemie Linux można użyć polecenia wget lub curl. W systemie Windows można użyć polecenia Invoke-WebRequest.

Ciągłe ponowne uruchamianie systemu Windows kończy się niepowodzeniem z kodem błędu 1190

Błąd

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

Przyczyna

Krok Windows Update zostaje ogłoszony przedwcześnie w obrazach opartych na systemie Windows Server 2016.

Rozwiązanie

Zwiększ restartTimeout z 15 minut na 30 minut.

Błąd

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}

Przyczyna

VM Image Builder przekroczył limit czasu podczas oczekiwania na dodanie i zreplikowanie obrazu do Azure Compute Gallery.

Jeśli grafika jest umieszczana w galerii, możesz założyć, że budowanie grafiki zakończyło się pomyślnie. Jednak cały proces zakończył się niepowodzeniem, ponieważ kreator obrazów maszyny wirtualnej czekał na zakończenie replikacji przez Galerię Obliczeniową Azure.

Mimo że kompilacja nie powiodła się, replikacja będzie kontynuowana. Właściwości wersji obrazu można uzyskać, sprawdzając dystrybucję runOutput:

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

Rozwiązanie

Zwiększ wartość buildTimeoutInMinutes.

Zdarzenia informacyjne pokazują niskie zasoby systemu Windows

Błąd

[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

Przyczyna

Przyczyną jest wyczerpanie zasobów. Ten problem występuje często, gdy usługa Windows Update jest uruchamiana z domyślnym rozmiarem maszyny wirtualnej kompilacji, D1_V2.

Rozwiązanie

Zwiększ rozmiar maszyny wirtualnej kompilacji.

Proces budowania został zakończony, ale nie utworzono żadnych artefaktów

Ostrzeżenie

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

Rozwiązanie

Możesz bezpiecznie zignorować poprzednie ostrzeżenie.

Tworzenie obrazu zostało pominięte

Ostrzeżenie

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

Rozwiązanie

Możesz bezpiecznie zignorować poprzednie ostrzeżenie.

Nie można odnaleźć zasobu

Błąd

  "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.\""
  },

Przyczyna

Brak uprawnień.

Rozwiązanie

Sprawdź ponownie, czy konstruktor obrazów maszyny wirtualnej ma wszystkie wymagane uprawnienia.

Aby uzyskać więcej informacji na temat konfigurowania uprawnień, zobacz Konfigurowanie uprawnień konstruktora obrazów maszyny wirtualnej przy użyciu interfejsu wiersza polecenia platformy Azure lub Konfigurowanie uprawnień konstruktora obrazów maszyny wirtualnej przy użyciu programu PowerShell.

Wystąpił problem z czasem działania narzędzia Sysprep

Błąd

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

Przyczyna

Rozmiar maszyny wirtualnej D1_V2 może być przyczyną problemu z czasem. Jeśli dostosowania są ograniczone i uruchamiane są w czasie krótszym niż trzy sekundy, narzędzie VM Image Builder uruchamia Sysprep polecenia w celu deaprovisionowania. Gdy narzędzie do budowy obrazów maszyn wirtualnych Sysprep jest odinstalowywane, polecenie sprawdza WindowsAzureGuestAgent, co może nie być w pełni zainstalowane i może spowodować problem z synchronizacją.

Rozwiązanie

Aby uniknąć problemu z chronometrażem, możesz zwiększyć rozmiar maszyny wirtualnej lub dodać 60-sekundowe dostosowywanie uśpienia programu PowerShell.

Dostawca usługi Azure Container Instances jest wyrejestrowany

Błąd

Azure Container Instances provider not registered for your subscription.

Przyczyna

Subskrypcja szablonu nie ma zarejestrowanego dostawcy usługi Azure Container Instances.

Rozwiązanie

Zarejestruj dostawcę usługi Azure Container Instances dla subskrypcji szablonu i dodaj jedno z następujących poleceń:

  • Interfejs wiersza polecenia platformy Azure: az provider register -n Microsoft.ContainerInstance
  • Program Azure PowerShell: Register-AzResourceProvider -ProviderNamespace Microsoft.ContainerInstance

Subskrypcja przekroczyła przydział usługi Azure Container Instances

Błąd

Azure Container Instances quota exceeded

Przyczyna

Twoja subskrypcja nie ma wystarczającego limitu usługi Azure Container Instances, aby kreator obrazów maszyn wirtualnych mógł pomyślnie zbudować obraz.

Rozwiązanie

Możesz wykonać następujące czynności, aby udostępnić przydział usługi Azure Container Instances dla konstruktora obrazów maszyn wirtualnych:

  • Wyszukaj inne użycie usługi Azure Container Instances w ramach subskrypcji. Usuń wszystkie niepotrzebne wystąpienia, aby udostępnić przydział zasobów dla konstruktora obrazów maszyn wirtualnych.

  • Konstruktor obrazów maszyny wirtualnej wdraża usługi Azure Container Instances tylko tymczasowo podczas kompilacji. Te wystąpienia są usuwane po zakończeniu kompilacji.

    Jeśli w ramach subskrypcji jest uruchomionych zbyt wiele współbieżnych kompilacji obrazów, możesz rozważyć opóźnienie niektórych kompilacji obrazu. To opóźnienie zmniejsza współbieżne użycie usługi Azure Container Instances w ramach subskrypcji.

    Jeśli szablony obrazów są skonfigurowane na potrzeby automatycznych kompilacji obrazów za pośrednictwem wyzwalaczy, narzędzie VM Image Builder automatycznie ponawia próbę takich kompilacji, które zakończyły się niepowodzeniem.

  • Jeśli bieżące limity usługi Azure Container Instances dla twojej subskrypcji są zbyt niskie, aby obsługiwać scenariusze tworzenia obrazów, możesz zażądać zwiększenia limitu przydziału usługi Azure Container Instances.

Uwaga / Notatka

Zasoby Azure Container Instances są niezbędne dla Izolowanych Procesów Kompilacji Obrazów.

Zbyt wiele zasobów usługi Azure Container Instances jest wdrażanych w danym okresie

Błąd

Zbyt wiele instancji kontenerów Azure wdrożono w krótkim czasie.

Przyczyna

Twoja subskrypcja nie ma wystarczającego limitu przydziału usługi Azure Container Instances dla konstruktora obrazów maszyny wirtualnej, aby pomyślnie kompilować obrazy współbieżnie.

Rozwiązanie

Możesz wypróbować następujące rozwiązania:

  • Spróbuj ponownie wykonać nieudane kompilacje w mniej równoczesny sposób.
  • Jeśli bieżące limity usługi Azure Container Instances dla twojej subskrypcji są zbyt niskie, aby obsługiwać scenariusze tworzenia obrazów, możesz zażądać zwiększenia limitu przydziału usługi Azure Container Instances.

Funkcja izolowanych kompilacji obrazów powoduje błąd

Błąd

Kompilacje konstruktora obrazów maszyny wirtualnej kończą się niepowodzeniem z powodu kompilacji obrazów wyizolowanych.

Przyczyna

Kompilacje konstruktora obrazów maszyn wirtualnych mogą zakończyć się niepowodzeniem z powodów wymienionych w innym miejscu w tym artykule. Istnieje jednak niewielkie prawdopodobieństwo, że kompilacja zakończy się niepowodzeniem z powodu kompilacji obrazu izolowanego, w zależności od scenariusza, limitów przydziału subskrypcji lub nieoczekiwanego błędu usługi. Aby uzyskać więcej informacji, zobacz izolowane kompilacje obrazów.

Rozwiązanie

Jeśli ustalisz, że kompilacja kończy się niepowodzeniem z powodu kompilacji izolowanych obrazów, upewnij się, że:

Konstruktor obrazów maszyny wirtualnej jest obecnie w trakcie wdrażania izolowanych kompilacji obrazów. Określone szablony obrazów nie są powiązane z kompilacjami izolowanych obrazów, a ten sam szablon obrazu może lub nie może używać kompilacji izolowanych obrazów podczas różnych kompilacji.

Aby tymczasowo uruchomić kompilację bez kompilacji izolowanych obrazów, spróbuj ponownie skompilować kompilację. Ponieważ szablony obrazów nie są powiązane z funkcją izolowanych kompilacji obrazów, ponawianie próby kompilacji ma duże prawdopodobieństwo ponownego uruchomienia bez kompilacji izolowanych obrazów.

Jeśli żadne z tych rozwiązań nie zmniejsza problemów z nieudanymi kompilacjami obrazów, możesz skontaktować się z pomocą techniczną platformy Azure, aby tymczasowo wyłączyć funkcję izolowanych kompilacji obrazów w subskrypcji. Aby uzyskać więcej informacji, zobacz Tworzenie wniosku o pomoc techniczną na platformie Azure.

Uwaga / Notatka

Jeśli funkcja izolowanego budowania obrazów zostanie ostatecznie włączona we wszystkich regionach i szablonach, poprzedzające środki zaradcze będą miały jedynie tymczasowy charakter. Najlepiej jest rozwiązać podstawową przyczynę błędów kompilacji.

Kompilacja jest anulowana po anulowaniu kontekstu

Błąd

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

Przyczyna

Konstruktor obrazów maszyny wirtualnej używa portu 22 (Linux) lub 5986 (Windows) w celu nawiązania połączenia z maszyną wirtualną dla celów kompilacji. Ten problem występuje, gdy usługa jest odłączona od maszyny wirtualnej kompilacji podczas kompilacji obrazu. Przyczyny rozłączenia mogą się różnić, ale uruchomienie lub konfiguracja zapory w skrypcie może blokować wymienione wcześniej porty.

Rozwiązanie

Przejrzyj skrypty pod kątem zmian lub włączenia zapory albo zmian w protokołach SSH lub WinRM. Upewnij się, że wszelkie zmiany umożliwiają stałą łączność między usługą a maszyną wirtualną kompilacji na wcześniej wymienionych portach. Aby uzyskać więcej informacji, zobacz Opcje sieciowe konstruktora obrazów maszyny wirtualnej.

Błędy JWT pojawiają się w dzienniku na początku kompilacji

Błąd

Na początku procesu kompilacji kompilacja kończy się niepowodzeniem, a dziennik wskazuje błąd tokenu internetowego JSON (JWT):

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:

Przyczyna

Wartość buildTimeoutInMinutes w szablonie jest ustawiona na wartość z zakresu od 1 do 5 minut.

Rozwiązanie

Zgodnie z opisem w artykule "Create a VM Image Builder template" (Tworzenie szablonu konstruktora obrazów maszyn wirtualnych), limit czasu musi być ustawiony na 0 minut, aby użyć wartości domyślnej lub na więcej niż 5 minut, aby zastąpić wartość domyślną. Zmień limit czasu w szablonie na 0 minut, aby użyć wartości domyślnej lub zmień go na co najmniej 6 minut.

Wyświetlane są błędy usuwania zasobów

Błąd

Zasoby pośrednie są czyszczone pod koniec kompilacji, a dziennik dostosowywania może zawierać kilka błędów usuwania zasobów:

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

Przyczyna

Te komunikaty dziennika błędów są w większości nieszkodliwe, ponieważ operacje usuwania zasobów są ponawiane kilka razy. Zazwyczaj ostatecznie odniosą sukces. To zachowanie można zweryfikować, kontynuując śledzenie dzienników usuwania do momentu obserwowania komunikatu o powodzeniu. Alternatywnie możesz sprawdzić tymczasową grupę zasobów, aby potwierdzić, czy zasób został usunięty.

Wykonywanie tych obserwacji jest szczególnie ważne w przypadku niepowodzeń procesu budowania. Te komunikaty o błędach mogą prowadzić do stwierdzenia, że są one przyczyną błędów, nawet jeśli rzeczywiste błędy mogą znajdować się w innym miejscu.

Błąd

Gdy obrazy utknęły w usunięciu szablonu, dziennik dostosowywania może wyświetlić następujący błąd:

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=[]

Przyczyna

Ten błąd występuje, ponieważ interfejs sieciowy jest obecnie używany z prywatnym punktem końcowym.

Rozwiązanie

Aby rozwiązać ten problem, usuń następujące zasoby pojedynczo w tej określonej kolejności:

  1. Prywatne połączenie punktu końcowego. To połączenie można znaleźć w zasobie usługi Azure Private Link, przechodząc do karty Połączenia prywatnego punktu końcowego na stronie zasobu usługi Private Link.
  2. Usługa Private Link.
  3. Interfejs sieciowy i moduł równoważenia obciążenia.
  4. Grupa zasobów.
  5. Szablon obrazu.

Aby uzyskać więcej pomocy, możesz skontaktować się z pomocą techniczną platformy Azure , aby rozwiązać problem z zablokowanym usuwaniem.

Nie można odnaleźć celu dystrybucji w żądaniu aktualizacji

Błąd

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

Przyczyna

Ten błąd występuje, gdy istniejący cel dystrybucji nie zostanie znaleziony w treści żądania aktualizacji.

Rozwiązanie

Tablica dystrybucyjna powinna zawierać wszystkie cele dystrybucji: nowe obiekty docelowe (jeśli istnieją), istniejące obiekty docelowe bez zmian i zaktualizowane obiekty docelowe. Jeśli chcesz usunąć istniejący element docelowy dystrybucji, usuń i ponownie utwórz szablon obrazu. Usuwanie elementu docelowego dystrybucji nie jest obecnie obsługiwane za pośrednictwem Patch API.

Brak wymaganych pól

Błąd

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.

Przyczyna

Ten błąd występuje, gdy w obiekcie docelowym dystrybucji brakuje wymaganego pola.

Rozwiązanie

Podczas tworzenia żądania pamiętaj, aby podać każde wymagane pole w miejscu docelowym dystrybucji, nawet jeśli nie ma żadnych zmian.

Rozwiązywanie problemów z usługą Azure DevOps

Zadanie usługi Azure DevOps kończy się niepowodzeniem tylko wtedy, gdy wystąpi błąd podczas dostosowywania. W przypadku wystąpienia tego błędu zadanie zgłasza awarię i pozostawia grupę zasobów etapowania wraz z dziennikami, aby można było zidentyfikować problem.

Aby zlokalizować dziennik:

  1. Znajdź nazwę szablonu. Przejdź do Potok>Nieudana kompilacja, a następnie przejdź do szczegółów zadania Azure DevOps w Kreator obrazów maszyn wirtualnych. Zanotuj tę wartość template name.

    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
    
  2. Przejdź do witryny Azure Portal, wyszukaj nazwę szablonu w grupie zasobów, a następnie wyszukaj grupę zasobów, wprowadzając IT_.

  3. Wybierz nazwę konta magazynowego, a następnie wybierz obiekty blob>kontenery>dzienniki.

Czasami może być konieczne zbadanie pomyślnych kompilacji i przejrzenie ich dzienników. Jak wspomniano wcześniej, jeśli kompilacja obrazu zakończy się pomyślnie, tymczasowa grupa zasobów zawierająca dzienniki zostanie usunięta w ramach oczyszczania. Aby zapobiec automatycznemu czyszczeniu, możesz wprowadzić sleep po wbudowanym poleceniu, a następnie wyświetlić dzienniki podczas zatrzymania kompilacji.

  1. Zaktualizuj wbudowane polecenie, dodając polecenie Write-Host / Echo "Sleep". Ta funkcja daje Ci czas na przeszukiwanie dziennika.
  2. Dodaj wartość co najmniej 10 minut, korzystając z polecenia Start-Sleep lub Sleep w systemie Linux.
  3. Użyj tej metody, aby zidentyfikować lokalizację dziennika, a następnie kontynuuj pobieranie lub sprawdzanie dziennika, dopóki nie osiągnie sleep.

Operacja została anulowana

Błąd

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

Przyczyna

Jeśli użytkownik nie anulował kompilacji, agent użytkownika usługi Azure DevOps go anulował. Najprawdopodobniej limit czasu jednej godziny wystąpił ze względu na możliwości platformy Azure DevOps. Jeśli używasz prywatnego projektu i agenta, otrzymasz 60 minut czasu kompilacji. Jeśli kompilacja przekroczy limit czasu, usługa Azure DevOps anuluje uruchomione zadanie.

Aby uzyskać więcej informacji na temat możliwości i ograniczeń usługi Azure DevOps, zobacz Agenci hostowani przez firmę Microsoft.

Rozwiązanie

Możesz hostować własnych agentów usługi Azure DevOps lub spróbować skrócić czas kompilacji. Na przykład w przypadku dystrybucji do usługi Azure Compute Gallery można je replikować do jednego regionu lub replikować je asynchronicznie.

Logowanie w systemie Windows działa wolno

Błąd

Ten błąd może wystąpić podczas tworzenia obrazu systemu Windows 10 przy użyciu narzędzia Vm Image Builder, tworzenia maszyny wirtualnej na podstawie obrazu, a następnie używania protokołu RDP (Remote Desktop Protocol). Odczekasz kilka minut na pierwszym ekranie logowania, a następnie na niebieskim ekranie zostanie wyświetlony następujący komunikat:

Please wait for the Windows Modules Installer

Rozwiązanie

  1. W kompilacji obrazu upewnij się, że:

    • Brak zaległych ponownych uruchomień, wymaganych ponieważ dodanie konfiguratora ponownego uruchamiania systemu Windows jest ostatnim dostosowaniem.
    • Cała instalacja oprogramowania została ukończona.
  2. Dodaj opcję /mode:vm do domyślnego polecenia Sysprep używanego przez narzędzie VM Image Builder. Aby uzyskać więcej informacji, zobacz Zastępowanie poleceń w dalszej części tego artykułu.

Rozwiązywanie problemów z maszynami wirtualnymi utworzonymi bez powodzenia z poziomu narzędzia Vm Image Builder

Domyślnie konstruktor obrazów maszyny wirtualnej uruchamia kod anulowania aprowizacji na końcu każdej fazy dostosowywania obrazu, aby uogólnić obraz. Uogólnienie obrazu powoduje skonfigurowanie go do ponownego użycia podczas tworzenia wielu maszyn wirtualnych. W ramach procesu możesz przekazać ustawienia maszyny wirtualnej, takie jak nazwa hosta i nazwa użytkownika.

W systemie Windows program VM Image Builder uruchamia ogólne Sysprep polecenie. Jednak to polecenie może nie być odpowiednie dla każdej udanej operacji uogólnienia systemu Windows. Za pomocą narzędzia VM Image Builder możesz dostosować Sysprep polecenie . Vm Image Builder to narzędzie do automatyzacji obrazów, które jest odpowiedzialne za pomyślne uruchamianie Sysprep poleceń. Jednak może być konieczne użycie różnych Sysprep poleceń, aby obraz był wielokrotnego użytku.

W systemie Linux narzędzie VM Image Builder uruchamia ogólne waagent -deprovision+user polecenie. Aby uzyskać więcej informacji, zobacz dokumentację programu Microsoft Azure Linux Agent.

Jeśli przeprowadzasz migrację istniejącego dostosowania i używasz różnych poleceń Sysprep lub waagent, możesz wypróbować ogólne polecenia konstruktora obrazów VM. Jeśli tworzenie maszyny wirtualnej zakończy się niepowodzeniem, użyj poprzednich Sysprep poleceń lub waagent .

Załóżmy, że użyto narzędzia VM Image Builder do utworzenia obrazu niestandardowego systemu Windows, ale nie udało ci się pomyślnie utworzyć maszyny wirtualnej na podstawie obrazu. Na przykład tworzenie maszyny wirtualnej kończy się niepowodzeniem lub upłynął limit czasu. W tym przypadku wykonaj jedną z następujących zadań:

  • Zapoznaj się z dokumentacją systemu Windows Server Sysprep .
  • Zgłoś wniosek o pomoc techniczną zespołowi pomocy technicznej systemu Windows Server Sysprep . Ten zespół może pomóc w rozwiązaniu Twojego problemu i doradzić w sprawie właściwego polecenia Sysprep.

Lokalizacje poleceń i nazwy plików

W systemie Windows:

c:\DeprovisioningScript.ps1

W systemie Linux:

/tmp/DeprovisioningScript.sh

Polecenie Sysprep dla systemu 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 ...'

Polecenie do anulowania aprowizacji w systemie Linux

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

Zastępowanie poleceń

Aby zastąpić polecenia, użyj aprowizatorów skryptów programu PowerShell lub powłoki, aby utworzyć pliki poleceń z dokładną nazwą pliku. Umieść je w katalogach wymienionych wcześniej. Konstruktor obrazów maszyny wirtualnej odczytuje te polecenia i zapisuje dane wyjściowe w customization.log pliku.

Uzyskiwanie pomocy technicznej

Jeśli korzystasz ze wskazówek w tym artykule i nadal występują problemy, możesz otworzyć zgłoszenie do pomocy technicznej.

Użyj poniższego kodu, aby wybrać właściwy temat dotyczący produktu i pomocy technicznej. Dzięki temu masz pewność, że masz połączenie z zespołem pomocy technicznej narzędzia Image Builder maszyny wirtualnej platformy Azure.

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