Rozwiązywanie problemów z konstruktorem obrazów maszyny wirtualnej platformy Azure

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.

Wymagania wstępne

Podczas tworzenia kompilacji wykonaj następujące czynności:

  • Usługa Vm Image Builder komunikuje się z maszyną wirtualną kompilacji przy użyciu usługi WinRM lub Secure Shell (SSH). Nie*, wyłącz te ustawienia w ramach kompilacji.
  • Konstruktor obrazów maszyny wirtualnej tworzy zasoby w przejściowej grupie zasobów w ramach kompilacji. Upewnij się, że usługa Azure Policy nie uniemożliwia konstruktorowi obrazów maszyny wirtualnej tworzenie lub używanie niezbędnych zasobów.
  • Sprawdź, czy usługa Azure Policy nie instaluje niezamierzonych funkcji na maszynie wirtualnej kompilacji, takich jak rozszerzenia platformy Azure.
  • Upewnij się, że konstruktor obrazów maszyny wirtualnej ma odpowiednie uprawnienia do odczytu/zapisu obrazów i aby nawiązać połączenie z kontem magazynu. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją uprawnień dla interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell.
  • Konstruktor obrazów maszyny wirtualnej kończy się niepowodzeniem kompilacji, jeśli skrypty lub polecenia wbudowane kończą się niepowodzeniem z błędami (kody zakończenia niezerowe). Upewnij się, że przetestowano skrypty niestandardowe i sprawdzono, czy działają bez błędu (kod zakończenia 0) lub wymagają danych wejściowych użytkownika. Aby uzyskać więcej informacji, zobacz Create an Azure Virtual Desktop image by using VM Image Builder and PowerShell (Tworzenie obrazu usługi Azure Virtual Desktop przy użyciu konstruktora obrazów maszyn wirtualnych i programu PowerShell).
  • Upewnij się, że twoja subskrypcja ma wystarczający limit przydziału usługi Azure Container Instances.
    • Każda kompilacja obrazu może wdrażać do jednego tymczasowego zasobu usługi Azure Container Instance (z czterech standardowych rdzeni) w przejściowej grupie zasobów. Te zasoby są wymagane w przypadku kompilacji obrazu izolowanego.

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

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

Uwaga

Obrazy ze wzmocnionymi zabezpieczeniami ciS (Linux lub Windows) w witrynie Azure Marketplace zarządzane przez usługę CIS mogą powodować błędy kompilacji w usłudze Azure Image Builder ze względu na ich konfiguracje. Przykład:

  • Obrazy systemu Windows ze wzmocnionymi zabezpieczeniami CIS mogą zakłócać łączność usługi WinRM— wymaganie wstępne kompilacji AIB.
  • Obrazy ciS dla systemu Linux mogą zakończyć się niepowodzeniem z powodu chmod +x problemów 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. Nie ma dziennika błędów dla błędów przesyłania szablonu obrazu. Jeśli podczas przesyłania wystąpi błąd, możesz zwrócić błąd, sprawdzając stan szablonu, w szczególności przeglądając ProvisioningState polecenie i/ProvisioningErrorMessageprovisioningError .

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

Uwaga

W przypadku programu PowerShell należy zainstalować moduły programu PowerShell konstruktora obrazów maszyny wirtualnej.

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, ponieważ konieczne będzie ponowne zmianę automatyzacji w celu utworzenia wcześniejszego schematu błędów. Nie przewidujemy ponownego zmiany schematu błędów w przyszłych wersjach.

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

Dane wyjściowe błędu dla wersji 2021-10-01 lub nowszej

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

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.

Ponowne przypisywanie tożsamości usługi zarządzanej dla szablonów obrazów

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 tożsamości usługi zarządzanej (MSI) przypisane do szablonu obrazu nie mogą być używane:

Rozwiązanie

Użyj interfejsu wiersza polecenia platformy Azure, aby zresetować tożsamość w szablonie obrazu. Upewnij się, że zaktualizowano interfejs wiersza polecenia platformy Azure do wersji 2.45.0 lub nowszej.

Usuwanie tożsamości zarządzanej z docelowego szablonu konstruktora obrazów

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

