Partager via


Résoudre les problèmes liés à Azure VM Image Builder

S’applique à : ✔️ Machines virtuelles Linux ✔️ Groupes de machines virtuelles flexibles

Utilisez cet article pour résoudre les problèmes courants que vous pouvez rencontrer lors de l’utilisation du Générateur d’images de machine virtuelle Azure.

Les échecs de VM Image Builder peuvent se produire dans deux domaines :

  • Lors de l’envoi d’un modèle d’image
  • Pendant la génération d’images

Prérequis

Ces conditions préalables sont requises pour la création d’une build :

  • Le service Vm Image Builder communique avec la machine virtuelle de build à l’aide de Windows Remote Management (WinRM) ou secure Shell (SSH). Ne désactivez pas ces paramètres dans le cadre de la build.

  • VM Image Builder crée des ressources dans le groupe de ressources de mise en lots dans le cadre des builds. La liste exacte des ressources dépend de la configuration réseau spécifiée par le modèle d’image. Veillez à vérifier qu’Azure Policy n’empêche pas VM Image Builder de créer ou d’utiliser les ressources nécessaires.

  • Vérifiez qu’Azure Policy n’installe pas de fonctionnalités involontaires sur la machine virtuelle de build ou d’autres ressources intermédiaires, telles que les extensions Azure ou les modifications de balise.

  • Assurez-vous que VM Image Builder dispose des autorisations appropriées pour lire/écrire des images et se connecter au compte de stockage. Pour plus d’informations, consultez la documentation sur les autorisations pour Azure CLI ou Azure PowerShell.

  • VM Image Builder rate la build si les scripts ou les commandes incluses échouent avec des erreurs (codes de sortie non nuls). Vérifiez que vous avez testé les scripts personnalisés et vérifié qu’ils s’exécutent sans erreur (code 0de sortie) ou que vous avez besoin d’une entrée utilisateur. Pour plus d’informations, consultez Créer une image Azure Virtual Desktop en utilisant VM Image Builder et PowerShell.

  • Vérifiez que votre abonnement dispose d’un quota suffisant pour Azure Container Instances.

    Chaque construction d'image peut déployer jusqu'à une ressource temporaire d'Azure Container Instances (de quatre cœurs standard) dans le groupe de ressources de mise en scène. Ces ressources sont requises pour les builds d’images isolées.

Remarque

Les images renforcées CIS (Linux ou Windows) sur la Place de marché Azure, gérées par le Center for Internet Security (CIS), peuvent entraîner des défaillances de build avec le service Vm Image Builder en raison de leurs configurations. Exemple :

  • Les images renforcées CIS pour Windows peuvent perturber la connectivité WinRM, condition préalable pour les builds du Générateur d’images de machine virtuelle.
  • Les images renforcées CIS pour Linux peuvent échouer en raison de problèmes d’autorisation chmod +x.

Résoudre les erreurs d’envoi du modèle d’image

Les erreurs d’envoi du modèle d’image sont renvoyées uniquement au moment de l’envoi. Aucun journal des erreurs n’existe pour les erreurs de soumission de modèle d’image. En cas d’erreur lors de l’envoi, vous pouvez renvoyer l’erreur en vérifiant l’état du modèle. Plus précisément, passez en revue ProvisioningState et ProvisioningErrorMessage/provisioningError.

Voici la commande pour Azure CLI :

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

Voici la commande pour Azure PowerShell. Pour utiliser Azure PowerShell, vous devez installer les modules PowerShell du Générateur d’images de machine virtuelle.

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

Voici la sortie d’erreur de la version 2020-02-14 et antérieure :

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

Voici la sortie d’erreur de la version 2021-10-01 et ultérieure :

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

Important

L’API version 2021-10-01 introduit un changement du schéma d’erreur qui fera partie de chaque version future de l’API. Si vous disposez d’automatisations Azure VM Image Builder, ayez à l’esprit la nouvelle sortie d’erreur quand vous passez à l’API version 2021-10-01 ou ultérieure.

Nous vous recommandons, après avoir basculé vers la dernière version de l’API, que vous ne revenez pas à une version antérieure. Si vous revenez en arrière, vous devrez modifier à nouveau l'automatisation pour produire le schéma d’erreur précédent. Nous ne nous attendons pas à ce que le schéma d’erreur change de nouveau dans les versions ultérieures.

Les sections suivantes présentent des conseils de résolution des problèmes pour les erreurs courantes d’envoi du modèle d’image.

La mise à jour ou la mise à niveau des modèles d’image n’est pas prise en charge

Erreur

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

Motif

Le modèle existe déjà.

Solution

Si vous soumettez un modèle de configuration d’image et que l’envoi échoue, un artefact de modèle échoué subsiste toujours. Supprimez le modèle qui a échoué.

