Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: ✔️ Maszyny wirtualne z systemem Linux — elastyczne zestawy skalowania ✔️
Skorzystaj z tego artykułu, aby rozwiązać typowe problemy, które mogą wystąpić podczas korzystania z narzędzia Azure VM Image Builder.
Błędy konstruktora obrazów maszyny wirtualnej mogą wystąpić w dwóch obszarach:
- Podczas przesyłania szablonu obrazu
- Podczas budowania obrazów
Wymagania wstępne
Te wymagania wstępne dotyczą tworzenia kompilacji:
Usługa Vm Image Builder komunikuje się z maszyną wirtualną kompilacji przy użyciu zdalnego zarządzania systemem Windows (WinRM) lub protokołu Secure Shell (SSH). Nie wyłączaj tych ustawień w ramach kompilacji.
Konstruktor obrazów maszyny wirtualnej tworzy zasoby w przejściowej grupie zasobów w ramach kompilacji. Dokładna lista zasobów zależy od konfiguracji sieci , którą określa szablon obrazu. Upewnij się, że usługa Azure Policy nie uniemożliwia Azure VM Image Builder tworzenia lub używania niezbędnych zasobów.
- Utwórz grupę
IT_
zasobów. - Utwórz konto przechowywania bez zapory.
- Wdrażanie usługi Azure Container Instances.
- Wdrażanie zasobów usługi Azure Virtual Network (i podsieci w nich).
- Wdrażanie zasobów prywatnego punktu końcowego platformy Azure .
- Wdrażanie usługi Azure Files.
- Utwórz grupę
Upewnij się, że usługa Azure Policy nie instaluje niezamierzonych funkcji na maszynie wirtualnej kompilacji lub innych zasobach przejściowych, takich jak rozszerzenia platformy Azure lub modyfikacje tagów.
Upewnij się, że konstruktor obrazów maszyny wirtualnej ma odpowiednie uprawnienia do odczytu/zapisu obrazów do nawiązywania połączenia z kontem magazynu. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją uprawnień dla interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell.
VM Image Builder kończy się niepowodzeniem kompilacji, jeśli skrypty lub polecenia wbudowane kończą się niepowodzeniem z błędami (niezerowe kody zakończenia). Upewnij się, że przetestowano skrypty niestandardowe i sprawdzono, czy działają bez błędu (kod
0
zakończenia) lub wymagają wprowadzenia danych przez użytkownika. Aby uzyskać więcej informacji, zobacz Tworzenie obrazu usługi Azure Virtual Desktop przy użyciu VM Image Builder i PowerShell).Upewnij się, że twoja subskrypcja ma wystarczający limit przydziału dla usługi Azure Container Instances.
Każda kompilacja obrazu może wdrażać do jednego tymczasowego zasobu usługi Azure Container Instances, który składa się z czterech standardowych rdzeni, w przejściowej grupie zasobów. Te zasoby są wymagane dla izolowanych kompilacji obrazów.
Uwaga / Notatka
Obrazy ze wzmocnionymi zabezpieczeniami CIS (Linux lub Windows) w Azure Marketplace, zarządzane przez Center for Internet Security (CIS), mogą powodować błędy kompilacji z usługą VM Image Builder z powodu ich konfiguracji. Przykład:
- Obrazy CIS ze wzmocnionymi zabezpieczeniami dla systemu Windows mogą zakłócać łączność z usługą WinRM, co jest wymogiem wstępnym do budowy za pomocą narzędzia VM Image Builder.
- Obrazy CIS ze wzmocnionymi zabezpieczeniami dla systemu Linux mogą nie działać z powodu problemów związanych z uprawnieniami.
Rozwiązywanie problemów z błędami przesyłania szablonu obrazu
Błędy przesyłania szablonu obrazu są zwracane tylko podczas przesyłania. W przypadku błędów przesyłania szablonu obrazu nie istnieje żaden dziennik błędów. Jeśli podczas przesyłania wystąpi błąd, możesz zwrócić błąd, sprawdzając stan szablonu. W szczególności przejrzyj ProvisioningState
i ProvisioningErrorMessage
/provisioningError
.
Oto polecenie Azure CLI:
az image builder show --name $imageTemplateName --resource-group $imageResourceGroup
Oto polecenie dla programu Azure PowerShell. Aby użyć programu Azure PowerShell, należy zainstalować moduły PowerShell VM Image Builder.
Get-AzImageBuilderTemplate -ImageTemplateName <imageTemplateName> -ResourceGroupName <imageTemplateResourceGroup> | Select-Object ProvisioningState, ProvisioningErrorMessage
Oto dane wyjściowe błędu dla wersji 2020-02-14 i starszych:
{
"code": "ValidationFailed",
"message": "Validation failed: 'ImageTemplate.properties.source': Field 'imageId' has a bad value: '/subscriptions/subscriptionID/resourceGroups/resourceGroupName/providers/Microsoft.Compute/images/imageName'. Please review http://aka.ms/azvmimagebuildertmplref for details on fields requirements in the Image Builder Template."
}
Oto dane wyjściowe błędu dla wersji 2021-10-01 i nowszych:
{
"error": {
"code": "ValidationFailed",
"message": "Validation failed: 'ImageTemplate.properties.source': Field 'imageId' has a bad value: '/subscriptions/subscriptionID/resourceGroups/resourceGroupName/providers/Microsoft.Compute/images/imageName'. Please review http://aka.ms/azvmimagebuildertmplref for details on fields requirements in the Image Builder Template."
}
}
Ważne
Interfejs API w wersji 2021-10-01 wprowadza zmianę schematu błędów, który będzie częścią każdej przyszłej wersji interfejsu API. Jeśli masz jakiekolwiek automatyzacje narzędzia Image Builder maszyny wirtualnej platformy Azure, pamiętaj o nowych danych wyjściowych błędów podczas przełączania się do interfejsu API w wersji 2021-10-01 lub nowszej.
Zalecamy, aby po przełączeniu się do najnowszej wersji interfejsu API nie przywrócić starszej wersji. Jeśli wrócisz, musisz ponownie zmienić automatyzację, aby utworzyć wcześniejszy schemat błędów. Nie spodziewamy się, że schemat błędu zmieni się ponownie w przyszłych wersjach.
W poniższych sekcjach przedstawiono wskazówki dotyczące rozwiązywania problemów dla typowych błędów przesyłania szablonów obrazów.
Aktualizowanie lub uaktualnianie szablonów obrazów nie jest obecnie obsługiwane
Błąd
'Conflict'. Details: Update/Upgrade of image templates is currently not supported
Przyczyna
Szablon już istnieje.
Rozwiązanie
Jeśli przesyłasz szablon konfiguracji obrazu i przesyłanie zakończy się niepowodzeniem, nadal istnieje artefakt szablonu, który uległ awarii. Usuń szablon, który zakończył się niepowodzeniem.
Nie można użyć przypisanej tożsamości zarządzanej w szablonie obrazu
Błąd
The assigned managed identity cannot be used. Please remove the existing one and re-assign a new identity. For more troubleshooting steps go to https://aka.ms/azvmimagebuilderts.
Przyczyna
Istnieją przypadki, w których nie można użyć utworzonej tożsamości zarządzanej przypisanej do szablonu obrazu.
Jedną z możliwych przyczyn jest to, że szablon kreatora obrazów maszyn wirtualnych używa tymczasowej grupy zasobów dostarczonej przez klienta, a tożsamość zarządzana jest usuwana przed usunięciem szablonu obrazu. (Jest to scenariusz przejściowej grupy zasobów ).
Rozwiązanie
Użyj Azure CLI, aby zresetować tożsamość zarządzaną w szablonie obrazu. Pamiętaj, aby zaktualizować interfejs wiersza polecenia platformy Azure do wersji 2.45.0 lub nowszej.
Potwierdź tożsamość zarządzaną z docelowego szablonu Image Builder dla maszyny wirtualnej:
az image builder identity show -g <template resource group> -n <template name>
Usuń tożsamość zarządzaną z docelowego szablonu narzędzia Image Builder maszyny wirtualnej:
az image builder identity remove -g <template resource group> -n <template name> --user-assigned <identity resource id>
Przypisz nową tożsamość do docelowego szablonu Image Builder maszyny wirtualnej.
az image builder identity assign -g <template rg> -n <template name> --user-assigned <identity resource id>
Aby uzyskać więcej informacji na temat konfigurowania uprawnień, zobacz Konfigurowanie uprawnień konstruktora obrazów maszyny wirtualnej przy użyciu interfejsu wiersza polecenia platformy Azure lub Konfigurowanie uprawnień konstruktora obrazów maszyny wirtualnej przy użyciu programu PowerShell.
Przypisana tożsamość zarządzana nie jest autoryzowana do uzyskiwania dostępu do zasobu
Błąd
Not authorized to access the resource: <resource-not-able-to-access>. Please check the user assigned identity has the correct permissions. For more details, go to https://aka.ms/azvmimagebuilderts.
Przyczyna
Utworzona tożsamość zarządzana przypisana do szablonu obrazu nie ma wszystkich uprawnień dostępu do zasobu udostępnionego w komunikacie o błędzie.
Rozwiązanie
Potwierdź tożsamość zarządzaną z docelowego szablonu Image Builder dla maszyny wirtualnej:
az image builder identity show -g <template resource group> -n <template name>
Przejrzyj przypisania ról dla tożsamości:
az role assignment list --assignee <identity_client_id_or_principal_id>
Przypisz wymaganą rolę. W razie potrzeby utwórz rolę z wymaganymi uprawnieniami.
Aby uzyskać więcej informacji na temat konfigurowania uprawnień, zobacz Konfigurowanie uprawnień konstruktora obrazów maszyny wirtualnej przy użyciu interfejsu wiersza polecenia platformy Azure lub Konfigurowanie uprawnień konstruktora obrazów maszyny wirtualnej przy użyciu programu PowerShell.
Operacja zasobu została zakończona z stanem aprowizacji terminalu "Niepowodzenie"
Błąd
Microsoft.VirtualMachineImages/imageTemplates 'helloImageTemplateforSIG01' failed with message '{
"status": "Failed",
"error": {
"code": "ResourceDeploymentFailure",
"message": "The resource operation completed with terminal provisioning state 'Failed'.",
"details": [
{
"code": "InternalOperationError",
"message": "Internal error occurred."
Przyczyna
W większości przypadków błąd dotyczący niepowodzenia wdrażania zasobów występuje z powodu braku uprawnień. Konflikt z grupą zasobów inscenizacyjnych może również spowodować ten błąd.
Rozwiązanie
W zależności od scenariusza konstruktor obrazów maszyny wirtualnej może potrzebować uprawnień:
- Źródłowy obraz lub grupa zasobów Galerii obliczeniowej Azure (dawniej Galeria obrazów udostępnionych).
- Obraz dystrybucyjny lub zasób Azure Compute Gallery.
- Konto magazynowe, kontener lub obiekt blob, do którego
File
uzyskuje dostęp konfigurator.
Upewnij się również, że nazwa grupy zasobów staging jest unikalna dla każdego szablonu obrazu.
Aby uzyskać więcej informacji na temat konfigurowania uprawnień, zobacz Konfigurowanie uprawnień konstruktora obrazów maszyny wirtualnej przy użyciu interfejsu wiersza polecenia platformy Azure lub Konfigurowanie uprawnień konstruktora obrazów maszyny wirtualnej przy użyciu programu PowerShell.
Wystąpił błąd podczas pobierania obrazu zarządzanego
Błąd
Build (Managed Image) step failed: Error getting Managed Image '/subscriptions/.../providers/Microsoft.Compute/images/mymanagedmg1': Error getting managed image (...): compute.
ImagesClient#Get: Failure responding to request: StatusCode=403 -- Original Error: autorest/azure: Service returned an error.
Status=403 Code="AuthorizationFailed" Message="The client '......' with object id '......' doesn't have authorization to perform action 'Microsoft.Compute/images/read' over scope
Przyczyna
Brak uprawnień.
Rozwiązanie
W zależności od scenariusza Kreator obrazów VM może potrzebować uprawnień:
- Źródłowy obraz lub grupa zasobów usługi Azure Compute Gallery.
- Obraz dystrybucji lub zasób usługi Azure Compute Gallery.
- Konto magazynu, kontener lub obiekt blob, do którego dostęp uzyskuje
File
konfigurator.
Aby uzyskać więcej informacji na temat konfigurowania uprawnień, zobacz Konfigurowanie uprawnień konstruktora obrazów maszyny wirtualnej przy użyciu interfejsu wiersza polecenia platformy Azure lub Konfigurowanie uprawnień konstruktora obrazów maszyny wirtualnej przy użyciu programu PowerShell.
Krok kompilacji nie powiódł się dla wersji obrazu
Błąd
Build (Shared Image Version) step failed for Image Version '/subscriptions/.../providers/Microsoft.Compute/galleries/.../images/... /versions/0.23768.4001': Error getting Image Version '/subscriptions/.../resourceGroups/<rgName>/providers/Microsoft.Compute/galleries/.../images/.../versions/0.23768.4001': Error getting image version '... :0.23768.4001': compute.GalleryImageVersionsClient#Get: Failure responding to request: StatusCode=404 -- Original Error: autorest/azure: Service returned an error.
Status=404 Code="ResourceNotFound" Message="The Resource 'Microsoft.Compute/galleries/.../images/.../versions/0.23768.4001' under resource group '<rgName>' was not found."
Przyczyna
Konstruktor obrazów maszyny wirtualnej nie może zlokalizować obrazu źródłowego.
Rozwiązanie
Upewnij się, że obraz źródłowy jest poprawny i istnieje w lokalizacji konstruktora obrazów maszyny wirtualnej.
Wystąpił błąd podczas pobierania pliku zewnętrznego do pliku lokalnego
Błąd
Downloading external file (<myFile>) to local file (xxxxx.0.customizer.fp) [attempt 1 of 10] failed: Error downloading '<myFile>' to 'xxxxx.0.customizer.fp'..
Przyczyna
Nazwa pliku lub lokalizacja jest niepoprawna lub lokalizacja nie jest osiągalna.
Rozwiązanie
Upewnij się, że plik jest osiągalny. Sprawdź, czy nazwa i lokalizacja są poprawne.
Niektóre repozytoria plików mogą używać nieobsługiwanych zestawów szyfrowania i powodować błędy pobierania w narzędziu Vm Image Builder. Przechowywanie plików i skryptów na koncie usługi Azure Storage w celu zapewnienia bezpiecznych zestawów szyfrowania i ułatwień dostępu przez narzędzie VM Image Builder. Aby uzyskać więcej informacji na temat sposobu przechowywania plików na kontach Azure Storage, zobacz Omówienie konta przechowywania.
Wystąpił błąd autoryzacji podczas tworzenia dysku
Kompilacja konstruktora obrazów maszyny wirtualnej kończy się niepowodzeniem z powodu błędu autoryzacji, który wygląda jak w poniższym przykładzie.
Błąd
Attempting to deploy created Image template in Azure fails with an 'The client '6df325020-fe22-4e39-bd69-10873965ac04' with object id '6df325020-fe22-4e39-bd69-10873965ac04' does not have authorization to perform action 'Microsoft.Compute/disks/write' over scope '/subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/disks/proxyVmDiskWin_<timestamp>' or the scope is invalid. If access was recently granted, please refresh your credentials.'
Przyczyna
Ten błąd występuje, gdy próbujesz określić wcześniej współistniejącą grupę zasobów i sieć wirtualną w usłudze VM Image Builder z obrazem źródłowym systemu Windows.
Rozwiązanie
Musisz przypisać rolę Współautorów do grupy zasobów dla usługi głównej odpowiadającej aplikacji pierwszej strony VM Image Builder. Użyj następujących poleceń interfejsu wiersza polecenia platformy Azure lub instrukcji witryny Azure Portal.
Najpierw sprawdź, czy jednostka usługi jest skojarzona z aplikacją first-party konstruktora obrazów maszyny wirtualnej przy użyciu następującego polecenia interfejsu wiersza polecenia platformy Azure:
az ad sp show --id {servicePrincipalName, or objectId}
Następnie, aby zaimplementować to rozwiązanie przy użyciu interfejsu wiersza polecenia platformy Azure, użyj następującego polecenia:
az role assignment create -g {ResourceGroupName} --assignee {AibrpSpOid} --role Contributor
Aby zaimplementować to rozwiązanie w portalu, postępuj zgodnie z instrukcjami w temacie Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal:
Dla Kroku 1: Zidentyfikuj wymagany zakres, wymagany zakres to twoja Grupa zasobów.
W przypadku kroku 3. Wybierz odpowiednią rolę, rola to Współautor.
W obszarze Krok 4. Wybierz, kto potrzebuje dostępu, wybierz element Azure Virtual Machine Image Builder.
W kroku 7. Przypisywanie roli przypisujesz rolę.
Rozwiązywanie problemów w przypadku kompilacji
W przypadku niepowodzeń kompilacji obrazu pobierz błąd z lastRunStatus
pliku, a następnie przejrzyj szczegóły w customization.log
pliku.
az image builder show --name $imageTemplateName --resource-group $imageResourceGroup
Get-AzImageBuilderTemplate -ImageTemplateName <imageTemplateName> -ResourceGroupName <imageTemplateResourceGroup> | Select-Object LastRunStatus, LastRunStatusMessage
Dziennik dostosowywania
Uzyskiwanie dostępu do dzienników na żywo podczas kompilacji obrazu
Aby skutecznie monitorować postęp kompilacji obrazu, możesz uzyskać dostęp do dzienników na żywo generowanych przez narzędzie Vm Image Builder w usłudze Azure Container Instances. Te dzienniki zapewniają wgląd w proces kompilacji w czasie rzeczywistym. Pomagają one zidentyfikować wszelkie problemy lub potwierdzić, że kompilacja jest kontynuowana zgodnie z oczekiwaniami.
Aby zlokalizować dzienniki na żywo i je wyświetlić:
Uruchom proces kompilacji obrazu.
Przejdź do witryny Azure Portal i wybierz pozycję Grupy zasobów. Filtruj według subskrypcji, w której zainicjowano kompilację obrazu.
Znajdź i wybierz tymczasową grupę zasobów skojarzona z kompilacją obrazu. Ta grupa zasobów zawiera zasoby kompilacji dla usługi Vm Image Builder. Aby uzyskać więcej informacji na temat przejściowej grupy zasobów, zobacz Właściwości: stagingResourceGroup.
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ę.W okienku po lewej stronie w obszarze Ustawienia wybierz pozycję Kontenery.
Przejdź do karty Dzienniki , aby wyświetlić dzienniki na żywo podczas procesu kompilacji obrazu.
Jeśli nie widzisz żadnych dzienników, spróbuj odświeżyć kontener po kilku minutach.
Pobieranie dziennika dostosowywania i/lub walidacji po kompilacji obrazu
Po zakończeniu kompilacji obrazu dzienniki dostosowywania i walidacji są przechowywane w kontenerze w ramach konta magazynu w przejściowej grupie zasobów utworzonej przez usługę Vm Image Builder. Aby uzyskać więcej informacji na temat grupy zasobów staging, zobacz Właściwości: stagingResourceGroup.
Aby zlokalizować i pobrać plik customization.log
lub validation.log
:
W portalu Azure przejdź do odpowiedniego konta magazynu, filtrując konta magazynu w grupie zasobów tymczasowych utworzonej przez usługę VM Image Builder.
W obszarze konta magazynu przejdź do pozycji Magazyn danych.
Wybierz opcję Kontener , a następnie wybierz
packerlogs
kontener.W kontenerze
packerlogs
jest wyświetlanych wiele folderów, jeśli kompilacja obrazu została uruchomiona wiele razy. Te foldery są rozmieszczane od najstarszej kompilacji do najnowszej. Wybierz folder odpowiadający interesującej Cię kompilacji.W wybranym folderze wybierz
customization.log
plik i/lubvalidation.log
, a następnie wybierz pozycję Pobierz , aby pobrać jego zawartość.
Etapy dziennika dostosowywania
Dziennik jest pełny. Obejmuje on kompilację obrazu, w tym wszelkie problemy z dystrybucją obrazów, takie jak replikacja usługi Azure Compute Gallery. Te problemy są wyświetlane w komunikacie o błędzie stanu szablonu obrazu.
Plik customization.log
zawiera następujące etapy:
Wdróż maszynę wirtualną i zależności kompilacji przy użyciu szablonów usługi Azure Resource Manager do przejściowej
IT_
grupy zasobów. Ten etap obejmuje wielePOST
żądań do dostawcy zasobów usługi VM Image Builder.Azure request method="POST" request="https://management.azure.com/subscriptions/<subID>/resourceGroups/IT_aibImageRG200_window2019VnetTemplate01_dec33089-1cc3-cccc-cccc-ccccccc/providers/Microsoft.Storage/storageAccounts .. PACKER OUT ==> azure-arm: Deploying deployment template ... ..
Uzyskaj stan wdrożeń. Ten etap obejmuje stan każdego wdrożenia zasobów:
PACKER ERR 2020/04/30 23:28:50 packer: 2020/04/30 23:28:50 Azure request method="GET" request="https://management.azure.com/subscriptions/<subID>/resourcegroups/IT_aibImageRG200_window2019VnetTemplate01_dec33089-1cc3-4505-ae28-6661e43fac48/providers/Microsoft.Resources/deployments/pkrdp51lc0339jg/operationStatuses/08586133176207523519?[REDACTED]" body=""
Nawiąż połączenie z maszyną wirtualną kompilacji.
W systemie Windows narzędzie VM Image Builder nawiązuje połączenie przy użyciu usługi WinRM:
PACKER ERR 2020/04/30 23:30:50 packer: 2020/04/30 23:30:50 Waiting for WinRM, up to timeout: 10m0s .. PACKER OUT azure-arm: WinRM connected.
W systemie Linux narzędzie VM Image Builder nawiązuje połączenie przy użyciu protokołu SSH:
PACKER OUT ==> azure-arm: Waiting for SSH to become available... PACKER ERR 2019/12/10 17:20:51 packer: 2020/04/10 17:20:51 [INFO] Waiting for SSH, up to timeout: 20m0s PACKER OUT ==> azure-arm: Connected to SSH!
Uruchamianie dostosowań. Gdy dostosowania są uruchamiane, można je zidentyfikować, przeglądając plik
customization.log
. Szukaj(telemetry)
:(telemetry) Starting provisioner windows-update (telemetry) ending windows-update (telemetry) Starting provisioner powershell (telemetry) ending powershell (telemetry) Starting provisioner file (telemetry) ending file (telemetry) Starting provisioner windows-restart (telemetry) ending windows-restart (telemetry) Finalizing. - This means the build has finished
Anulowanie aprowizacji. Konstruktor obrazów maszyny wirtualnej dodaje ukryty konfigurator. Ten krok jest odpowiedzialny za przygotowanie maszyny wirtualnej do anulowania aprowizacji. W systemie Windows uruchamia się
Sysprep
(przy użyciuc:\DeprovisioningScript.ps1
). W systemie Linux wykonywany jestwaagent-deprovision
(przy użyciu/tmp/DeprovisioningScript.sh
).Przykład:
PACKER ERR 2020/03/04 23:05:04 [INFO] (telemetry) Starting provisioner powershell PACKER ERR 2020/03/04 23:05:04 packer: 2020/03/04 23:05:04 Found command: if( TEST-PATH c:\DeprovisioningScript.ps1 ){cat c:\DeprovisioningScript.ps1} else {echo "Deprovisioning script [c:\DeprovisioningScript.ps1] could not be found. Image build may fail or the VM created from the Image may not boot. Please make sure the deprovisioning script is not accidentally deleted by a Customizer in the Template."}
Wyczyść. Po zakończeniu kompilacji zasoby narzędzia Image Builder maszyny wirtualnej zostaną usunięte:
PACKER ERR ==> azure-arm: Deleting individual resources ... ... PACKER ERR 2020/02/04 02:04:23 packer: 2020/02/04 02:04:23 Azure request method="DELETE" request="https://management.azure.com/subscriptions/<subId>/resourceGroups/IT_aibDevOpsImg_t_vvvvvvv_yyyyyy-de5f-4f7c-92f2-xxxxxxxx/providers/Microsoft.Network/networkInterfaces/pkrnijamvpo08eo?[REDACTED]" body="" ... PACKER ERR ==> azure-arm: The resource group was not created by Packer, not deleting ...
Rozwiązywanie problemów ze skryptem lub dostosowywaniem wbudowanym
Poniższe porady mogą pomóc w rozwiązywaniu problemów ze skryptem lub dostosowywaniem wbudowanym:
- Przetestuj kod przed dostarczeniem go do konstruktora obrazów maszyny wirtualnej.
- Upewnij się, że usługi Azure Policy i Azure Firewall zezwalają na łączność ze zdalnymi zasobami.
- Wyślij komentarze wyjściowe do konsoli przy użyciu polecenia
Write-Host
lubecho
. Umożliwia to przeszukiwaniecustomization.log
pliku.
Rozwiązywanie typowych błędów kompilacji
Wdrażanie szablonu nie powiodło się z powodu naruszenia zasad
Błąd
{
"statusCode": "BadRequest",
"serviceRequestId": null,
"statusMessage": "{\"error\":{\"code\":\"InvalidTemplateDeployment\",\"message\":\"The template deployment failed because of policy violation. Please see details for more information.\",\"details\":[{\"code\":\"RequestDisallowedByPolicy\",\"target\":\"<target_name>\",\"message\":\"Resource '<resource_name>' was disallowed by policy. Policy identifiers: '[{\\\"policyAssignment\\\":{\\\"name\\\":\\\"[Initiative] KeyVault (Microsoft.KeyVault)\\\",\\\"id\\\":\\\"/providers/Microsoft.Management/managementGroups/<managementGroup_name>/providers/Microsoft.Authorization/policyAssignments/Microsoft.KeyVault\\\"},\\\"policyDefinition\\\":{\\\"name\\\":\\\"Azure Key Vault should disable public network access\\\",\\\"id\\\":\\\"/providers/Microsoft.Management/managementGroups/<managementGroup_name>/providers/Microsoft.Authorization/policyDefinitions/KeyVault.disablePublicNetworkAccess_deny_deny\\\"},\\\"policySetDefinition\\\":{\\\"name\\\":\\\"[Initiative] KeyVault (Microsoft.KeyVault)\\\",\\\"id\\\":\\\"/providers/Microsoft.Management/managementGroups/<managementGroup_name>/providers/Microsoft.Authorization/policySetDefinitions/Microsoft.KeyVault\\\"}}]'.\",\"additionalInfo\":[{\"type\":\"PolicyViolation\"}]}]}}",
"eventCategory": "Administrative",
"entity": "/subscriptions/<subscription_ID>/<resourcegroups>/<resourcegroupname>/providers/Microsoft.Resources/deployments/<deployment_name>",
"message": "Microsoft.Resources/deployments/validate/action",
"hierarchy": "<subscription_ID>/<resourcegroupname>/<policy_name>/<managementGroup_name>/<deployment_ID>"
}
Przyczyna
Powyższy błąd naruszenia zasad jest wynikiem korzystania z usługi Azure Key Vault z wyłączonym dostępem publicznym. Obecnie konstruktor obrazów maszyny wirtualnej nie obsługuje tej konfiguracji.
Rozwiązanie
Musisz utworzyć magazyn kluczy, mając włączony dostęp publiczny.
Komenda budowania Packer kończy się niepowodzeniem
Błąd
"provisioningState": "Succeeded",
"lastRunStatus": {
"startTime": "2020-04-30T23:24:06.756985789Z",
"endTime": "2020-04-30T23:39:14.268729811Z",
"runState": "Failed",
"message": "Failed while waiting for packerizer: Microservice has failed: Failed while processing request: Error when executing packerizer: Packer build command has failed: exit status 1. During the image build, a failure has occurred, please review the build log to identify which build/customization step failed. For more troubleshooting steps go to https://aka.ms/azvmimagebuilderts. Image Build log location: https://xxxxxxxxxx.blob.core.windows.net/packerlogs/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx/customization.log. OperationId: xxxxxx-5a8c-4379-xxxx-8d85493bc791. Use this operationId to search packer logs."
Przyczyna
Niepowodzenie polecenia kompilacji pakietu jest niepowodzeniem dostosowywania.
Rozwiązanie
Przejrzyj dziennik, aby zlokalizować błędy konfiguratora. Wyszukaj (telemetry)
.
Przykład:
(telemetry) Starting provisioner windows-update
(telemetry) ending windows-update
(telemetry) Starting provisioner powershell
(telemetry) ending powershell
(telemetry) Starting provisioner file
(telemetry) ending file
(telemetry) Starting provisioner windows-restart
(telemetry) ending windows-restart
(telemetry) Finalizing. - This means the build has finished
Wdrażanie kończy się niepowodzeniem z powodu przekroczenia limitu czasu
Błąd
Deployment failed. Correlation ID: xxxxx-xxxx-xxxx-xxxx-xxxxxxxxx. Failed in building/customizing image: Failed while waiting for packerizer: Timeout waiting for microservice to complete: 'context deadline exceeded'
Przyczyna
Kompilacja przekroczyła limit czasu. Ten błąd pojawia się w pliku lastRunStatus
.
Rozwiązanie
Przejrzyj plik
customization.log
. Zidentyfikuj ostatni program dostosowujący uruchomiony. Wyszukaj ciąg(telemetry)
, zaczynając od dołu dziennika.Sprawdź dostosowania skryptu. Dostosowania mogą nie wyłączać interakcji użytkownika dla poleceń, takich jak opcje
quiet
. Na przykładapt-get install -y
powoduje, że wykonanie skryptu oczekuje 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 skrypcie, które mogą powodować, że skrypt oczekuje.
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 plików, rozważ rozmiar podstawowej maszyny wirtualnej kompilacji.
Usługa używa maszyny wirtualnej Standard_D1_v2. Maszyna wirtualna ma jeden procesor wirtualny i 3,5 GB pamięci. Jeśli pobierasz 50 GB, prawdopodobnie wyczerpasz zasoby maszyny wirtualnej i wystąpią błędy komunikacji między konstruktorem obrazów maszyny wirtualnej a maszyną wirtualną kompilacji. Ponów próbę kompilacji przy użyciu maszyny wirtualnej o większej ilości pamięci, ustawiając wartość
VM_size
.
Czas pobierania pliku jest długi
Błąd
[086cf9c4-0457-4e8f-bfd4-908cfe3fe43c] PACKER OUT
myBigFile.zip 826 B / 826000 B 1.00%
[086cf9c4-0457-4e8f-bfd4-908cfe3fe43c] PACKER OUT
myBigFile.zip 1652 B / 826000 B 2.00%
[086cf9c4-0457-4e8f-bfd4-908cfe3fe43c] PACKER OUT
..
hours later...
..
myBigFile.zip 826000 B / 826000 B 100.00%
[086cf9c4-0457-4e8f-bfd4-908cfe3fe43c] PACKER OUT
Przyczyna
Konfigurator File
pobiera duży plik.
Rozwiązanie
Konfigurator File
nadaje się tylko do pobierania małych plików (mniej niż 20 MB). W przypadku większych plików do pobrania użyj skryptu lub wbudowanego polecenia. Na przykład w systemie Linux można użyć polecenia wget
lub curl
. W systemie Windows można użyć polecenia Invoke-WebRequest
.
Ciągłe ponowne uruchamianie systemu Windows kończy się niepowodzeniem z kodem błędu 1190
Błąd
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 [INFO] (telemetry) Starting provisioner windows-restart
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-plugin-azure plugin: 2023/06/13 08:28:58 [INFO] starting remote command: shutdown /r /f /t 10
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-plugin-azure plugin: 2023/06/13 08:28:58 [INFO] command 'shutdown /r /f /t 10' exited with code: 0
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER OUT ==> azure-arm: A system shutdown has already been scheduled.(1190)
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-plugin-azure plugin: 2023/06/13 08:28:58 [INFO] RPC endpoint: Communicator ended with: 0
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 [INFO] 0 bytes written for 'stdout'
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 [INFO] 0 bytes written for 'stderr'
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 [INFO] RPC client: Communicator ended with: 0
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 [INFO] RPC endpoint: Communicator ended with: 0
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-provisioner-windows-restart plugin: [INFO] 0 bytes written for 'stdout'
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-provisioner-windows-restart plugin: [INFO] 0 bytes written for 'stderr'
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-provisioner-windows-restart plugin: [INFO] RPC client: Communicator ended with: 0
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-provisioner-windows-restart plugin: Check if machine is rebooting...
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-plugin-azure plugin: 2023/06/13 08:28:58 [INFO] starting remote command: shutdown /r /f /t 60 /c "packer restart test"
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-plugin-azure plugin: 2023/06/13 08:28:58 [INFO] command 'shutdown /r /f /t 60 /c "packer restart test"' exited with code: 1190
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-plugin-azure plugin: 2023/06/13 08:28:58 [INFO] RPC endpoint: Communicator ended with: 1190
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 [INFO] 52 bytes written for 'stderr'
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 [INFO] 0 bytes written for 'stdout'
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 [INFO] RPC client: Communicator ended with: 1190
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 [INFO] RPC endpoint: Communicator ended with: 1190
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-provisioner-windows-restart plugin: [INFO] 52 bytes written for 'stderr'
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-provisioner-windows-restart plugin: [INFO] 0 bytes written for 'stdout'
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-provisioner-windows-restart plugin: [INFO] RPC client: Communicator ended with: 1190
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:28:58 packer-provisioner-windows-restart plugin: Reboot already in progress, waiting...
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:29:08 packer-provisioner-windows-restart plugin: Check if machine is rebooting...
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:29:09 [INFO] 0 bytes written for 'stderr'
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:29:09 packer-provisioner-windows-restart plugin: [INFO] 0 bytes written for 'stderr'
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:29:09 packer-provisioner-windows-restart plugin: Waiting for machine to reboot with timeout: 15m0s
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:29:09 packer-provisioner-windows-restart plugin: Waiting for machine to become available...
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER OUT ==> Some builds didn't complete successfully and had errors:
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:46:26 machine readable: azure-arm,error []string{"Timeout waiting for machine to restart."}
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER OUT --> azure-arm: Timeout waiting for machine to restart.
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR ==> Builds finished but no artifacts were created.
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER OUT
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER ERR 2023/06/13 08:46:26 [INFO] (telemetry) Finalizing.
[864c0337-b300-48ab-8e8e-7894bc695b7c] PACKER OUT ==> Builds finished but no artifacts were created.
Przyczyna
Krok Windows Update zostaje ogłoszony przedwcześnie w obrazach opartych na systemie Windows Server 2016.
Rozwiązanie
Zwiększ restartTimeout
z 15 minut na 30 minut.
Wystąpił błąd podczas oczekiwania na galerię 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
VM Image Builder przekroczył limit czasu podczas oczekiwania na dodanie i zreplikowanie obrazu do Azure Compute Gallery.
Jeśli grafika jest umieszczana w galerii, możesz założyć, że budowanie grafiki zakończyło się pomyślnie. Jednak cały proces zakończył się niepowodzeniem, ponieważ kreator obrazów maszyny wirtualnej czekał na zakończenie replikacji przez Galerię Obliczeniową Azure.
Mimo że kompilacja nie powiodła się, replikacja będzie kontynuowana. Właściwości wersji obrazu można uzyskać, sprawdzając dystrybucję runOutput
:
$runOutputName=<distributionRunOutput>
az resource show \
--ids "/subscriptions/$subscriptionID/resourcegroups/$imageResourceGroup/providers/Microsoft.VirtualMachineImages/imageTemplates/$imageTemplateName/runOutputs/$runOutputName" \
--api-version=2020-02-14
Rozwiązanie
Zwiększ wartość buildTimeoutInMinutes
.
Zdarzenia informacyjne pokazują niskie zasoby systemu Windows
Błąd
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT azure-arm: Waiting for operation to complete (system performance: 1% cpu; 37% memory)...
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT azure-arm: Waiting for operation to complete (system performance: 51% cpu; 35% memory)...
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT azure-arm: Waiting for operation to complete (system performance: 21% cpu; 37% memory)...
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT azure-arm: Waiting for operation to complete (system performance: 21% cpu; 36% memory)...
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT azure-arm: Waiting for operation to complete (system performance: 90% cpu; 32% memory)...
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT azure-arm: Waiting for the Windows Modules Installer to exit...
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer: 2020/04/30 23:38:58 [INFO] command 'PowerShell -ExecutionPolicy Bypass -OutputFormat Text -File C:/Windows/Temp/packer-windows-update-elevated.ps1' exited with code: 101
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT ==> azure-arm: Restarting the machine...
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer: 2020/04/30 23:38:58 [INFO] RPC endpoint: Communicator ended with: 101
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 [INFO] 1672 bytes written for 'stdout'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 [INFO] 0 bytes written for 'stderr'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 [INFO] RPC client: Communicator ended with: 101
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 [INFO] RPC endpoint: Communicator ended with: 101
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT ==> azure-arm: Waiting for machine to become available...
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer-provisioner-windows-update: 2020/04/30 23:38:58 [INFO] 1672 bytes written for 'stdout'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer-provisioner-windows-update: 2020/04/30 23:38:58 [INFO] 0 bytes written for 'stderr'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer-provisioner-windows-update: 2020/04/30 23:38:58 [INFO] RPC client: Communicator ended with: 101
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer: 2020/04/30 23:38:58 [INFO] starting remote command: shutdown.exe -f -r -t 0 -c "packer restart"
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer: 2020/04/30 23:38:58 [INFO] command 'shutdown.exe -f -r -t 0 -c "packer restart"' exited with code: 0
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer: 2020/04/30 23:38:58 [INFO] RPC endpoint: Communicator ended with: 0
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 [INFO] 0 bytes written for 'stderr'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 [INFO] 0 bytes written for 'stdout'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT ==> azure-arm: A system shutdown is in progress.(1115)
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 [INFO] RPC client: Communicator ended with: 0
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 [INFO] RPC endpoint: Communicator ended with: 0
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer-provisioner-windows-update: 2020/04/30 23:38:58 [INFO] 0 bytes written for 'stdout'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer-provisioner-windows-update: 2020/04/30 23:38:58 [INFO] 0 bytes written for 'stderr'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:58 packer-provisioner-windows-update: 2020/04/30 23:38:58 [INFO] RPC client: Communicator ended with: 0
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 packer: 2020/04/30 23:38:59 [INFO] starting remote command: shutdown.exe -f -r -t 60 -c "packer restart test"
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 packer: 2020/04/30 23:38:59 [INFO] command 'shutdown.exe -f -r -t 60 -c "packer restart test"' exited with code: 1115
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 packer: 2020/04/30 23:38:59 [INFO] RPC endpoint: Communicator ended with: 1115
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 [INFO] 0 bytes written for 'stdout'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 [INFO] 40 bytes written for 'stderr'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 [INFO] RPC client: Communicator ended with: 1115
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 [INFO] RPC endpoint: Communicator ended with: 1115
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 packer-provisioner-windows-update: 2020/04/30 23:38:59 [INFO] 40 bytes written for 'stderr'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 packer-provisioner-windows-update: 2020/04/30 23:38:59 [INFO] 0 bytes written for 'stdout'
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 packer-provisioner-windows-update: 2020/04/30 23:38:59 [INFO] RPC client: Communicator ended with: 1115
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER ERR 2020/04/30 23:38:59 packer-provisioner-windows-update: 2020/04/30 23:38:59 Retryable error: Machine not yet available (exit status 1115)
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT Build 'azure-arm' errored: unexpected EOF
[45f485cf-5a8c-4379-9937-8d85493bc791] PACKER OUT
Przyczyna
Przyczyną jest wyczerpanie zasobów. Ten problem występuje często, gdy usługa Windows Update jest uruchamiana z domyślnym rozmiarem maszyny wirtualnej kompilacji, D1_V2.
Rozwiązanie
Zwiększ rozmiar maszyny wirtualnej kompilacji.
Proces budowania został zakończony, ale nie utworzono żadnych artefaktów
Ostrzeżenie
[<log_id>] PACKER 2023/09/14 19:01:18 ui: Build 'azure-arm' finished after 3 minutes 13 seconds.
[<log_id>] PACKER 2023/09/14 19:01:18 ui:
[<log_id>] PACKER ==> Wait completed after 3 minutes 13 seconds
[<log_id>] PACKER 2023/09/14 19:01:18 ui:
[<log_id>] PACKER ==> Builds finished but no artifacts were created.
[<log_id>] PACKER 2023/09/14 19:01:18 [INFO] (telemetry) Finalizing.
[<log_id>] PACKER 2023/09/14 19:01:19 waiting for all plugin processes to complete...
[<log_id>] PACKER 2023/09/14 19:01:19 /aib/packerInput/packer-plugin-azure: plugin process exited
[<log_id>] PACKER 2023/09/14 19:01:19 /aib/packerInput/packer: plugin process exited
[<log_id>] PACKER 2023/09/14 19:01:19 /aib/packerInput/packer: plugin process exited
[<log_id>] PACKER 2023/09/14 19:01:19 /aib/packerInput/packer: plugin process exited
[<log_id>] PACKER Done exporting Packer logs to Azure Storage.
Rozwiązanie
Możesz bezpiecznie zignorować poprzednie ostrzeżenie.
Tworzenie obrazu zostało pominięte
Ostrzeżenie
[<log_id>] PACKER 2023/09/14 19:00:18 ui: ==> azure-arm: -> Snapshot ID : '/subscriptions/<subscription_id>/resourceGroups/<resourcegroup_name>/providers/Microsoft.Compute/snapshots/<snapshot_name>'
[<log_id>] PACKER 2023/09/14 19:00:18 ui: ==> azure-arm: Skipping image creation...
[<log_id>] PACKER 2023/09/14 19:00:18 ui: ==> azure-arm:
[<log_id>] PACKER ==> azure-arm: Deleting individual resources ...
[<log_id>] PACKER 2023/09/14 19:00:18 packer-plugin-azure plugin: 202
Rozwiązanie
Możesz bezpiecznie zignorować poprzednie ostrzeżenie.
Nie można odnaleźć zasobu
Błąd
"provisioningState": "Succeeded",
"lastRunStatus": {
"startTime": "2020-05-01T00:13:52.599326198Z",
"endTime": "2020-05-01T00:15:13.62366898Z",
"runState": "Failed",
"message": "network.InterfacesClient#UpdateTags: Failure responding to request: StatusCode=404 -- Original Error: autorest/azure: Service returned an error. Status=404 Code=\"ResourceNotFound\" Message=\"The Resource 'Microsoft.Network/networkInterfaces/aibpls7lz2e.nic.4609d697-be0a-4cb0-86af-49b6fe877fe1' under resource group 'IT_aibImageRG200_window2019VnetTemplate01_9988723b-af56-413a-9006-84130af0e9df' was not found.\""
},
Przyczyna
Brak uprawnień.
Rozwiązanie
Sprawdź ponownie, czy konstruktor obrazów maszyny wirtualnej ma wszystkie wymagane uprawnienia.
Aby uzyskać więcej informacji na temat konfigurowania uprawnień, zobacz Konfigurowanie uprawnień konstruktora obrazów maszyny wirtualnej przy użyciu interfejsu wiersza polecenia platformy Azure lub Konfigurowanie uprawnień konstruktora obrazów maszyny wirtualnej przy użyciu programu PowerShell.
Wystąpił problem z czasem działania narzędzia Sysprep
Błąd
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: Write-Output '>>> Waiting for GA Service (RdAgent) to start ...'
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: while ((Get-Service RdAgent) -and ((Get-Service RdAgent).Status -ne 'Running')) { Start-Sleep -s 5 }
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: Write-Output '>>> Waiting for GA Service (WindowsAzureTelemetryService) to start ...'
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: while ((Get-Service WindowsAzureTelemetryService) -and ((Get-Service WindowsAzureTelemetryService).Status -ne 'Running')) { Start-Sleep -s 5 }
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: Write-Output '>>> Waiting for GA Service (WindowsAzureGuestAgent) to start ...'
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: while ((Get-Service WindowsAzureGuestAgent) -and ((Get-Service WindowsAzureGuestAgent).Status -ne 'Running')) { Start-Sleep -s 5 }
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: Write-Output '>>> Sysprepping VM ...'
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: if( Test-Path $Env:SystemRoot\system32\Sysprep\unattend.xml ) {
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: Remove-Item $Env:SystemRoot\system32\Sysprep\unattend.xml -Force
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: }
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: & $Env:SystemRoot\System32\Sysprep\Sysprep.exe /oobe /generalize /quiet /quit
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: while($true) {
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: $imageState = (Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State).ImageState
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: Write-Output $imageState
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: if ($imageState -eq 'IMAGE_STATE_GENERALIZE_RESEAL_TO_OOBE') { break }
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: Start-Sleep -s 5
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: }
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: Write-Output '>>> Sysprep complete ...'
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: >>> Waiting for GA Service (RdAgent) to start ...
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: >>> Waiting for GA Service (WindowsAzureTelemetryService) to start ...
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: >>> Waiting for GA Service (WindowsAzureGuestAgent) to start ...
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: >>> Sysprepping VM ...
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: IMAGE_STATE_COMPLETE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT ==> azure-arm: Get-Service : Cannot find any service with service name 'WindowsAzureGuestAgent'.
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT ==> azure-arm: At C:\DeprovisioningScript.ps1:6 char:9
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT ==> azure-arm: + while ((Get-Service WindowsAzureGuestAgent) -and ((Get-Service Window ...
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT ==> azure-arm: + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT ==> azure-arm: + CategoryInfo : ObjectNotFound: (WindowsAzureGuestAgent:String) [Get-Service], ServiceCommandException
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT ==> azure-arm: + FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.GetServiceCommand
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT ==> azure-arm:
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: IMAGE_STATE_UNDEPLOYABLE
...
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT azure-arm: IMAGE_STATE_UNDEPLOYABLE
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER ERR 2020/05/05 22:26:17 Cancelling builder after context cancellation context canceled
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT Cancelling build after receiving terminated
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER ERR 2020/05/05 22:26:17 packer: 2020/05/05 22:26:17 Cancelling provisioning due to context cancellation: context canceled
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT ==> azure-arm:
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER ERR 2020/05/05 22:26:17 packer: 2020/05/05 22:26:17 Cancelling hook after context cancellation context canceled
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER OUT ==> azure-arm: The resource group was not created by Packer, deleting individual resources ...
[922bdf36-b53c-4e78-9cd8-6b70b9674685] PACKER ERR ==> azure-arm: The resource group was not created by Packer, deleting individual resources ...
Przyczyna
Rozmiar maszyny wirtualnej D1_V2 może być przyczyną problemu z czasem. Jeśli dostosowania są ograniczone i uruchamiane są w czasie krótszym niż trzy sekundy, narzędzie VM Image Builder uruchamia Sysprep
polecenia w celu deaprovisionowania. Gdy narzędzie do budowy obrazów maszyn wirtualnych Sysprep
jest odinstalowywane, polecenie sprawdza WindowsAzureGuestAgent
, co może nie być w pełni zainstalowane i może spowodować problem z synchronizacją.
Rozwiązanie
Aby uniknąć problemu z chronometrażem, możesz zwiększyć rozmiar maszyny wirtualnej lub dodać 60-sekundowe dostosowywanie uśpienia programu PowerShell.
Dostawca usługi Azure Container Instances jest wyrejestrowany
Błąd
Azure Container Instances provider not registered for your subscription.
Przyczyna
Subskrypcja szablonu nie ma zarejestrowanego dostawcy usługi Azure Container Instances.
Rozwiązanie
Zarejestruj dostawcę usługi Azure Container Instances dla subskrypcji szablonu i dodaj jedno z następujących poleceń:
- Interfejs wiersza polecenia platformy Azure:
az provider register -n Microsoft.ContainerInstance
- Program Azure PowerShell:
Register-AzResourceProvider -ProviderNamespace Microsoft.ContainerInstance
Subskrypcja przekroczyła przydział usługi Azure Container Instances
Błąd
Azure Container Instances quota exceeded
Przyczyna
Twoja subskrypcja nie ma wystarczającego limitu usługi Azure Container Instances, aby kreator obrazów maszyn wirtualnych mógł pomyślnie zbudować obraz.
Rozwiązanie
Możesz wykonać następujące czynności, aby udostępnić przydział usługi Azure Container Instances dla konstruktora obrazów maszyn wirtualnych:
Wyszukaj inne użycie usługi Azure Container Instances w ramach subskrypcji. Usuń wszystkie niepotrzebne wystąpienia, aby udostępnić przydział zasobów dla konstruktora obrazów maszyn wirtualnych.
Konstruktor obrazów maszyny wirtualnej wdraża usługi Azure Container Instances tylko tymczasowo podczas kompilacji. Te wystąpienia są usuwane po zakończeniu kompilacji.
Jeśli w ramach subskrypcji jest uruchomionych zbyt wiele współbieżnych kompilacji obrazów, możesz rozważyć opóźnienie niektórych kompilacji obrazu. To opóźnienie zmniejsza współbieżne użycie usługi Azure Container Instances w ramach subskrypcji.
Jeśli szablony obrazów są skonfigurowane na potrzeby automatycznych kompilacji obrazów za pośrednictwem wyzwalaczy, narzędzie VM Image Builder automatycznie ponawia próbę takich kompilacji, które zakończyły się niepowodzeniem.
Jeśli bieżące limity usługi Azure Container Instances dla twojej subskrypcji są zbyt niskie, aby obsługiwać scenariusze tworzenia obrazów, możesz zażądać zwiększenia limitu przydziału usługi Azure Container Instances.
Uwaga / Notatka
Zasoby Azure Container Instances są niezbędne dla Izolowanych Procesów Kompilacji Obrazów.
Zbyt wiele zasobów usługi Azure Container Instances jest wdrażanych w danym okresie
Błąd
Zbyt wiele instancji kontenerów Azure wdrożono w krótkim czasie.
Przyczyna
Twoja subskrypcja nie ma wystarczającego limitu przydziału usługi Azure Container Instances dla konstruktora obrazów maszyny wirtualnej, aby pomyślnie kompilować obrazy współbieżnie.
Rozwiązanie
Możesz wypróbować następujące rozwiązania:
- Spróbuj ponownie wykonać nieudane kompilacje w mniej równoczesny sposób.
- Jeśli bieżące limity usługi Azure Container Instances dla twojej subskrypcji są zbyt niskie, aby obsługiwać scenariusze tworzenia obrazów, możesz zażądać zwiększenia limitu przydziału usługi Azure Container Instances.
Funkcja izolowanych kompilacji obrazów powoduje błąd
Błąd
Kompilacje konstruktora obrazów maszyny wirtualnej kończą się niepowodzeniem z powodu kompilacji obrazów wyizolowanych.
Przyczyna
Kompilacje konstruktora obrazów maszyn wirtualnych mogą zakończyć się niepowodzeniem z powodów wymienionych w innym miejscu w tym artykule. Istnieje jednak niewielkie prawdopodobieństwo, że kompilacja zakończy się niepowodzeniem z powodu kompilacji obrazu izolowanego, w zależności od scenariusza, limitów przydziału subskrypcji lub nieoczekiwanego błędu usługi. Aby uzyskać więcej informacji, zobacz izolowane kompilacje obrazów.
Rozwiązanie
Jeśli ustalisz, że kompilacja kończy się niepowodzeniem z powodu kompilacji izolowanych obrazów, upewnij się, że:
- Żadne zasady platformy Azure nie blokują wdrażania zasobów wymienionych w sekcji Wymagania wstępne tego artykułu (w szczególności usługi Azure Container Instances).
- Twoja subskrypcja ma wystarczający przydział dla usługi Azure Container Instances, aby obsłużyć wszystkie współbieżne kompilacje obrazów. Aby uzyskać więcej informacji, zobacz sekcję Subskrypcja przekroczyła limit przydziału usługi Azure Container Instances w tym artykule.
Konstruktor obrazów maszyny wirtualnej jest obecnie w trakcie wdrażania izolowanych kompilacji obrazów. Określone szablony obrazów nie są powiązane z kompilacjami izolowanych obrazów, a ten sam szablon obrazu może lub nie może używać kompilacji izolowanych obrazów podczas różnych kompilacji.
Aby tymczasowo uruchomić kompilację bez kompilacji izolowanych obrazów, spróbuj ponownie skompilować kompilację. Ponieważ szablony obrazów nie są powiązane z funkcją izolowanych kompilacji obrazów, ponawianie próby kompilacji ma duże prawdopodobieństwo ponownego uruchomienia bez kompilacji izolowanych obrazów.
Jeśli żadne z tych rozwiązań nie zmniejsza problemów z nieudanymi kompilacjami obrazów, możesz skontaktować się z pomocą techniczną platformy Azure, aby tymczasowo wyłączyć funkcję izolowanych kompilacji obrazów w subskrypcji. Aby uzyskać więcej informacji, zobacz Tworzenie wniosku o pomoc techniczną na platformie Azure.
Uwaga / Notatka
Jeśli funkcja izolowanego budowania obrazów zostanie ostatecznie włączona we wszystkich regionach i szablonach, poprzedzające środki zaradcze będą miały jedynie tymczasowy charakter. Najlepiej jest rozwiązać podstawową przyczynę błędów kompilacji.
Kompilacja jest anulowana po anulowaniu kontekstu
Błąd
PACKER ERR 2020/03/26 22:11:23 Cancelling builder after context cancellation context canceled
PACKER OUT Cancelling build after receiving terminated
PACKER ERR 2020/03/26 22:11:23 packer-builder-azure-arm plugin: Cancelling hook after context cancellation context canceled
..
PACKER ERR 2020/03/26 22:11:23 packer-builder-azure-arm plugin: Cancelling provisioning due to context cancellation: context canceled
PACKER ERR 2020/03/26 22:11:25 packer-builder-azure-arm plugin: [ERROR] Remote command exited without exit status or exit signal.
PACKER ERR 2020/03/26 22:11:25 packer-builder-azure-arm plugin: [INFO] RPC endpoint: Communicator ended with: 2300218
PACKER ERR 2020/03/26 22:11:25 [INFO] 148974 bytes written for 'stdout'
PACKER ERR 2020/03/26 22:11:25 [INFO] 0 bytes written for 'stderr'
PACKER ERR 2020/03/26 22:11:25 [INFO] RPC client: Communicator ended with: 2300218
PACKER ERR 2020/03/26 22:11:25 [INFO] RPC endpoint: Communicator ended with: 2300218
Przyczyna
Konstruktor obrazów maszyny wirtualnej używa portu 22 (Linux) lub 5986 (Windows) w celu nawiązania połączenia z maszyną wirtualną dla celów kompilacji. Ten problem występuje, gdy usługa jest odłączona od maszyny wirtualnej kompilacji podczas kompilacji obrazu. Przyczyny rozłączenia mogą się różnić, ale uruchomienie lub konfiguracja zapory w skrypcie może blokować wymienione wcześniej porty.
Rozwiązanie
Przejrzyj skrypty pod kątem zmian lub włączenia zapory albo zmian w protokołach SSH lub WinRM. Upewnij się, że wszelkie zmiany umożliwiają stałą łączność między usługą a maszyną wirtualną kompilacji na wcześniej wymienionych portach. Aby uzyskać więcej informacji, zobacz Opcje sieciowe konstruktora obrazów maszyny wirtualnej.
Błędy JWT pojawiają się w dzienniku na początku kompilacji
Błąd
Na początku procesu kompilacji kompilacja kończy się niepowodzeniem, a dziennik wskazuje błąd tokenu internetowego JSON (JWT):
PACKER OUT Error: Failed to prepare build: "azure-arm"
PACKER ERR
PACKER OUT
PACKER ERR * client_jwt will expire within 5 minutes, please use a JWT that is valid for at least 5 minutes
PACKER OUT 1 error(s) occurred:
Przyczyna
Wartość buildTimeoutInMinutes
w szablonie jest ustawiona na wartość z zakresu od 1 do 5 minut.
Rozwiązanie
Zgodnie z opisem w artykule "Create a VM Image Builder template" (Tworzenie szablonu konstruktora obrazów maszyn wirtualnych), limit czasu musi być ustawiony na 0 minut, aby użyć wartości domyślnej lub na więcej niż 5 minut, aby zastąpić wartość domyślną. Zmień limit czasu w szablonie na 0 minut, aby użyć wartości domyślnej lub zmień go na co najmniej 6 minut.
Wyświetlane są błędy usuwania zasobów
Błąd
Zasoby pośrednie są czyszczone pod koniec kompilacji, a dziennik dostosowywania może zawierać kilka błędów usuwania zasobów:
PACKER OUT ==> azure-arm: Error deleting resource. Will retry.
...
PACKER OUT ==> azure-arm: Error: network.PublicIPAddressesClient#Delete: Failure sending request: StatusCode=0 -- Original Error: Code="PublicIPAddressCannotBeDeleted" Message=...
...
PACKER ERR 2022/03/07 18:43:06 packer-plugin-azure plugin: 2022/03/07 18:43:06 Retryable error: network.SecurityGroupsClient#Delete: Failure sending request: StatusCode=0 -- Original Error: Code="InUseNetworkSecurityGroupCannotBeDeleted"...
Przyczyna
Te komunikaty dziennika błędów są w większości nieszkodliwe, ponieważ operacje usuwania zasobów są ponawiane kilka razy. Zazwyczaj ostatecznie odniosą sukces. To zachowanie można zweryfikować, kontynuując śledzenie dzienników usuwania do momentu obserwowania komunikatu o powodzeniu. Alternatywnie możesz sprawdzić tymczasową grupę zasobów, aby potwierdzić, czy zasób został usunięty.
Wykonywanie tych obserwacji jest szczególnie ważne w przypadku niepowodzeń procesu budowania. Te komunikaty o błędach mogą prowadzić do stwierdzenia, że są one przyczyną błędów, nawet jeśli rzeczywiste błędy mogą znajdować się w innym miejscu.
Błąd
Gdy obrazy utknęły w usunięciu szablonu, dziennik dostosowywania może wyświetlić następujący błąd:
error deleting resource id /subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Network/networkInterfaces/<networkInterfacName>: resources.Client#DeleteByID: Failure sending request: StatusCode=400 --
Original Error: Code="NicInUseWithPrivateEndpoint"
Message="Network interface /subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Network/networkInterfaces/<networkInterfacName> cannot be deleted because it is currently in use with an private endpoint (/subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Network/privateEndpoints/<pIname>)." Details=[]
Przyczyna
Ten błąd występuje, ponieważ interfejs sieciowy jest obecnie używany z prywatnym punktem końcowym.
Rozwiązanie
Aby rozwiązać ten problem, usuń następujące zasoby pojedynczo w tej określonej kolejności:
- Prywatne połączenie punktu końcowego. To połączenie można znaleźć w zasobie usługi Azure Private Link, przechodząc do karty Połączenia prywatnego punktu końcowego na stronie zasobu usługi Private Link.
- Usługa Private Link.
- Interfejs sieciowy i moduł równoważenia obciążenia.
- Grupa zasobów.
- Szablon obrazu.
Aby uzyskać więcej pomocy, możesz skontaktować się z pomocą techniczną platformy Azure , aby rozwiązać problem z zablokowanym usuwaniem.
Nie można odnaleźć celu dystrybucji w żądaniu aktualizacji
Błąd
Validation failed: Distribute target with Runoutput name <runoutputname> not found in the update request. Deleting a distribution target is not allowed.
Przyczyna
Ten błąd występuje, gdy istniejący cel dystrybucji nie zostanie znaleziony w treści żądania aktualizacji.
Rozwiązanie
Tablica dystrybucyjna powinna zawierać wszystkie cele dystrybucji: nowe obiekty docelowe (jeśli istnieją), istniejące obiekty docelowe bez zmian i zaktualizowane obiekty docelowe. Jeśli chcesz usunąć istniejący element docelowy dystrybucji, usuń i ponownie utwórz szablon obrazu. Usuwanie elementu docelowego dystrybucji nie jest obecnie obsługiwane za pośrednictwem Patch API.
Brak wymaganych pól
Błąd
Validation failed: 'ImageTemplate.properties.distribute[<index>]': Missing field <fieldname>. Please review http://aka.ms/azvmimagebuildertmplref for details on fields required in the Image Builder Template.
Przyczyna
Ten błąd występuje, gdy w obiekcie docelowym dystrybucji brakuje wymaganego pola.
Rozwiązanie
Podczas tworzenia żądania pamiętaj, aby podać każde wymagane pole w miejscu docelowym dystrybucji, nawet jeśli nie ma żadnych zmian.
Rozwiązywanie problemów z usługą Azure DevOps
Zadanie usługi Azure DevOps kończy się niepowodzeniem tylko wtedy, gdy wystąpi błąd podczas dostosowywania. W przypadku wystąpienia tego błędu zadanie zgłasza awarię i pozostawia grupę zasobów etapowania wraz z dziennikami, aby można było zidentyfikować problem.
Aby zlokalizować dziennik:
Znajdź nazwę szablonu. Przejdź do Potok>Nieudana kompilacja, a następnie przejdź do szczegółów zadania Azure DevOps w Kreator obrazów maszyn wirtualnych. Zanotuj tę wartość
template name
.start reading task parameters... found build at: /home/vsts/work/r1/a/_ImageBuilding/webapp end reading parameters getting storage account details for aibstordot1556933914 created archive /home/vsts/work/_temp/temp_web_package_21475337782320203.zip Source for image: { type: 'SharedImageVersion', imageVersionId: '/subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/galleries/<galleryName>/images/<imageDefName>/versions/<imgVersionNumber>' } template name: t_1556938436xxx
Przejdź do witryny Azure Portal, wyszukaj nazwę szablonu w grupie zasobów, a następnie wyszukaj grupę zasobów, wprowadzając IT_.
Wybierz nazwę konta magazynowego, a następnie wybierz obiekty blob>kontenery>dzienniki.
Czasami może być konieczne zbadanie pomyślnych kompilacji i przejrzenie ich dzienników. Jak wspomniano wcześniej, jeśli kompilacja obrazu zakończy się pomyślnie, tymczasowa grupa zasobów zawierająca dzienniki zostanie usunięta w ramach oczyszczania. Aby zapobiec automatycznemu czyszczeniu, możesz wprowadzić sleep
po wbudowanym poleceniu, a następnie wyświetlić dzienniki podczas zatrzymania kompilacji.
- Zaktualizuj wbudowane polecenie, dodając polecenie
Write-Host / Echo "Sleep"
. Ta funkcja daje Ci czas na przeszukiwanie dziennika. - Dodaj wartość co najmniej 10 minut, korzystając z polecenia
Start-Sleep
lubSleep
w systemie Linux. - Użyj tej metody, aby zidentyfikować lokalizację dziennika, a następnie kontynuuj pobieranie lub sprawdzanie dziennika, dopóki nie osiągnie
sleep
.
Operacja została anulowana
Błąd
2020-05-05T18:28:24.9280196Z ##[section]Starting: Azure VM Image Builder Task
2020-05-05T18:28:24.9609966Z ==============================================================================
2020-05-05T18:28:24.9610739Z Task : Azure VM Image Builder Test
2020-05-05T18:28:24.9611277Z Description : Build images using Azure Image Builder resource provider.
2020-05-05T18:28:24.9611608Z Version : 1.0.18
2020-05-05T18:28:24.9612003Z Author : Microsoft Corporation
2020-05-05T18:28:24.9612718Z Help : For documentation, and end to end example, please visit: http://aka.ms/azvmimagebuilderdevops
2020-05-05T18:28:24.9613390Z ==============================================================================
2020-05-05T18:28:26.0651512Z start reading task parameters...
2020-05-05T18:28:26.0673377Z found build at: d:\a\r1\a\_AppsAndImageBuilder\webApp
2020-05-05T18:28:26.0708785Z end reading parameters
2020-05-05T18:28:26.0745447Z getting storage account details for aibstagstor1565047758
2020-05-05T18:28:29.8812270Z created archive d:\a\_temp\temp_web_package_09737279437949953.zip
2020-05-05T18:28:33.1568013Z Source for image: { type: 'PlatformImage',
2020-05-05T18:28:33.1584131Z publisher: 'MicrosoftWindowsServer',
2020-05-05T18:28:33.1585965Z offer: 'WindowsServer',
2020-05-05T18:28:33.1592768Z sku: '2016-Datacenter',
2020-05-05T18:28:33.1594191Z version: '14393.3630.2004101604' }
2020-05-05T18:28:33.1595387Z template name: t_1588703313152
2020-05-05T18:28:33.1597453Z starting put template...
2020-05-05T18:28:52.9278603Z put template: Succeeded
2020-05-05T18:28:52.9281282Z starting run template...
2020-05-05T19:33:14.3923479Z ##[error]The operation was canceled.
2020-05-05T19:33:14.3939721Z ##[section]Finishing: Azure VM Image Builder Task
Przyczyna
Jeśli użytkownik nie anulował kompilacji, agent użytkownika usługi Azure DevOps go anulował. Najprawdopodobniej limit czasu jednej godziny wystąpił ze względu na możliwości platformy Azure DevOps. Jeśli używasz prywatnego projektu i agenta, otrzymasz 60 minut czasu kompilacji. Jeśli kompilacja przekroczy limit czasu, usługa Azure DevOps anuluje uruchomione zadanie.
Aby uzyskać więcej informacji na temat możliwości i ograniczeń usługi Azure DevOps, zobacz Agenci hostowani przez firmę Microsoft.
Rozwiązanie
Możesz hostować własnych agentów usługi Azure DevOps lub spróbować skrócić czas kompilacji. Na przykład w przypadku dystrybucji do usługi Azure Compute Gallery można je replikować do jednego regionu lub replikować je asynchronicznie.
Logowanie w systemie Windows działa wolno
Błąd
Ten błąd może wystąpić podczas tworzenia obrazu systemu Windows 10 przy użyciu narzędzia Vm Image Builder, tworzenia maszyny wirtualnej na podstawie obrazu, a następnie używania protokołu RDP (Remote Desktop Protocol). Odczekasz kilka minut na pierwszym ekranie logowania, a następnie na niebieskim ekranie zostanie wyświetlony następujący komunikat:
Please wait for the Windows Modules Installer
Rozwiązanie
W kompilacji obrazu upewnij się, że:
- Brak zaległych ponownych uruchomień, wymaganych ponieważ dodanie konfiguratora ponownego uruchamiania systemu Windows jest ostatnim dostosowaniem.
- Cała instalacja oprogramowania została ukończona.
Dodaj opcję
/mode:vm
do domyślnego poleceniaSysprep
używanego przez narzędzie VM Image Builder. Aby uzyskać więcej informacji, zobacz Zastępowanie poleceń w dalszej części tego artykułu.
Rozwiązywanie problemów z maszynami wirtualnymi utworzonymi bez powodzenia z poziomu narzędzia Vm Image Builder
Domyślnie konstruktor obrazów maszyny wirtualnej uruchamia kod anulowania aprowizacji na końcu każdej fazy dostosowywania obrazu, aby uogólnić obraz. Uogólnienie obrazu powoduje skonfigurowanie go do ponownego użycia podczas tworzenia wielu maszyn wirtualnych. W ramach procesu możesz przekazać ustawienia maszyny wirtualnej, takie jak nazwa hosta i nazwa użytkownika.
W systemie Windows program VM Image Builder uruchamia ogólne Sysprep
polecenie. Jednak to polecenie może nie być odpowiednie dla każdej udanej operacji uogólnienia systemu Windows. Za pomocą narzędzia VM Image Builder możesz dostosować Sysprep
polecenie . Vm Image Builder to narzędzie do automatyzacji obrazów, które jest odpowiedzialne za pomyślne uruchamianie Sysprep
poleceń. Jednak może być konieczne użycie różnych Sysprep
poleceń, aby obraz był wielokrotnego użytku.
W systemie Linux narzędzie VM Image Builder uruchamia ogólne waagent -deprovision+user
polecenie. Aby uzyskać więcej informacji, zobacz dokumentację programu Microsoft Azure Linux Agent.
Jeśli przeprowadzasz migrację istniejącego dostosowania i używasz różnych poleceń Sysprep
lub waagent
, możesz wypróbować ogólne polecenia konstruktora obrazów VM. Jeśli tworzenie maszyny wirtualnej zakończy się niepowodzeniem, użyj poprzednich Sysprep
poleceń lub waagent
.
Załóżmy, że użyto narzędzia VM Image Builder do utworzenia obrazu niestandardowego systemu Windows, ale nie udało ci się pomyślnie utworzyć maszyny wirtualnej na podstawie obrazu. Na przykład tworzenie maszyny wirtualnej kończy się niepowodzeniem lub upłynął limit czasu. W tym przypadku wykonaj jedną z następujących zadań:
- Zapoznaj się z dokumentacją systemu Windows Server
Sysprep
. - Zgłoś wniosek o pomoc techniczną zespołowi pomocy technicznej systemu Windows Server
Sysprep
. Ten zespół może pomóc w rozwiązaniu Twojego problemu i doradzić w sprawie właściwego poleceniaSysprep
.
Lokalizacje poleceń i nazwy plików
W systemie Windows:
c:\DeprovisioningScript.ps1
W systemie Linux:
/tmp/DeprovisioningScript.sh
Polecenie Sysprep dla systemu Windows
Write-Output '>>> Waiting for GA Service (RdAgent) to start ...'
while ((Get-Service RdAgent).Status -ne 'Running') { Start-Sleep -s 5 }
Write-Output '>>> Waiting for GA Service (WindowsAzureTelemetryService) to start ...'
while ((Get-Service WindowsAzureTelemetryService) -and ((Get-Service WindowsAzureTelemetryService).Status -ne 'Running')) { Start-Sleep -s 5 }
Write-Output '>>> Waiting for GA Service (WindowsAzureGuestAgent) to start ...'
while ((Get-Service WindowsAzureGuestAgent).Status -ne 'Running') { Start-Sleep -s 5 }
Write-Output '>>> Sysprepping VM ...'
if( Test-Path $Env:SystemRoot\system32\Sysprep\unattend.xml ) {
Remove-Item $Env:SystemRoot\system32\Sysprep\unattend.xml -Force
}
& $Env:SystemRoot\System32\Sysprep\Sysprep.exe /oobe /generalize /quiet /quit
while($true) {
$imageState = (Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State).ImageState
Write-Output $imageState
if ($imageState -eq 'IMAGE_STATE_GENERALIZE_RESEAL_TO_OOBE') { break }
Start-Sleep -s 5
}
Write-Output '>>> Sysprep complete ...'
Polecenie do anulowania aprowizacji w systemie Linux
sudo /usr/sbin/waagent -force -deprovision+user && export HISTSIZE=0 && sync
Zastępowanie poleceń
Aby zastąpić polecenia, użyj aprowizatorów skryptów programu PowerShell lub powłoki, aby utworzyć pliki poleceń z dokładną nazwą pliku. Umieść je w katalogach wymienionych wcześniej. Konstruktor obrazów maszyny wirtualnej odczytuje te polecenia i zapisuje dane wyjściowe w customization.log
pliku.
Uzyskiwanie pomocy technicznej
Jeśli korzystasz ze wskazówek w tym artykule i nadal występują problemy, możesz otworzyć zgłoszenie do pomocy technicznej.
Użyj poniższego kodu, aby wybrać właściwy temat dotyczący produktu i pomocy technicznej. Dzięki temu masz pewność, że masz połączenie z zespołem pomocy technicznej narzędzia Image Builder maszyny wirtualnej platformy Azure.
Product Family: Azure
Product: Virtual Machine Running (Window\Linux)
Support Topic: Azure Features
Support Subtopic: Azure Image Builder