Ponowne przypisywanie tożsamości do docelowego szablonu konstruktora obrazów

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

Operacja zasobu zakończyła się 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 wdrożenia zasobu występuje z powodu braku uprawnień. Ten błąd może być również spowodowany konfliktem z tymczasową grupą zasobów.

Rozwiązanie

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

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

Upewnij się również, że tymczasowa nazwa grupy zasobów jest unikatowo określona 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.

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 konstruktor obrazów maszyny wirtualnej 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 File uzyskuje dostęp 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.

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

Błąd autoryzacji podczas tworzenia dysku

Kompilacja narzędzia Azure Image Builder kończy się niepowodzeniem z powodu błędu autoryzacji, który wygląda następująco:

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 jest spowodowany próbą określenia wstępnie istniejącej grupy zasobów i sieci wirtualnej w usłudze Azure Image Builder z obrazem źródłowym systemu Windows.

Rozwiązanie

Musisz przypisać rolę współautora do grupy zasobów dla jednostki usługi odpowiadającej aplikacji pierwszej firmy usługi Azure Image Builder przy użyciu poniższego polecenia interfejsu wiersza polecenia lub instrukcji portalu.

Najpierw zweryfikuj, czy jednostka usługi jest skojarzona z aplikacją pierwszej firmy narzędzia Azure Image Builder, używając następującego polecenia interfejsu wiersza polecenia:

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

Następnie, aby zaimplementować to rozwiązanie przy użyciu interfejsu wiersza polecenia, 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 tej dokumentacji: Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal — RBAC platformy Azure.

W przypadku kroku 1. Zidentyfikuj wymagany zakres: wymagany zakres to Grupa zasobów.

W polu Krok 3. Wybierz odpowiednią rolę: Rola to Współautor.

W kroku 4. Wybierz, kto potrzebuje dostępu: wybierz członka "Azure Virtual Machine Image Builder"

Następnie przejdź do kroku 6. Przypisz rolę , aby przypisać rolę.

Rozwiązywanie problemów z błędami kompilacji

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

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

Dziennik dostosowywania

Po uruchomieniu kompilacji obrazu dzienniki są tworzone i przechowywane na koncie magazynu. Konstruktor obrazów maszyny wirtualnej tworzy konto magazynu w tymczasowej grupie zasobów podczas tworzenia artefaktu szablonu obrazu.

Nazwa konta magazynu używa wzorca IT_<ImageResourceGroupName TemplateName>><<GUID> (na przykład IT_aibmdi_helloImageTemplateLinux01).

Aby wyświetlić customization.log plik w grupie zasobów, wybierz pozycję Obiekty blob>packerlogs konta>magazynu, wybierz katalog, a następnie wybierz plik customization.log.