L'identité managée attribuée à un modèle d'image ne peut pas être utilisée

Erreur

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.

Motif

Il existe des cas où une identité managée créée affectée au modèle d’image ne peut pas être utilisée.

L’une des causes possibles est que le modèle Générateur d’images de machine virtuelle utilise un groupe de ressources intermédiaire fourni par le client et que l’identité managée est supprimée avant la suppression du modèle d’image. (Il s’agit d’un scénario de groupe de ressources de mise en scène.)

Solution

Utilisez Azure CLI pour réinitialiser l’identité managée sur le modèle d’image. Veillez à mettre à jour Azure CLI vers la version 2.45.0 ou ultérieure.

Confirmer l’identité managée du modèle VM Image Builder cible :

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

Supprimez l’identité managée du modèle Générateur d’images de machine virtuelle cible :

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

Attribuez une nouvelle identité au modèle Générateur d’images de machine virtuelle cible :

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

Pour plus d’informations sur la configuration des autorisations, consultez Configurer les autorisations de VM Image Builder en utilisant Azure CLI ou Configurer les autorisations de VM Image Builder en utilisant PowerShell.

L’identité managée assignée n’est pas autorisée à accéder à une ressource

Erreur

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.

Motif

L’identité managée créée affectée au modèle d’image n’a pas toutes les autorisations nécessaires pour accéder à la ressource partagée dans le message d’erreur.

Solution

Confirmer l’identité managée du modèle VM Image Builder cible :

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

Revoyez les attributions de rôle pour l’identité :

az role assignment list --assignee <identity_client_id_or_principal_id>

Attribuez le rôle requis. Si nécessaire, créez votre rôle avec les autorisations requises.

Pour plus d’informations sur la configuration des autorisations, consultez Configurer les autorisations de VM Image Builder en utilisant Azure CLI ou Configurer les autorisations de VM Image Builder en utilisant PowerShell.

L’opération de ressource s’est terminée avec l’état d’approvisionnement du terminal « Échec »

Erreur

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

Motif

Dans la plupart des cas, l’erreur concernant l’échec du déploiement de ressources se produit en raison d’autorisations manquantes. Un conflit avec le groupe de ressources intermédiaire peut également entraîner cette erreur.

Solution

Selon votre scénario, VM Image Builder peut avoir besoin d’autorisations pour :

  • L’image source ou le groupe de ressources Azure Compute Gallery (anciennement Shared Image Gallery).
  • L’image de distribution ou ressource Azure Compute Gallery.
  • Le compte de stockage, conteneur ou blob auquel le personnalisateur File accède.

Vérifiez également que le nom du groupe de ressources intermédiaire est spécifié de manière unique pour chaque modèle d’image.

Pour plus d’informations sur la configuration des autorisations, consultez Configurer les autorisations de VM Image Builder en utilisant Azure CLI ou Configurer les autorisations de VM Image Builder en utilisant PowerShell.

Une erreur se produit lors de l’obtention d’une image managée

Erreur

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

Motif

Les autorisations sont manquantes.

Solution

Selon votre scénario, VM Image Builder peut avoir besoin d’autorisations pour :

  • L’image source ou le groupe de ressources Azure Compute Gallery.
  • L’image de distribution ou ressource Azure Compute Gallery.
  • Le compte de stockage, conteneur ou blob auquel le personnalisateur File accède.

Pour plus d’informations sur la configuration des autorisations, consultez Configurer les autorisations de VM Image Builder en utilisant Azure CLI ou Configurer les autorisations de VM Image Builder en utilisant PowerShell.

Échec de l'étape de construction pour la version de l'image

Erreur

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

Motif

VM Image Builder ne peut pas localiser l’image source.

Solution

Assurez-vous que l’image source est correcte et qu’elle existe à l’emplacement de VM Image Builder.

Une erreur se produit lors du téléchargement d’un fichier externe vers un fichier local

Erreur

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

Motif

Le nom ou l’emplacement du fichier est incorrect, ou l’emplacement n’est pas accessible.

Solution

Assurez-vous que le fichier est accessible. Vérifiez que le nom et l’emplacement sont corrects.

Certains référentiels de fichiers peuvent utiliser des suites de chiffrement non prises en charge et provoquer des erreurs de téléchargement avec vm Image Builder. Stockez des fichiers et des scripts dans un compte de stockage Azure pour garantir des suites de chiffrement sécurisées et l’accessibilité par VM Image Builder. Pour plus d’informations sur la façon de stocker vos fichiers dans des comptes de stockage Azure, consultez la vue d’ensemble du compte de stockage.

Une erreur d’autorisation se produit lors de la création d’un disque

