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.
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. Dokładna lista zasobów zależy od konfiguracji sieci określonej w szablonie obrazu. Upewnij się, że usługa Azure Policy nie uniemożliwia konstruktorowi obrazów maszyny wirtualnej tworzenie lub używanie niezbędnych zasobów.
- Utwórz grupę zasobów IT_.
- Utwórz konto magazynu bez zapory.
- Wdrażanie usługi Azure Container Instances.
- Wdróż zasoby usługi Azure Virtual Network (i podsieci).
- Wdrażanie zasobów prywatnego punktu końcowego platformy Azure.
- Wdrażanie usługi Azure Files.
- 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/ProvisioningErrorMessage
provisioningError
.
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:
- Szablon konstruktora obrazów używa udostępnionej przez klienta tymczasowej grupy zasobów, a tożsamość usługi zarządzanej zostanie usunięta przed usunięciem szablonu obrazu (scenariusz przejściowej grupy zasobów)
- Utworzone 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 błędów kompilacji obrazu pobierz błąd z lastrunstatus
pliku , 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
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 Azure Image Builder (AIB) w usłudze Azure Container Instances (ACI). Te dzienniki zapewniają wgląd w proces kompilacji w czasie rzeczywistym, pomagając zidentyfikować wszelkie problemy lub potwierdzić, że kompilacja jest kontynuowana zgodnie z oczekiwaniami. Wykonaj poniższe kroki, aby zlokalizować i wyświetlić te dzienniki na żywo.
- Uruchom kompilację obrazu: zainicjuj proces kompilacji obrazu.
- Przejdź do pozycji Grupy zasobów: przejdź do witryny Azure Portal i wybierz pozycję "Grupy zasobów". Filtruj według subskrypcji, w której zainicjowano kompilację obrazu.
- Wybierz grupę zasobów: znajdź i wybierz tymczasową grupę zasobów skojarzona z kompilacją obrazu. Jest to grupa zasobów zawierająca zasoby kompilacji usługi AIB. Aby uzyskać więcej informacji na temat przejściowej grupy zasobów, zobacz Właściwości: stagingResourceGroup.
- Znajdź kontener kompilacji: 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ę.
- Dostęp do ustawień kontenera: w okienku po lewej stronie w obszarze "Ustawienia" wybierz pozycję "Kontenery".
- Wyświetl dzienniki: 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 dziennika 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 przejściowej grupy zasobów, zobacz Właściwości: stagingResourceGroup.
Uwaga
Podczas uzyskiwania customization.log
dostępu do pliku lub validation.log
należy pamiętać, że jeśli kompilacja obrazu została uruchomiona wiele razy, w kontenerze packerlogs
będzie wiele folderów. Te foldery są rozmieszczane w kolejności od najstarszej kompilacji do najnowszej.
Wykonaj poniższe kroki, aby zlokalizować i pobrać customization.log
plik or validation.log
:
- Wybierz pozycję Konto magazynu: w witrynie Azure Portal przejdź do odpowiedniego konta magazynu, filtrując konta magazynu w przejściowej grupie zasobów utworzonej przez usługę Vm Image Builder. Aby uzyskać więcej informacji na temat przejściowej grupy zasobów, zobacz Właściwości: stagingResourceGroup.
- Dostęp do magazynu danych: w obszarze konta magazynu przejdź do pozycji Magazyn danych.
- Otwórz kontener: wybierz opcję Kontener, a następnie wybierz
packerlogs
kontener. - Wybierz prawidłowy folder: w kontenerze
packerlogs
zobaczysz 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. - Pobierz plik dziennika: wewnątrz wybranego folderu wybierz
customization.log
plik i/lubvalidation.log
, a następnie kliknij przycisk Pobierz , aby pobrać jego zawartość.
Informacje o dzienniku 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:
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 ... ..
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=""
Nawiąż połączenie z etapem 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!
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
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 jest uruchamianywaagent-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."}
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 ...
Porady dotyczące 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
lubecho
. 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
Przejrzyj plik customization.log. Zidentyfikuj ostatni konfigurator do uruchomienia. Wyszukaj (dane telemetryczne), zaczynając od dołu dziennika.
Sprawdź dostosowania skryptu. Dostosowania mogą nie pomijać interakcji użytkownika dla poleceń, takich jak
quiet
opcje. Na przykładapt-get install -y
wyniki wykonania skryptu oczekujące na interakcję użytkownika.Jeśli używasz konfiguratora
File
do pobierania artefaktów większych niż 20 MB, zobacz sekcję obejścia.Przejrzyj błędy i zależności w skrycie, które mogą spowodować oczekiwanie skryptu.
Jeśli spodziewasz się, że dostosowania wymagają więcej czasu, zwiększ wartość buildTimeoutInMinutes. Wartość domyślna to 4 godziny.
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 oczekiwania w galerii zasobów obliczeniowych platformy Azure
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ługi Azure Container Instances.
- 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:
- 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.
- Usługa łącza prywatnego.
- Interfejs sieciowy i moduł równoważenia obciążenia.
- Grupa zasobów.
- 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
- Przejdź do witryny Azure Portal, wyszukaj nazwę szablonu w grupie zasobów, a następnie wyszukaj grupę zasobów, wpisując IT_*.
- 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:
- Zaktualizuj wbudowane polecenie, dodając polecenie Write-Host/Echo "Sleep". Daje to czas na wyszukiwanie w dzienniku.
sleep
Dodaj wartość co najmniej 10 minut przy użyciu polecenia Start-Sleep lubSleep
Linux.- 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
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.
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 Sysprep
VM 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 w pliku customization.log .
Uzyskiwanie pomocy technicznej
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.