Omówienie 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 błędy są wyświetlane w komunikacie o błędzie stanu szablonu obrazu.

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

  1. Wdróż kompilowanie maszyny wirtualnej i zależności przy użyciu szablonów usługi ARM na etapie przejściowej grupy zasobów IT_. Ten etap obejmuje wiele poST do dostawcy zasobów narzędzia Image Builder maszyny wirtualnej:

    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. Stan etapu 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. Połączenie do etapu kompilacji maszyny wirtualnej.

    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 etapu dostosowywania . Po uruchomieniu dostosowań można je zidentyfikować, przeglądając plik customization.log . Wyszukaj (telemetria).

    (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. Anulowanie aprowizacji etapu. Konstruktor obrazów maszyny wirtualnej dodaje ukryty konfigurator. Ten krok anulowania aprowizacji jest odpowiedzialny za przygotowanie maszyny wirtualnej do anulowania aprowizacji. W systemie Windows jest uruchamiany Sysprep (przy użyciu c:\DeprovisioningScript.ps1). W systemie Linux działa waagent-deprovision (przy użyciu /tmp/DeprovisioningScript.sh).

    Na 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. Etap oczyszczania . 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 ...
    

Wskazówki na potrzeby rozwiązywania 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 Zapora zezwalają na łączność ze zdalnymi zasobami.
  • Dane wyjściowe komentarzy do konsoli przy użyciu polecenia Write-Host lub echo. Umożliwia to przeszukiwanie pliku customization.log .

Rozwiązywanie typowych błędów kompilacji

Wdrożenie 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 program Azure Image Builder nie obsługuje tej konfiguracji.

Rozwiązanie

Usługa Azure Key Vault musi zostać utworzona z włączonym dostępem publicznym.

Niepowodzenie polecenia kompilacji narzędzia Packer

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

Rozwiązanie

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

Na 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

Przekroczono limit 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 kompilacji. Ten błąd jest widoczny w parametrze "lastrunstatus".

Rozwiązanie

  1. Przejrzyj plik customization.log. Zidentyfikuj ostatni konfigurator do uruchomienia. Wyszukaj (dane telemetryczne), zaczynając od dołu dziennika.

  2. Sprawdź dostosowania skryptu. Dostosowania mogą nie pomijać interakcji użytkownika dla poleceń, takich jak quiet opcje. Na przykład apt-get install -y wyniki wykonania skryptu oczekujące 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 skrycie, które mogą spowodować oczekiwanie skryptu.

  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 (GB) plików, rozważ rozmiar podstawowej maszyny wirtualnej kompilacji. Usługa używa maszyny wirtualnej Standard_D1_v2. Maszyna wirtualna ma 1 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 VM_size.

Długi czas pobierania pliku

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

File konfigurator pobiera duży plik.

Rozwiązanie

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

Konstruktor stale nie może uruchomić ponownego uruchomienia systemu Windows 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 aktualizacji systemu Windows deklaruje przedwcześnie obrazy na podstawie systemu Windows Server 2016.

Rozwiązanie

Zwiększ z restartTimeout 15 minut do 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

Upłynął limit czasu konstruktora obrazów maszyny wirtualnej z oczekiwaniem na dodanie i zreplikowanie obrazu do galerii obliczeń platformy Azure. Jeśli obraz jest wstrzykiwany do galerii, możesz założyć, że kompilacja obrazu zakończyła się pomyślnie. Jednak ogólny proces zakończył się niepowodzeniem, ponieważ konstruktor obrazów maszyny wirtualnej czekał na ukończenie replikacji w galerii obliczeń platformy Azure. Mimo że kompilacja zakończyła się niepowodzeniem, replikacja będzie kontynuowana. Właściwości wersji obrazu można uzyskać, sprawdzając przebieg dystrybucjiOutput.

$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 informacji o zasobach niskiego poziomu 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

Wyczerpanie zasobów. Ten problem jest często spotykany w usłudze Windows Update z domyślnym rozmiarem maszyny wirtualnej kompilacji D1_V2.

Rozwiązanie

Zwiększ rozmiar maszyny wirtualnej kompilacji.

Kompilacja została zakończona, 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

Powyższe ostrzeżenie można bezpiecznie zignorować.

Pomijanie tworzenia obrazu

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

Powyższe ostrzeżenie można bezpiecznie zignorować.

Nie znaleziono 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, aby upewnić się, że 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.

Sysprep Czas

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

Przyczyną może być problem z chronometrażem z powodu rozmiaru maszyny wirtualnej D1_V2. Jeśli dostosowania są ograniczone i są uruchamiane w mniej niż trzy sekundy, polecenia są uruchamiane przez konstruktora obrazów maszyny wirtualnej w Sysprep celu anulowania aprowizacji. Po anulowaniu aprowizacji konstruktora obrazów Sysprep maszyny wirtualnej polecenie sprawdza, czy jest zainstalowany agent WindowsAzureGuestAgent, który może nie zostać w pełni zainstalowany i może spowodować problem z chronometrażem.

Rozwiązanie

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

Wyrejestrowany dostawca usługi Azure Container Instances

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 polecenia interfejsu wiersza polecenia platformy Azure lub programu PowerShell:

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

Przekroczono limit przydziału usługi Azure Container Instances

Błąd

Azure Container Instances quota exceeded"

Przyczyna

Twoja subskrypcja nie ma wystarczającego limitu przydziału usługi Azure Container Instances (ACI) dla narzędzia Azure Image Builder, aby pomyślnie skompilować obraz.

Rozwiązanie

Aby udostępnić limit przydziału usługi ACI dla narzędzia Azure Image Builder, możesz wykonać następujące czynności:

  • Wyszukaj inne użycie usługi Azure Container Instances w ramach subskrypcji i usuń wszystkie niepotrzebne wystąpienia, aby udostępnić limit przydziału dla narzędzia Azure Image Builder.
  • Narzędzie Azure Image Builder wdraża usługę ACI tylko tymczasowo podczas wykonywania kompilacji. Te wystąpienia są usuwane po zakończeniu kompilacji. Jeśli w ramach subskrypcji odbywa się zbyt wiele współbieżnych kompilacji obrazów, możesz rozważyć opóźnienie niektórych kompilacji obrazu. Zmniejsza to współbieżne użycie usługi ACI w ramach subskrypcji. Jeśli szablony obrazów są skonfigurowane na potrzeby automatycznych kompilacji obrazów przy użyciu wyzwalaczy, takie nieudane kompilacje zostaną automatycznie ponawiane przez program Azure Image Builder.
  • Jeśli bieżące limity usługi ACI dla twojej subskrypcji są zbyt niskie, aby obsługiwać scenariusze tworzenia obrazów, możesz zażądać zwiększenia limitu przydziału usługi ACI.

Uwaga

Zasoby ACI są wymagane w przypadku kompilacji izolowanych obrazów.

Zbyt wiele wystąpień kontenerów platformy Azure wdrożonych w danym okresie

Błąd

"Zbyt wiele wystąpień kontenerów platformy Azure wdrożonych w danym okresie"

Przyczyna

Twoja subskrypcja nie ma wystarczającego limitu przydziału usługi Azure Container Instances (ACI) dla narzędzia Azure Image Builder do pomyślnego kompilowania obrazów jednocześnie.

Rozwiązanie

Można wykonywać następujące czynności:

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

Niepowodzenie kompilacji izolowanego obrazu

Błąd

Kompilacje konstruktora obrazów platformy Azure kończą się niepowodzeniem z powodu kompilacji izolowanego obrazu.

Przyczyna

Kompilacje narzędzia Azure Image Builder mogą zakończyć się niepowodzeniem z powodów wymienionych w innym miejscu tego dokumentu. Istnieje jednak niewielkie prawdopodobieństwo, że kompilacja zakończy się niepowodzeniem z powodu kompilacji obrazów wyizolowanych 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, możesz wykonać następujące czynności:

  • Upewnij się, że nie ma usługi Azure Policy blokującej wdrażanie zasobów wymienionych w sekcji Wymagania wstępne, w szczególności usług Azure Container Instances, Azure Virtual Networks i Prywatnych punktów końcowych platformy Azure.
  • Upewnij się, że twoja subskrypcja ma wystarczający limit przydziału usługi Azure Container Instances, aby obsługiwać wszystkie współbieżne kompilacje obrazów. Aby uzyskać więcej informacji, zobacz Przekroczenie limitu przydziału usługi Azure Container Instances.

Narzędzie Azure Image Builder 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 korzystać z kompilacji izolowanych obrazów podczas różnych kompilacji. Możesz wykonać następujące czynności, aby tymczasowo uruchomić kompilację bez izolowanych kompilacji obrazów.

  • Ponów próbę kompilacji. 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 ogranicza możliwości kompilacji obrazów zakończonych niepowodzeniem, możesz skontaktować się z pomoc techniczna platformy Azure, aby tymczasowo zrezygnować z subskrypcji z kompilacji izolowanych obrazów. Aby uzyskać więcej informacji, zobacz Tworzenie wniosku o pomoc techniczną na platformie Azure.

Uwaga

Kompilacje izolowanych obrazów zostaną ostatecznie włączone we wszystkich regionach i szablonach. Dlatego powyższe środki zaradcze należy uznać za tymczasowe i należy rozwiązać podstawową przyczynę błędów kompilacji.

Kompilacja zostanie anulowana po anulowaniu kontekstu anulowania 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ą kompilacji. Dzieje się tak, gdy usługa jest odłączona od maszyny wirtualnej kompilacji podczas kompilacji obrazu. Przyczyny rozłączenia mogą się różnić, ale włączenie lub skonfigurowanie zapory w skry skrycie może blokować wymienione wcześniej porty.

Rozwiązanie

Przejrzyj skrypty pod kątem zmian zapory lub włączenia albo zmian w protokołach SSH lub WinRM i upewnij się, że wszelkie zmiany zezwalają na 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 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 temacie Tworzenie szablonu konstruktora obrazów maszyny wirtualnej limit czasu musi być ustawiony na 0, aby użyć wartości domyślnej lub ustawić wartość ponad 5 minut, aby zastąpić wartość domyślną. Zmień limit czasu w szablonie na 0, aby użyć wartości domyślnej lub co najmniej 6 minut.

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 i zazwyczaj kończą się powodzeniem. Możesz to sprawdzić, 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.

Wykonanie tych obserwacji jest szczególnie ważne w przypadku niepowodzeń kompilacji, gdzie te komunikaty o błędach mogą prowadzić do wniosku, że są one przyczyną awarii, nawet jeśli rzeczywiste błędy mogą być gdzie indziej.

Błąd

Gdy obrazy utknęły w usunięciu szablonu, dziennik dostosowywania może wyświetlić poniższy 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ń poniższe zasoby jeden po jednym w określonej kolejności:

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

Aby uzyskać dodatkową pomoc, możesz skontaktować się z pomoc techniczna platformy Azure, aby rozwiązać problem z zablokowanym usuwaniem.

Nie można odnaleźć obiektu docelowego 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 obiekt docelowy dystrybucji nie znajduje się w treści żądania poprawki.

Rozwiązanie

Tablica dystrybucyjna powinna zawierać wszystkie cele dystrybucji, które są nowymi miejscami docelowymi (jeśli istnieją), istniejącymi obiektami docelowymi bez zmian i zaktualizowanymi miejscami docelowymi. Jeśli chcesz usunąć istniejący element docelowy dystrybucji, usuń i ponownie utwórz szablon obrazu, ponieważ usunięcie elementu docelowego dystrybucji nie jest obecnie obsługiwane za pośrednictwem interfejsu API poprawek.

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 podaj każde wymagane pole w obiekcie docelowym dystrybucji, nawet jeśli nie ma żadnych zmian.

Zadania metodyki DevOps

Rozwiązywanie problemów z zadaniem

Zadanie kończy się niepowodzeniem tylko wtedy, gdy wystąpi błąd podczas dostosowywania. W takim przypadku zadanie zgłasza błąd i pozostawia tymczasową grupę zasobów z dziennikami, aby można było zidentyfikować problem.

Aby zlokalizować dziennik, musisz znać nazwę szablonu. Przejdź do kompilacji potoku>, który zakończył się niepowodzeniem, a następnie przejdź do szczegółów zadania DevOps konstruktora obrazów maszyny wirtualnej.

Zobaczysz dziennik i nazwę szablonu:

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. Przejdź do witryny Azure Portal, wyszukaj nazwę szablonu w grupie zasobów, a następnie wyszukaj grupę zasobów, wpisując IT_*.
  2. Wybierz dzienniki kontenerów>>obiektów blob o nazwie >konta magazynu.

Rozwiązywanie problemów z pomyślnymi kompilacjami

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żna jednak wprowadzić polecenie sleep po wbudowanym poleceniu, a następnie wyświetlić dzienniki podczas wstrzymania kompilacji. Aby to zrobić, wykonaj następujące czynności:

  1. Zaktualizuj wbudowane polecenie, dodając polecenie Write-Host/Echo "Sleep". Daje to czas na wyszukiwanie w dzienniku.
  2. sleep Dodaj wartość co najmniej 10 minut przy użyciu polecenia Start-Sleep lub Sleep Linux.
  3. Użyj tej metody, aby zidentyfikować lokalizację dziennika, a następnie zachować pobieranie lub sprawdzanie dziennika, dopóki nie zostanie ono pobrane.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 kompilacja nie została anulowana przez użytkownika, została anulowana przez agenta użytkownika usługi Azure DevOps. Najprawdopodobniej 1-godzinny limit czasu wystąpił z powodu możliwości usługi Azure DevOps. Jeśli używasz prywatnego projektu i agenta, otrzymasz 60 minut czasu kompilacji. Jeśli kompilacja przekroczy limit czasu, usługa 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 Metodyki DevOps lub przyjrzeć się skróceniu czasu kompilacji. Na przykład w przypadku dystrybucji do usługi Azure Compute Gallery można je replikować do jednego regionu lub replikować je asynchronicznie.

Powolne logowanie do systemu Windows

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 sprawdź, czy:

    • Brak zaległych ponownych uruchomień wymaganych przez dodanie konfiguratora ponownego uruchamiania systemu Windows jako ostatniego dostosowania.
    • Cała instalacja oprogramowania została ukończona.
  2. Dodaj opcję /mode:vm do domyślnej Sysprep używanej przez program VM Image Builder. Aby uzyskać więcej informacji, przejdź do sekcji "Zastąpij polecenia" w sekcji "Maszyny wirtualne utworzone na podstawie obrazów konstruktora obrazów maszyn wirtualnych nie zostały pomyślnie utworzone".

Maszyny wirtualne utworzone na podstawie obrazów programu Image Builder maszyn wirtualnych nie zostały pomyślnie utworzone

Domyślnie konstruktor obrazów maszyny wirtualnej uruchamia kod anulowania aprowizacji na końcu każdej fazy dostosowywania obrazu, aby uogólnić obraz. Aby uogólnić obraz, należy skonfigurować go do ponownego użycia w celu utworzenia wielu maszyn wirtualnych. W ramach procesu możesz przekazać ustawienia maszyny wirtualnej, takie jak nazwa hosta, nazwa użytkownika itd. W systemie Windows narzędzie VM Image Builder uruchamia program , a w systemie Linux program SysprepVM Image Builder uruchamia polecenie waagent -deprovision.

W systemie Windows narzędzie VM Image Builder używa ogólnego Sysprep polecenia. Jednak to polecenie może nie być odpowiednie dla każdej pomyślnej uogólnienia systemu Windows. Za pomocą narzędzia VM Image Builder możesz dostosować Sysprep polecenie . Należy pamiętać, że konstruktor obrazów maszyny wirtualnej to narzędzie do automatyzacji obrazów, które jest odpowiedzialne za pomyślne uruchomienie Sysprep polecenia. 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 używa ogólnego waagent -deprovision+user polecenia. Aby uzyskać więcej informacji, zobacz dokumentację agenta systemu Linux platformy Microsoft Azure.

Jeśli przeprowadzasz migrację istniejącego dostosowania i używasz różnych Sysprep poleceń lub waagent , możesz wypróbować ogólne polecenia konstruktora obrazów maszyny wirtualnej. 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 czynności:

  • Zapoznaj się z dokumentacją narzędzia Sysprep systemu Windows Server.
  • Zgłoś wniosek o pomoc techniczną z zespołem pomocy technicznej ds. obsługi systemu Windows Server Sysprep Customer Services. Mogą one pomóc w rozwiązaniu problemu i doradzić sobie z poprawnym Sysprep poleceniem.

Lokalizacje poleceń i nazwy plików

W systemie Windows:

c:\DeprovisioningScript.ps1

W systemie Linux:

/tmp/DeprovisioningScript.sh

Polecenie Sysprep : 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 -deprovision : Linux

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

Zastąpij polecenia

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

Uzyskaj pomoc techniczną

Jeśli odniosłeś się do wskazówek i nadal występują problemy, możesz otworzyć zgłoszenie do pomocy technicznej. Pamiętaj, aby wybrać właściwy temat dotyczący produktu i pomocy technicznej. Dzięki temu będziesz mieć pewność, że masz połączenie z zespołem pomocy technicznej narzędzia Image Builder maszyny wirtualnej platformy Azure.

Wybieranie produktu przypadku:

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

Następne kroki

Aby uzyskać więcej informacji, zobacz Omówienie narzędzia Image Builder maszyny wirtualnej.