La build du Générateur d’images de machine virtuelle échoue avec une erreur d’autorisation qui ressemble à l’exemple suivant.

Erreur

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

Motif

Cette erreur se produit lorsque vous essayez de spécifier un groupe de ressources et un réseau virtuel préexistants au service Vm Image Builder avec une image source Windows.

Solution

Vous devez attribuer le rôle Contributeur au groupe de ressources pour le principal de service qui correspond à l’application propriétaire VM Image Builder. Utilisez les commandes Azure CLI suivantes ou les instructions du portail Azure.

Tout d’abord, vérifiez que le principal de service est associé à l’application first-party Image Builder de machine virtuelle à l’aide de la commande Azure CLI suivante :

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

Ensuite, pour implémenter cette solution à l’aide d’Azure CLI, utilisez la commande suivante :

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

Pour implémenter cette solution dans le portail, suivez les instructions de l’affectation de rôles Azure à l’aide du portail Azure :

Résoudre les échecs de build

Pour les échecs de génération d’images, obtenez l’erreur à partir de lastRunStatus, puis passez en revue les détails dans le fichier customization.log.

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

Journal de personnalisation

Accès aux journaux en direct pendant la génération d’image

Pour surveiller efficacement la progression de votre génération d’image, vous pouvez accéder aux journaux en direct que VM Image Builder génère dans Azure Container Instances. Ces fichiers journaux fournissent des informations en temps réel sur le processus de construction. Ils vous aident à identifier les problèmes ou à confirmer que la build se poursuit comme prévu.

Pour localiser et afficher les logs en temps réel :

  1. Démarrez le processus de génération d’image.

  2. Accédez au portail Azure et sélectionnez Groupes de ressources. Filtrez par abonnement où vous avez lancé la génération d’image.

  3. Recherchez et sélectionnez le groupe de ressources de mise en scène associé à la construction de l'image. Ce groupe de ressources contient les ressources de build pour le service Vm Image Builder. Pour plus d’informations sur le groupe de ressources intermédiaire, consultez Propriétés : stagingResourceGroup.

  4. Dans ce groupe de ressources, recherchez la ressource nommée vmimagebuilder-build-container-**********. S’il n’est pas visible, attendez quelques minutes et actualisez la page.

  5. Dans le volet gauche, sous Paramètres, sélectionnez Conteneurs.

  6. Accédez à l’onglet Journaux pour afficher les journaux en direct pendant le processus de génération d’image.

Si vous ne voyez aucun log, essayez d'actualiser le conteneur après quelques minutes.

Télécharger le journal de personnalisation et/ou de validation après la génération de l’image

Une fois la construction de l'image terminée, les journaux de personnalisation et de validation sont stockés dans un conteneur dans le compte de stockage, dans le groupe de ressources intermédiaire que le service VM Image Builder a créé. Pour plus d’informations sur le groupe de ressources intermédiaire, consultez Propriétés : stagingResourceGroup.

Pour localiser et télécharger le fichier customization.log ou validation.log :

  1. Dans le portail Azure, accédez au compte de stockage approprié en filtrant les comptes de stockage au sein du groupe de ressources intermédiaire créé par le service Vm Image Builder.

  2. Sous le compte de stockage, accédez au stockage de données.

  3. Sélectionnez l’option Conteneur , puis choisissez le packerlogs conteneur.

  4. Dans le packerlogs conteneur, plusieurs dossiers apparaissent si la build d’image s’est exécutée plusieurs fois. Ces dossiers sont organisés de la génération la plus ancienne vers la version la plus récente. Sélectionnez le dossier qui correspond à la build qui vous intéresse.

  5. Dans le dossier sélectionné, sélectionnez les fichiers customization.log et/ou validation.log, puis sélectionnez Télécharger pour télécharger leur contenu.

Étapes du journal de personnalisation

Le journal est détaillé. Il couvre la génération d’image, notamment les problèmes liés à la distribution d’image tels que la réplication d’Azure Compute Gallery. Ces problèmes sont exposés dans le message d’erreur de l’état du modèle d’image.

Le fichier customization.log comprend les étapes suivantes :

  1. Déployez la machine virtuelle de build et les dépendances à l’aide de modèles Azure Resource Manager dans le IT_ groupe de ressources intermédiaire. Cette étape inclut plusieurs POST demandes adressées au fournisseur de ressources Vm Image Builder :

    Azure request method="POST" request="https://management.azure.com/subscriptions/<subID>/resourceGroups/IT_aibImageRG200_window2019VnetTemplate01_dec33089-1cc3-cccc-cccc-ccccccc/providers/Microsoft.Storage/storageAccounts
    ..
    PACKER OUT ==> azure-arm: Deploying deployment template ...
    ..
    
  2. Obtenez l’état des déploiements. Cette étape comprend l’état de chaque déploiement de ressource :

    PACKER ERR 2020/04/30 23:28:50 packer: 2020/04/30 23:28:50 Azure request method="GET" request="https://management.azure.com/subscriptions/<subID>/resourcegroups/IT_aibImageRG200_window2019VnetTemplate01_dec33089-1cc3-4505-ae28-6661e43fac48/providers/Microsoft.Resources/deployments/pkrdp51lc0339jg/operationStatuses/08586133176207523519?[REDACTED]" body=""
    
  3. Connectez-vous à la machine virtuelle de build.

    Dans Windows, VM Image Builder se connecte avec 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.
    

    Dans Linux, VM Image Builder se connecte avec SSH :

    PACKER OUT ==> azure-arm: Waiting for SSH to become available...
    PACKER ERR 2019/12/10 17:20:51 packer: 2020/04/10 17:20:51 [INFO] Waiting for SSH, up to timeout: 20m0s
    PACKER OUT ==> azure-arm: Connected to SSH!
    
  4. Exécutez des personnalisations. Lorsque les personnalisations s’exécutent, vous pouvez les identifier en examinant le customization.log fichier. Recherchez (telemetry) :

    (telemetry) Starting provisioner windows-update
    (telemetry) ending windows-update
    (telemetry) Starting provisioner powershell
    (telemetry) ending powershell
    (telemetry) Starting provisioner file
    (telemetry) ending file
    (telemetry) Starting provisioner windows-restart
    (telemetry) ending windows-restart
    
    (telemetry) Finalizing. - This means the build has finished
    
  5. Supprimer les privilèges d’accès. VM Image Builder ajoute un personnalisateur masqué. Cette étape est chargée de préparer la machine virtuelle pour le déprovisionnement. Sous Windows, il exécute Sysprep (à l’aide de c:\DeprovisioningScript.ps1). Sous Linux, il s’exécute waagent-deprovision (à l’aide de /tmp/DeprovisioningScript.sh).

    Par exemple :

    PACKER ERR 2020/03/04 23:05:04 [INFO] (telemetry) Starting provisioner powershell
    PACKER ERR 2020/03/04 23:05:04 packer: 2020/03/04 23:05:04 Found command: if( TEST-PATH c:\DeprovisioningScript.ps1 ){cat c:\DeprovisioningScript.ps1} else {echo "Deprovisioning script [c:\DeprovisioningScript.ps1] could not be found. Image build may fail or the VM created from the Image may not boot. Please make sure the deprovisioning script is not accidentally deleted by a Customizer in the Template."}
    
  6. Nettoyer. Une fois la build terminée, les ressources du Générateur d’images de machine virtuelle sont supprimées :

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

Résoudre les problèmes de personnalisation de script ou inline

Les conseils suivants peuvent vous aider à résoudre les problèmes de personnalisation de script ou inline :

  • Testez le code avant de le fournir à VM Image Builder.
  • Assurez-vous qu’Azure Policy et le Pare-feu Azure autorisent la connectivité aux ressources distantes.
  • Envoyez des commentaires de sortie à la console à l’aide Write-Host ou echo. Cela vous permet de rechercher le customization.log fichier.

Résolution des erreurs de build courantes

Échec du déploiement de modèle en raison d’une violation de stratégie

Erreur

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

Motif

L’erreur de violation de stratégie précédente est le résultat de l’utilisation d’un coffre de clés Azure avec un accès public désactivé. À ce stade, le Générateur d’images de machine virtuelle ne prend pas en charge cette configuration.

Solution

Vous devez créer le coffre de clés avec l’accès public activé.

Échec de la commande de build Packer

Erreur

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

Motif

L’échec d’une commande de build packer est un échec de personnalisation.

Solution

Consultez le journal pour localiser les échecs du personnalisateur. Recherchez (telemetry).

Par exemple :

(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

Le déploiement échoue en raison du délai d’expiration

Erreur

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'

Motif

La build a dépassé le délai d’expiration. Cette erreur apparaît dans lastRunStatus.

Solution

  1. Vérifiez le fichier customization.log. Identifiez le dernier personnalisateur à s’exécuter. Recherchez (telemetry) en partant du bas du journal.

  2. Vérifiez les personnalisations du script. Les personnalisations ne doivent pas supprimer l’interaction de l’utilisateur avec les commandes, telles que les options quiet. Par exemple, apt-get install -y entraîne l’exécution du script en attente de l’intervention de l’utilisateur.

  3. Si vous utilisez le File personnalisateur pour télécharger des éléments de plus de 20 Mo, consultez la section des alternatives.

  4. Passez en revue les erreurs et les dépendances dans le script qui peuvent entraîner le script à attendre.

  5. Si vous vous attendez à ce que les personnalisations aient besoin de plus de temps, augmentez la valeur de buildTimeoutInMinutes. La valeur par défaut est 4 heures.

  6. Si vous avez des actions gourmandes en ressources, telles que le téléchargement de gigaoctets de fichiers, tenez compte de la taille de la machine virtuelle de build sous-jacente.

    Le service utilise une machine virtuelle Standard_D1_v2. La machine virtuelle a un processeur virtuel et 3,5 Go de mémoire. Si vous téléchargez 50 Go, cela épuisera probablement les ressources de machine virtuelle et provoquera des échecs de communication entre VM Image Builder et la machine virtuelle de build. Réessayez la build avec une machine virtuelle plus grande mémoire en définissant VM_size.

La durée de téléchargement du fichier est longue

Erreur

[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

Motif

Le File personnalisateur télécharge un fichier volumineux.

Solution

Le File personnalisateur convient uniquement aux téléchargements de petits fichiers (inférieurs à 20 Mo). Pour les téléchargements de fichiers plus volumineux, utilisez un script ou une commande intégrée. Par exemple, dans Linux, vous pouvez utiliser wget ou curl. Dans Windows, vous pouvez utiliser Invoke-WebRequest.

Le redémarrage de Windows échoue continuellement avec le code d’erreur 1190

Erreur

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

Motif

L’étape Windows Update est déclarée prématurément dans les images basées sur Windows Server 2016.

Solution

Faites passer restartTimeout de 15 minutes à 30 minutes.

Erreur

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}

Motif

VM Image Builder a expiré lors de l’ajout et de la réplication de l’image à Azure Compute Gallery.

Si l’image est injectée dans la galerie, vous pouvez supposer que la génération de l’image a réussi. Toutefois, le processus global a échoué, car le Générateur d’images de machine virtuelle attendait qu’Azure Compute Gallery termine la réplication.

Même si la compilation a échoué, la réplication continue. Vous pouvez obtenir les propriétés de la version de l’image en vérifiant la distribution runOutput:

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

Solution

Augmentez la valeur de buildTimeoutInMinutes.

Les événements d’informations montrent des ressources Windows faibles

Erreur

[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

Motif

La cause est l’épuisement des ressources. Ce problème se produit généralement lorsque Windows Update s’exécute avec la taille de machine virtuelle de build par défaut, D1_V2.

Solution

Augmentez la taille de machine virtuelle de la build.

La construction est terminée, mais aucun artefact n’a été créé

Avertissement

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

Solution

Vous pouvez ignorer en toute sécurité l’avertissement précédent.

La création d’images a été ignorée

Avertissement

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

Solution

Vous pouvez ignorer en toute sécurité l’avertissement précédent.

La ressource est introuvable

Erreur

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

Motif

Les autorisations sont manquantes.

Solution

Revérifiez que le Générateur d’images de machine virtuelle dispose de toutes les autorisations dont elle a besoin.

Pour plus d’informations sur la configuration des autorisations, consultez Configurer les autorisations de VM Image Builder en utilisant Azure CLI ou Configurer les autorisations de VM Image Builder en utilisant PowerShell.

Il y a un problème de synchronisation avec Sysprep

Erreur

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

Motif

La taille de machine virtuelle D1_V2 peut être la raison du problème de synchronisation. Si les personnalisations sont limitées et qu’elles sont exécutées en moins de trois secondes, le Générateur d’images de machine virtuelle exécute Sysprep des commandes pour déprovisionner. Lorsque le Générateur d’images de machine virtuelle déprovisionne, la Sysprep commande vérifie WindowsAzureGuestAgent, qui pourrait ne pas être totalement installée et pourrait causer un problème de synchronisation.

Solution

Pour éviter le problème de minutage, vous pouvez augmenter la taille de la machine virtuelle ou ajouter une personnalisation de veille PowerShell de 60 secondes.

Le fournisseur Azure Container Instances n’est pas inscrit

Erreur

Azure Container Instances provider not registered for your subscription.

Motif

L’abonnement de votre modèle n’a pas le fournisseur Azure Container Instances inscrit.

Solution

Inscrivez le fournisseur Azure Container Instances pour votre abonnement modèle et ajoutez l’une des commandes suivantes :

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

L’abonnement a dépassé le quota Azure Container Instances

Erreur

Azure Container Instances quota exceeded

Motif

Votre abonnement n’a pas suffisamment de quota Azure Container Instances pour le Générateur d’images de machine virtuelle pour générer une image.

Solution

Vous pouvez effectuer les actions suivantes pour rendre le quota Azure Container Instances disponible pour le Générateur d’images de machine virtuelle :

  • Recherchez d’autres utilisations d’Azure Container Instances dans votre abonnement. Supprimez toutes les instances inutiles pour rendre le quota disponible pour le Générateur d’images de machine virtuelle.

  • Vm Image Builder déploie Azure Container Instances uniquement temporairement pendant une build. Ces instances sont supprimées une fois la build terminée.

    Si trop de builds d’images simultanées s’exécutent dans votre abonnement, vous pouvez envisager de retarder certaines des builds d’images. Ce délai réduit l’utilisation simultanée d’Azure Container Instances dans votre abonnement.

    Si vos modèles d’image sont configurés pour les builds d’images automatiques via des déclencheurs, vm Image Builder retente automatiquement ces builds ayant échoué.

  • Si les limites actuelles d’Azure Container Instances pour votre abonnement sont trop faibles pour prendre en charge vos scénarios de création d’images, vous pouvez demander une augmentation de votre quota Azure Container Instances.

Remarque

Les ressources Azure Container Instances sont requises pour les builds d’images isolées.

Trop de ressources Azure Container Instances sont déployées sur une courte période de temps.

Erreur

« Trop d’instances de conteneur Azure déployées pendant une période de temps ».

Motif

Votre abonnement n’a pas suffisamment de quota Azure Container Instances pour le Générateur d’images de machine virtuelle pour générer des images simultanément.

Solution

Vous pouvez essayer ces solutions :

  • Réessayez vos builds échoués de manière moins concurrente.
  • Si les limites actuelles d’Azure Container Instances pour votre abonnement sont trop faibles pour prendre en charge vos scénarios de création d’images, vous pouvez demander une augmentation de votre quota Azure Container Instances.

La fonctionnalité de génération d’images isolées provoque un échec

Erreur

Les builds VM Image Builder échouent en raison de builds d’images isolées.

Motif

Les builds vm Image Builder peuvent échouer pour des raisons répertoriées ailleurs dans cet article. Toutefois, il existe une petite chance qu’une build échoue en raison de builds d’images isolées, en fonction de votre scénario, des quotas d’abonnement ou d’une erreur de service imprévue. Pour en savoir plus, reportez-vous à Builds d’images isolées.

Solution

Si vous déterminez qu’une build échoue en raison de builds d’images isolées, vérifier ceci :

Le Générateur d’images de machine virtuelle est actuellement en cours de déploiement de builds d’images isolées. Les modèles d’image spécifiques ne sont pas liés aux builds d’images isolées, et le même modèle d’image peut ou non utiliser des builds d’images isolées pendant différentes builds.

Pour exécuter temporairement votre compilation sans compilations d’images isolées, relancez votre compilation. Étant donné que les modèles d’images ne sont pas liés à la fonctionnalité Builds d’images isolées, la nouvelle tentative de build risque fortement de se réexécuter sans build d’image isolée.

Si aucune de ces solutions n’atténue les builds d’images défaillantes, vous pouvez contacter le support Azure pour choisir temporairement votre abonnement hors des builds d’images isolées. Pour plus d’informations, consultez Créer une demande de support Azure.

Remarque

Si la fonctionnalité Builds d’images isolées est finalement activée dans toutes les régions et tous les modèles, les atténuations précédentes ne seront que temporaires. Il est préférable de résoudre la cause sous-jacente des défaillances de build.

La build est annulée après l’annulation du contexte

Erreur

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

Motif

VM Image Builder utilise le port 22 (Linux) ou 5986 (Windows) pour se connecter à la machine virtuelle de build. Ce problème se produit lorsque le service est déconnecté de la machine virtuelle de build pendant une génération d’image. Les raisons de la déconnexion peuvent varier, mais l’activation ou la configuration d’un pare-feu dans le script peuvent bloquer les ports mentionnés.

Solution

Passez en revue vos scripts pour connaître les modifications ou l’activation du pare-feu, ou les modifications apportées à SSH ou WinRM. Assurez-vous que toutes les modifications permettent une connectivité constante entre le service et la machine virtuelle de build sur les ports mentionnés précédemment. Pour plus d’informations, consultez les options de réseau de VM Image Builder.

Les erreurs de JWT s'affichent dans le fichier journal au début de la compilation.

Erreur

Au début du processus de création de la build, cette dernière échoue et le journal indique une erreur JWT (JSON Web Token) :

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:

Motif

La valeur buildTimeoutInMinutes du modèle est comprise entre 1 et 5 minutes.

Solution

Comme décrit dans Créer un modèle Générateur d’images de machine virtuelle, le délai d’expiration doit être défini sur 0 minutes pour utiliser la valeur par défaut ou définir sur plus de 5 minutes pour remplacer la valeur par défaut. Remplacez le délai d’expiration dans votre modèle par 0 minutes pour utiliser la valeur par défaut ou remplacez-le par un minimum de 6 minutes.

Les erreurs de suppression de ressources s’affichent

Erreur

Les ressources intermédiaires sont nettoyées vers la fin de la génération et le journal de personnalisation peut afficher plusieurs erreurs de suppression de ressource :

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

Motif

Ces messages de journal des erreurs sont principalement inoffensifs, car les suppressions de ressources sont retentées plusieurs fois. En règle générale, ils réussissent finalement. Vous pouvez vérifier ce comportement en continuant à suivre les journaux de suppression jusqu’à ce que vous observiez un message de réussite. Vous pouvez également inspecter le groupe de ressources intermédiaire pour vérifier si la ressource a été supprimée.

Ces observations sont particulièrement importantes en cas d’échec de build. Ces messages d’erreur peuvent vous conduire à conclure qu’ils sont la raison des échecs, même si les erreurs réelles peuvent être ailleurs.

Erreur

Lorsque les images sont bloquées dans la suppression du modèle, le journal de personnalisation peut afficher l’erreur suivante :

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

Motif

L’erreur se produit car l’interface réseau est actuellement utilisée avec un point de terminaison privé.

Solution

Pour résoudre le problème, supprimez les ressources suivantes une par une dans cet ordre spécifique :

  1. Connexion de point de terminaison privé. Vous trouverez cette connexion dans la ressource du service Azure Private Link en accédant à l’onglet Connexions de point de terminaison privé dans la page de la ressource de service Private Link.
  2. Service Lien Privé.
  3. Interface réseau et équilibreur de charge.
  4. Groupe de ressources.
  5. Modèle d’image.

Pour obtenir de l’aide supplémentaire, vous pouvez contacter le support Azure pour résoudre l’erreur de suppression bloquée.

La cible de distribution est introuvable dans la demande de mise à jour

Erreur

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

Motif

Cette erreur se produit lorsqu’une cible de distribution existante n’est pas trouvée dans le corps de la demande de correctif.

Solution

Le tableau de distribution doit contenir toutes les cibles de distribution : les nouvelles cibles (le cas échéant), les cibles existantes sans modification et les cibles mises à jour. Si vous souhaitez supprimer une cible de distribution existante, supprimez et recréez le modèle d’image. La suppression d’une cible de distribution n’est actuellement pas prise en charge par le biais de l’API Patch.

Les champs obligatoires sont manquants

Erreur

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.

Motif

Cette erreur se produit lorsqu’un champ obligatoire est manquant à partir d’une cible de distribution.

Solution

Lorsque vous créez une demande, veillez à fournir chaque champ requis dans une cible de distribution, même s’il n’y a aucune modification.

Résoudre les problèmes liés à Azure DevOps

Une tâche Azure DevOps échoue uniquement si une erreur se produit pendant la personnalisation. Si cette erreur se produit, la tâche signale l’échec et quitte le groupe de ressources de préproduction, avec les journaux, afin que vous puissiez identifier le problème.

Pour localiser le journal :

  1. Recherchez le nom du modèle. Accédez à la pipeline>compilation échouée, puis examinez la tâche Azure DevOps dans le Générateur d’images pour machines virtuelles. Notez la template name valeur.

    start reading task parameters...
    found build at:  /home/vsts/work/r1/a/_ImageBuilding/webapp
    end reading parameters
    getting storage account details for aibstordot1556933914
    created archive /home/vsts/work/_temp/temp_web_package_21475337782320203.zip
    Source for image:  { type: 'SharedImageVersion',
      imageVersionId: '/subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/galleries/<galleryName>/images/<imageDefName>/versions/<imgVersionNumber>' }
    template name:  t_1556938436xxx
    
  2. Accédez au portail Azure, recherchez le nom du modèle dans le groupe de ressources, puis recherchez le groupe de ressources en entrant IT_.

  3. Sélectionnez le nom du compte de stockage, puis sélectionnez blobs>conteneurs>journaux.

Vous devrez peut-être parfois examiner les builds réussis et consulter leurs logs. Comme mentionné, si la génération de l’image réussit, le groupe de ressources de préproduction qui contient les journaux est supprimé dans le cadre du nettoyage. Toutefois, pour empêcher un nettoyage automatique, vous pouvez introduire sleep après la commande inline, puis afficher les journaux quand la build est suspendue :

  1. Mettez à jour la commande inline en ajoutant Write-Host / Echo "Sleep". Ajouter cela vous donne le temps d’effectuer une recherche dans le journal.
  2. Ajoutez une sleep valeur d’au moins 10 minutes en utilisant une commande Linux Start-Sleep ou Sleep.
  3. Utilisez cette méthode pour identifier l’emplacement du journal, puis continuez à télécharger ou vérifier le journal jusqu’à ce qu’il atteigne sleep.

Opération annulée

Erreur

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

Motif

Si un utilisateur n’a pas annulé la build, l’agent utilisateur Azure DevOps l’a annulé. L’expiration du délai d’une heure s’est probablement produite en raison des capacités d’Azure DevOps. Si vous utilisez un projet et un agent privés, vous bénéficiez de 60 minutes de temps de build. Si la build dépasse le délai d’expiration, Azure DevOps annule la tâche en cours d’exécution.

Pour plus d’informations sur les capacités et limitations d’Azure DevOps, consultez Agents hébergés par Microsoft.

Solution

Vous pouvez héberger vos propres agents Azure DevOps ou essayer de réduire le temps de votre build. Par exemple, si vous distribuez dans Azure Compute Gallery, vous pouvez les répliquer dans une région ou les répliquer de façon asynchrone.

L’ouverture de session Windows est lente

Erreur

Cette erreur peut se produire quand vous créez une image Windows 10 en utilisant VM Image Builder, créez une machine virtuelle à partir de l’image, puis utilisez RDP (Remote Desktop Protocol). Vous attendez plusieurs minutes au premier écran d’ouverture de session, puis un écran bleu affiche le message suivant :

Please wait for the Windows Modules Installer

Solution

  1. Dans la configuration de l’image, vérifiez que :

    • Aucun redémarrage en attente n’est requis en ajoutant un personnalisateur de redémarrage Windows comme dernière personnalisation.
    • L’installation du logiciel est terminée.
  2. Ajoutez l’option /mode:vm à la commande par défaut utilisée par Sysprep vm Image Builder. Pour plus d’informations, consultez Remplacer les commandes plus loin dans cet article.

Résoudre les problèmes liés aux machines virtuelles créées sans succès à partir du Générateur d’images de machine virtuelle

Par défaut, le Générateur d’images de machine virtuelle exécute le code de déprovisionnement à la fin de chaque phase de personnalisation d’image pour généraliser l’image. La généralisation d’une image la configure pour une réutilisation dans la création de plusieurs machines virtuelles. Dans le cadre du processus, vous pouvez transmettre des paramètres de machine virtuelle, tels que le nom d’hôte et le nom d’utilisateur.

Dans Windows, le Générateur d’images de machine virtuelle exécute une commande générique Sysprep . Toutefois, cette commande peut ne pas convenir à chaque généralisation Windows réussie. Avec VM Image Builder, vous pouvez personnaliser la commande Sysprep. VM Image Builder est un outil d’automatisation d’image qui se charge d'exécuter Sysprep les commandes avec succès. Toutefois, vous pouvez avoir besoin de différentes commandes Sysprep pour rendre votre image réutilisable.

Dans Linux, vm Image Builder exécute une commande générique waagent -deprovision+user . Pour plus d’informations, consultez la documentation de Microsoft Azure Linux Agent.

Si vous migrez une personnalisation existante et que vous utilisez diverses commandes Sysprep ou waagent, vous pouvez essayer les commandes génériques de VM Image Builder. Si la création de la machine virtuelle échoue, utilisez vos commandes Sysprep ou waagent précédentes.

Supposons que vous utilisiez correctement le Générateur d’images de machine virtuelle pour créer une image personnalisée Windows, mais que vous n’avez pas réussi à créer une machine virtuelle à partir de l’image. Par exemple, la création de la machine virtuelle ne parvient pas à se terminer ou expire. Dans cet événement, effectuez l’une des tâches suivantes :

  • Passez en revue la documentation de Windows Server Sysprep .
  • Déclenchez une demande de support auprès de l’équipe du support technique Windows Server Sysprep . Cette équipe peut vous aider à résoudre votre problème et à vous conseiller sur la commande appropriée Sysprep .

Emplacements de commande et noms de fichiers

Dans Windows :

c:\DeprovisioningScript.ps1

Dans Linux :

/tmp/DeprovisioningScript.sh

Commande Sysprep pour 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 ...'

Commande Deprovision pour Linux

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

Remplacement de commandes

Pour remplacer les commandes, utilisez les provisionneurs de script PowerShell ou shell pour créer les fichiers de commandes avec le nom de fichier exact. Placez-les dans les répertoires répertoriés précédemment. Vm Image Builder lit ces commandes et écrit la sortie dans le customization.log fichier.

Obtenir de l’aide

Si vous avez utilisé les conseils de cet article et que vous rencontrez toujours des problèmes, vous pouvez ouvrir un cas de support.

Utilisez le code suivant pour sélectionner le produit et la rubrique de support appropriés. Cela garantit que vous êtes connecté à l’équipe du support technique Azure VM Image Builder.

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