Solución de problemas de Azure VM Image Builder
Se aplica a: ✔️ máquinas virtuales Linux ✔️ conjuntos de escalado flexibles
Use este artículo para solucionar y resolver problemas comunes que podrían surgir al usar Azure VM Image Builder.
Prerrequisitos
Al crear una compilación, haga lo siguiente:
- El servicio de VM Image Builder se comunica con la máquina virtual de compilación mediante WinRM o Secure Shell (SSH). No deshabilite esta configuración como parte de la compilación.
- VM Image Builder crea recursos en el grupo de recursos de almacenamiento provisional como parte de las compilaciones. La lista exacta de recursos depende de la configuración de red especificada en la plantilla de imagen. Asegúrese de comprobar que Azure Policy no impide que VM Image Builder cree o use los recursos necesarios.
- Cree un grupo de recursos IT_.
- Cree una cuenta de almacenamiento sin firewall.
- Implementación en Azure Container Instances.
- Implementación de recursos de Azure Virtual Network (y sus subredes).
- Implementación de recursos de punto de conexión privado de Azure.
- Implementación de Azure Files.
- Compruebe que Azure Policy no instala características no deseadas en la máquina virtual de compilación, como extensiones de Azure.
- Asegúrese de que VM Image Builder tenga los permisos correctos para leer y escribir imágenes y para conectarse a la cuenta de almacenamiento. Para obtener más información, consulte la documentación de permisos para la CLI de Azure o Azure PowerShell.
- VM Image Builder no realiza la compilación si los scripts o los comandos insertados producen errores (códigos de salida distintos de cero). Asegúrese de haber probado los scripts personalizados y comprobado que se ejecutan sin errores (código de salida 0) o que requieren la entrada del usuario. Para obtener más información, consulte Creación de una imagen de Azure Virtual Desktop mediante VM Image Builder y PowerShell.
- Asegúrese de que la suscripción tenga suficiente cuota de Azure Container Instances.
- La compilación de cada imagen puede implementar hasta un recurso temporal de instancia de contenedor de Azure (de cuatro núcleos estándar) en el grupo de recursos de almacenamiento provisional. Estos recursos son necesarios para compilaciones de imágenes aisladas.
Los errores de VM Image Builder pueden producirse en dos áreas:
- Durante el envío de la plantilla de imagen
- Durante la creación de imágenes
Nota:
Las imágenes protegidas por CIS (Linux o Windows) en Azure Marketplace, administradas por CIS, pueden provocar errores de compilación con el servicio Azure Image Builder debido a sus configuraciones. Por ejemplo:
- Las imágenes de Windows protegidas por CIS podrían interrumpir la conectividad de WinRM, un requisito previo para la compilación de AIB.
- Las imágenes de CIS Linux pueden producir errores debido a
chmod +x
problemas de permisos.
Solucionar errores de envío de la plantilla de imagen
Los errores de envío de la plantilla de imagen solo se devuelven en el envío. No hay ningún registro de errores para los errores de envío de la plantilla de imagen. Si se produjo un error durante el envío, puede devolver el error comprobando el estado de la plantilla, mediante la revisión específica de ProvisioningState
y ProvisioningErrorMessage
/provisioningError
.
az image builder show --name $imageTemplateName --resource-group $imageResourceGroup
Get-AzImageBuilderTemplate -ImageTemplateName <imageTemplateName> -ResourceGroupName <imageTemplateResourceGroup> | Select-Object ProvisioningState, ProvisioningErrorMessage
Nota
En el caso de PowerShell, debe instalar los módulos de PowerShell para VM Image Builder.
Importante
La versión 2021-10-01 de la API presenta un cambio en el esquema de error que formará parte de cada versión futura de la API. Si tiene automatizaciones de Azure VM Image Builder, tenga en cuenta el nuevo error que se genera al cambiar a la versión 2021-10-01 de la API o posterior. Se recomienda, después de cambiar a la versión más reciente de la API, que no revierta a una versión anterior, ya que tendrá que cambiar la automatización de nuevo para generar el esquema de error anterior. No se prevé volver a cambiar el esquema de errores en futuras versiones.
Generación del error en la versión 2020-02-14 y versiones anteriores
{
"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."
}
Generación del error en la versión 2021-10-01 y versiones posteriores
{
"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."
}
}
En las secciones siguientes se presenta la guía de resolución de problemas para errores comunes de envío de plantillas de imagen.
Actualmente no se admite la actualización de las plantillas de imagen
Error
'Conflict'. Details: Update/Upgrade of image templates is currently not supported
Causa
La plantilla ya existe.
Solución
Si envía una plantilla de configuración de imagen y se produce un error en el envío, significa que todavía existe un artefacto de plantilla con errores. Elimine la plantilla con errores.
Reasignación de MSI en plantillas de imagen
Error
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.
Causa
Hay casos en los que no se pueden usar las identidades de servicio administradas (MSI) asignadas a la plantilla de imagen:
- La plantilla de Image Builder usa un grupo de recursos de almacenamiento provisional proporcionado por el cliente y se elimina la MSI antes de eliminar la plantilla de imagen (escenario de grupo de recursos de almacenamiento provisional)
- No se pueden usar las identidades de servicio administradas (MSI) asignadas a la plantilla de imagen
Solución
Use la CLI de Azure para restablecer la identidad en la plantilla de imagen. Asegúrese de actualizar la CLI de Azure a la versión 2.45.0 o posterior.
Eliminar la identidad administrada de la plantilla del generador de imágenes de destino
az image builder identity remove -g <template resource group> -n <template name> --user-assigned <identity resource id>
Reasignar la identidad a la plantilla del generador de imágenes de destino
az image builder identity assign -g <template rg> -n <template name> --user-assigned <identity resource id>
La operación de recursos finalizó con un estado de aprovisionamiento de terminal de "Error"
Error
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."
Causa
En la mayoría de los casos, el error de implementación de recursos se produce debido a la falta de permisos. Este error también puede deberse a un conflicto con el grupo de recursos de almacenamiento provisional.
Solución
En función del escenario, VM Image Builder puede necesitar permisos para:
- La imagen de origen o grupo de recursos de Azure Compute Gallery (anteriormente, Shared Image Gallery).
- La imagen de distribución o el recurso de Azure Compute Gallery.
- La cuenta de almacenamiento, el contenedor o el blob a los que accede el personalizador
File
.
Además, asegúrese de que el nombre del grupo de recursos de almacenamiento provisional se especifica de forma única para cada plantilla de imagen.
Para más información sobre la configuración de permisos, consulte Configuración de los permisos de VM Image Builder mediante la CLI de Azure o Configuración de los permisos de VM Image Builder mediante PowerShell.
Error al obtener una imagen administrada
Error
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
Causa
Faltan permisos.
Solución
En función del escenario, VM Image Builder puede necesitar permisos para:
- La imagen de origen o grupo de recursos de Azure Compute Gallery.
- La imagen de distribución o el recurso de Azure Compute Gallery.
- La cuenta de almacenamiento, el contenedor o el blob a los que accede el personalizador
File
.
Para más información sobre la configuración de permisos, consulte Configuración de los permisos de VM Image Builder mediante la CLI de Azure o Configuración de los permisos de VM Image Builder mediante PowerShell.
El paso de compilación de la versión de la imagen
Error
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."
Causa
VM Image Builder no encuentra la imagen de origen.
Solución
Asegúrese de que la imagen de origen es correcta y existe en la ubicación del servicio VM Image Builder.
Descarga de un archivo externo en un archivo local
Error
Downloading external file (<myFile>) to local file (xxxxx.0.customizer.fp) [attempt 1 of 10] failed: Error downloading '<myFile>' to 'xxxxx.0.customizer.fp'..
Causa
El nombre o la ubicación del archivo no son correctos o no se puede acceder a la ubicación.
Solución
Asegúrese de que se puede acceder al archivo. Compruebe que el nombre y la ubicación son correctos.
Error de autorización al crear disco
Se produce un error en la compilación de Azure Image Builder con un error de autorización similar al siguiente:
Error
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.'
Causa
Este error se produce al intentar especificar un grupo de recursos y una red virtual preexistentes en el servicio Azure Image Builder con una imagen de origen de Windows.
Solución
Tendrá que asignar el rol de colaborador al grupo de recursos para la entidad de servicio correspondiente a la aplicación de primera entidad de Azure Image Builder mediante el comando de la CLI o las instrucciones del portal siguientes.
En primer lugar, compruebe que la entidad de servicio está asociada a la aplicación de primera entidad de Azure Image Builder mediante el siguiente comando de la CLI:
az ad sp show --id {servicePrincipalName, or objectId}
A continuación, para implementar esta solución mediante la CLI, use el siguiente comando:
az role assignment create -g {ResourceGroupName} --assignee {AibrpSpOid} --role Contributor
Para implementar esta solución en el portal, siga las instrucciones de esta documentación: Asignación de roles de Azure mediante Azure Portal: Control de acceso basado en roles de Azure.
Para el Paso 1: identificar el ámbito necesario: el ámbito necesario es el grupo de recursos.
Para el Paso 3: seleccionar el rol apropiado: el rol es Colaborador.
Para el Paso 4: elegir quién necesita acceso: seleccione el miembro "Azure Virtual Machine Image Builder"
A continuación, continúe con el Paso 6: Asignar un rol para asignar el rol.
Solución de errores de compilación
En el caso de los errores de compilación de la imagen, obtendrá el error de lastrunstatus
y, después, revisar los detalles en el archivo customization.log.
az image builder show --name $imageTemplateName --resource-group $imageResourceGroup
Get-AzImageBuilderTemplate -ImageTemplateName <imageTemplateName> -ResourceGroupName <imageTemplateResourceGroup> | Select-Object LastRunStatus, LastRunStatusMessage
Registro de personalización
Acceso a los registros en vivo durante la compilación de imágenes
Para supervisar eficazmente el progreso de la compilación de imágenes, puede acceder a los registros en vivo generados por Azure Image Builder (AIB) en Azure Container Instances (ACI). Estos registros proporcionan información en tiempo real sobre el proceso de compilación, lo que le ayuda a identificar cualquier problema o confirmar que la compilación continúa según lo previsto. Siga los pasos que se indican a continuación para buscar y ver estos registros en vivo.
- Iniciar la compilación de la imagen: inicie el proceso de compilación de la imagen.
- Ir a Grupos de recursos: vaya a Azure Portal y seleccione "Grupos de recursos". Filtre por la suscripción en la que se inició la compilación de la imagen.
- Seleccionar el grupo de recursos: busque y seleccione el grupo de recursos de almacenamiento provisional asociado a la compilación de la imagen. Este es el grupo de recursos que contiene los recursos de compilación del servicio AIB. Para obtener más información sobre el grupo de recursos de almacenamiento provisional, consulte Propiedades: stagingResourceGroup.
- Buscar el contenedor de compilación: en este grupo de recursos, busque el recurso denominado "vmimagebuilder-build-container-**********." Si no está visible, espere unos minutos y actualice la página.
- Configuración del contenedor de acceso: en el panel izquierdo, en "Configuración", seleccione "Contenedores".
- Ver registros: vaya a la pestaña "Registros" para ver los registros en vivo durante el proceso de compilación de la imagen.
Si no ve ningún registro, pruebe a actualizar el contenedor después de unos minutos.
Descarga del registro de personalización o validación después de la compilación de la imagen
Una vez completada la compilación de imágenes, los registros de personalización y validación se almacenan en un contenedor dentro de la cuenta de almacenamiento del grupo de recursos de almacenamiento provisional creado por el servicio VM Image Builder. Para obtener más información sobre el grupo de recursos de almacenamiento provisional, consulte Propiedades: stagingResourceGroup.
Nota:
Al acceder al archivo customization.log
o validation.log
, es importante tener en cuenta que si la compilación de la imagen se ha ejecutado varias veces, habrá varias carpetas dentro del contenedor packerlogs
. Estas carpetas se organizan en orden desde la compilación más antigua hasta la más reciente.
Siga los siguientes pasos para buscar y descargar el archivo customization.log
o validation.log
:
- Seleccionar cuenta de almacenamiento: en Azure Portal, vaya a la cuenta de almacenamiento pertinente filtrando las cuentas de almacenamiento dentro del grupo de recursos de almacenamiento provisional creado por el servicio VM Image Builder. Para obtener más información sobre el grupo de recursos de almacenamiento provisional, consulte Propiedades: stagingResourceGroup.
- Acceder al almacenamiento de datos: en la cuenta de almacenamiento, vaya a Almacenamiento de datos.
- Abrir contenedor: seleccione la opción Contenedor y, a continuación, elija el contenedor
packerlogs
. - Elegir la carpeta correcta: dentro del contenedor
packerlogs
, verá varias carpetas si la compilación de la imagen se ha ejecutado varias veces. Estas carpetas se organizan desde la compilación más antigua hasta la más reciente. Seleccione la carpeta correspondiente a la compilación que le interesa. - Descargar el archivo de registro: dentro de la carpeta seleccionada, seleccione el archivo
customization.log
ovalidation.log
y, a continuación, haga clic en Descargar para descargar su contenido.
Descripción del registro de personalización
El registro es detallado. Trata la compilación de la imagen, incluidos los problemas con la distribución de la imagen, como la replicación de Azure Compute Gallery. Estos errores aparecen en el mensaje de error del estado de la plantilla de imagen.
El archivo customization.log
incluye las siguientes fases:
Fase Implementación de la máquina virtual de compilación y las dependencias mediante plantillas de ARM en el grupo de recursos de almacenamiento provisional IT_. Esta fase incluye varias PUBLICACIONES en el proveedor de recursos de 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 ... ..
Fase Estado de las implementaciones. Esta fase incluye el estado de cada implementación de recursos:
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=""
Conexión a las máquinas virtuales de compilación.
En Windows, VM Image Builder se conecta mediante 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.
En Linux, VM Image Builder se conecta mediante 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!
Fase Ejecución de personalizaciones. Cuando se ejecutan las personalizaciones, puede identificarlas revisando el archivo customization.log. Busque (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 hasfinished
Fase Desaprovisionamiento. VM Image Builder agrega un personalizador oculto. Este paso de desaprovisionamiento es responsable de preparar la máquina virtual para el desaprovisionamiento. En Windows, ejecuta
Sysprep
(mediante c:\DeprovisioningScript.ps1). En Linux, ejecutawaagent-deprovision
(mediante /tmp/DeprovisioningScript.sh).Por ejemplo:
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."}
Fase Limpieza. Una vez finalizada la compilación, se eliminan los recursos de VM Image Builder.
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 ...
Sugerencias para la solución de problemas de la personalización de script o comandos insertados
- Pruebe el código antes de proporcionarlo a VM Image Builder.
- Asegúrese de que Azure Policy y los firewalls permiten la conectividad a los recursos remotos.
- Enviar comentarios a la consola mediante
Write-Host
oecho
. Al hacerlo, puede buscar en el archivo customization.log.
Solución de errores de compilación comunes
Se produjo un error en la implementación de la plantilla debido a la infracción de la directiva.
Error
{
"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>"
}
Causa
El error de infracción de directiva anterior es el resultado de usar una instancia de Azure Key Vault con acceso público deshabilitado. En este momento, Azure Image Builder no admite esta configuración.
Solución
El Azure Key Vault debe crearse con el acceso público habilitado.
Error de comando de compilación de Packer
Error
"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."
Causa
Error de personalización
Solución
Revise el registro para buscar los errores del personalizador. Busque (telemetry) .
Por ejemplo:
(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
Tiempo de espera superado
Error
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'
Causa
La compilación superó el tiempo de espera de compilación. Este error se ve en "lastrunstatus".
Solución
Revise el archivo customization.log. Identifique el último personalizador que se va a ejecutar. Busque (telemetry) a partir de la parte inferior del registro.
Compruebe las personalizaciones del script. Puede que las personalizaciones no supriman la interacción del usuario con los comandos, como las opciones
quiet
. Por ejemplo,apt-get install -y
da como resultado la ejecución del script en espera de la interacción del usuario.Si usa el personalizador de
File
para descargar artefactos de más de 20 MB, consulte la sección de soluciones alternativas.Revise los errores y las dependencias del script que pueden hacer que el script espere.
Si espera que las personalizaciones necesiten más tiempo, aumente el valor de buildTimeoutInMinutes. El valor predeterminado es 4 horas.
Si tiene acciones que consumen muchos recursos, como la descarga de gigabytes (GB) de archivos, tenga en cuenta el tamaño de la máquina virtual de compilación subyacente. El servicio usa una máquina virtual Standard_D1_v2. La máquina virtual tiene 1 vCPU y 3,5 GB de memoria. Si va a descargar 50 GB, es probable que se agoten los recursos de la máquina virtual y que se produzcan errores de comunicación entre VM Image Builder y la máquina virtual de compilación. Vuelva a intentar la compilación con una máquina virtual con más memoria, estableciendo el valor VM_size.
Tiempo de descarga largo de archivos
Error
[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
Causa
El personalizador de File
está descargando un archivo grande.
Solución
El personalizador de File
solo es adecuado para descargas de archivos pequeños (menos de 20 MB). En el caso de descargas de archivos más grandes, use un script o un comando insertado. Por ejemplo, en Linux, puede usar wget
o curl
. En Windows, puede usar Invoke-WebRequest
.
El generador no puede ejecutar Windows-Restart con el código de error 1190
Error
[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.
Causa
El paso de actualización de Windows declara prematuramente en imágenes basadas en Windows Server 2016.
Solución
Aumente restartTimeout
de 15 minutos a 30 minutos.
Error al esperar en Azure Compute Gallery
Error
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}
Causa
VM Builder agotó el tiempo de espera para que la imagen se agregara y replicara en Azure Compute Gallery. Si la imagen se inserta en la galería, se puede suponer que la imagen se ha creado correctamente. Sin embargo, se produjo un error en el proceso general porque VM Image Builder estaba esperando en Azure Compute Gallery a que se completara la replicación. Aunque se ha producido un error en la compilación, la replicación continúa. Puede obtener las propiedades de la versión de la imagen comprobando la distribución runOutput.
$runOutputName=<distributionRunOutput>
az resource show \
--ids "/subscriptions/$subscriptionID/resourcegroups/$imageResourceGroup/providers/Microsoft.VirtualMachineImages/imageTemplates/$imageTemplateName/runOutputs/$runOutputName" \
--api-version=2020-02-14
Solución
Aumente el valor de buildTimeoutInMinutes
.
Pocos eventos de información de recursos de Windows
Error
[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
Causa
Agotamiento de recursos. Este problema suele producirse con Windows Update en ejecución mediante el uso del tamaño de la máquina virtual de compilación predeterminado D1_V2.
Solución
Aumente el tamaño de la máquina virtual de compilación.
Las compilación finalizó pero no se crearon artefactos
Advertencia
[<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.
Solución
La anterior advertencia se puede omitir sin ningún riesgo.
Omitir la creación de imágenes
Advertencia
[<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
Solución
La anterior advertencia se puede omitir sin ningún riesgo.
Recurso no encontrado
Error
"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.\""
},
Causa
Faltan permisos.
Solución
Vuelva a comprobar para asegurarse de que VM Image Builder tiene todos los permisos que requiere.
Para más información sobre la configuración de permisos, consulte Configuración de los permisos de VM Image Builder mediante la CLI de Azure o Configuración de los permisos de VM Image Builder mediante PowerShell.
Intervalo de Sysprep
Error
[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 ...
Causa
La causa puede ser un problema de intervalos debido al tamaño de la máquina virtual D1_V2. Si las personalizaciones están limitadas y se ejecutan en menos de tres segundos, VM Image Builder ejecuta los comandos Sysprep
para el desaprovisionamiento. Cuando VM Image Builder se desaprovisiona, el comando Sysprep
comprueba WindowsAzureGuestAgent, que puede que no esté completamente instalado, lo que puede provocar un problema en los intervalos.
Solución
Para evitar el problema de intervalos, puede aumentar el tamaño de la máquina virtual o agregar una personalización de suspensión de PowerShell de 60 segundos.
Proveedor de Azure Container Instances no registrado
Error
Azure Container Instances provider not registered for your subscription.
Causa
La suscripción de plantilla no tiene registrado el proveedor de Azure Container Instances.
Solución
Registre el proveedor de Azure Container Instances para la suscripción de plantilla y agregue los comandos de la CLI de Azure o PowerShell:
- CLI de Azure:
az provider register -n Microsoft.ContainerInstance
- PowerShell:
Register-AzResourceProvider -ProviderNamespace Microsoft.ContainerInstance
Cuota excedida de Azure Container Instances
Error
Azure Container Instances quota exceeded"
Causa
La suscripción no tiene suficiente cuota de Azure Container Instances (ACI) para que Azure Image Builder compile correctamente una imagen.
Solución
Para que la cuota de ACI esté disponible para Azure Image Builder, puede hacer lo siguiente:
- Busque otro uso de Azure Container Instances en su suscripción y quite las instancias innecesarias para que haya cuota disponible para Azure Image Builder.
- Azure Image Builder implementa ACI solo temporalmente mientras se realiza una compilación. Estas instancias se eliminan una vez completada la compilación. Si hay demasiadas compilaciones de imágenes simultáneas en la suscripción, puede considerar la posibilidad de retrasar algunas de las compilaciones de imágenes. De esta forma, se reduce el uso simultáneo de ACI en la suscripción. Si las plantillas de imagen están configuradas para compilaciones automáticas de imágenes mediante desencadenadores, Azure Image Builder volverá a intentar automáticamente estas compilaciones con errores.
- Si los límites actuales de ACI para la suscripción son demasiado bajos para admitir los escenarios de compilación de imágenes, puede solicitar un aumento de la cuota de ACI.
Nota:
Los recursos de ACI son necesarios para compilaciones de imágenes aisladas.
Demasiadas instancias de contenedor de Azure implementadas en un período de tiempo
Error
"Se ha implementado demasiadas instancias de contenedor de Azure en un período de tiempo"
Causa
La suscripción no tiene suficiente cuota de Azure Container Instances (ACI) para que Azure Image Builder compile correctamente las imágenes.
Solución
Puede hacer lo siguiente:
- Vuelva a intentar las compilaciones con errores de forma menos simultánea.
- Si los límites actuales de ACI para la suscripción son demasiado bajos para admitir los escenarios de compilación de imágenes, puede solicitar un aumento de la cuota de ACI.
Error de compilación de imágenes aisladas
Error
Las compilaciones de Azure Image Builder no se realizan correctamente debido a la compilación de imágenes aisladas.
Causa
Las compilaciones de Azure Image Builder pueden producir errores por los motivos enumerados en otra parte de este documento. Sin embargo, hay una pequeña posibilidad de que se produzca un error en una compilación debido a compilaciones de imágenes aisladas dependiendo de su escenario, cuotas de suscripción o algún error de servicio imprevisto. Para más información, consulte Compilaciones de imágenes aisladas.
Solución
Si determina que una compilación no se realiza correctamente debido a compilaciones de imágenes aisladas, puede hacer lo siguiente:
- Asegúrese de que no haya ningún Azure Policy que bloquee la implementación de recursos mencionados en la sección Requisitos previos, específicamente Azure Container Instances.
- Asegúrese de que la suscripción tenga suficiente cuota de Azure Container Instances para admitir todas las compilaciones de imágenes simultáneas. Para más información, consulte Se ha excedido la cuota de Azure Container Instances.
Azure Image Builder se encuentra actualmente en proceso de implementar compilaciones de imágenes aisladas. Las plantillas de imagen específicas no están vinculadas a compilaciones de imágenes aisladas y la misma plantilla de imagen podría o no usar compilaciones de imágenes aisladas durante diferentes compilaciones. Para ejecutar temporalmente la compilación sin compilaciones de imágenes aisladas, puede hacer lo siguiente:
- Vuelva a intentar la compilación. Dado que las plantillas de imagen no están vinculadas a la característica Compilaciones de imágenes aisladas, volver a intentar una compilación tiene una alta probabilidad de volver a ejecutarse sin compilaciones de imágenes aisladas.
Si ninguna de estas soluciones mitiga los errores de las compilaciones de imágenes, puede ponerse en contacto con el soporte técnico de Azure para que excluyan temporalmente su suscripción de las compilaciones de imágenes aisladas. Para más información, consulte Creación de una solicitud de soporte técnico de Azure.
Nota:
Las compilaciones de imágenes aisladas se habilitarán finalmente en todas las regiones y plantillas. Por lo tanto, las mitigaciones anteriores deben considerarse temporales y se debe solucionar la causa subyacente de los errores de compilación.
La compilación se cancela después de cancelar el contexto
Error
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
Causa
VM Image Builder usa el puerto 22 (Linux) o 5986 (Windows) para conectarse a la máquina virtual de compilación. Esto ocurre cuando el servicio está desconectado de la máquina virtual de compilación durante una compilación de imagen. Los motivos de la desconexión pueden variar, pero habilitar o configurar un firewall en el script puede bloquear los puertos mencionados anteriormente.
Solución
Revise los scripts para los cambios y la habilitación del firewall, o los cambios en SSH o WinRM, y asegúrese de que los cambios permitan la conectividad constante entre el servicio y la máquina virtual de compilación en los puertos anteriores. Para más información, consulte Opciones de red de VM Image Builder.
Errores JWT en el registro al principio de la compilación
Error
Al principio del proceso de compilación, se produce un error en la compilación y el registro indica un error JSON Web Token (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:
Causa
El valor buildTimeoutInMinutes
de la plantilla se establece en entre 1 y 5 minutos.
Solución
Como se describe en Creación de una plantilla de VM Image Builder, el tiempo de espera debe establecerse en 0 para usar el valor predeterminado o en un valor superior a 5 minutos para invalidar el valor predeterminado. Cambie el tiempo de espera de la plantilla a 0 para usar el valor predeterminado o a un mínimo de 6 minutos.
Errores de eliminación de recursos
Error
Los recursos intermedios se limpian hacia el final de la compilación y el registro de personalización puede mostrar varios errores de eliminación de recursos:
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"...
Causa
Estos mensajes de registro de errores son principalmente inofensivos porque las eliminaciones de recursos se reintentaron varias veces y, en general, se completaron correctamente. Para comprobarlo, siga los registros de eliminación hasta que observe un mensaje de confirmación. Como alternativa, puede inspeccionar el grupo de recursos de almacenamiento provisional para confirmar si el recurso se ha eliminado.
La realización de estas observaciones es especialmente importante en los errores de compilación, donde estos mensajes de error pueden llevar a concluir que son el motivo de los errores, incluso cuando los errores reales podrían estar en otro lugar.
Error
Cuando las imágenes se bloquean en la eliminación de plantillas, el registro de personalización puede mostrar el siguiente error:
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=[]
Causa
El error se produce porque la interfaz de red está actualmente en uso con un punto de conexión privado.
Solución
Para resolver el problema, elimine los siguientes recursos uno por uno en el orden específico:
- Conexión de punto de conexión privado. Para encontrar esto en el recurso de servicio de vínculo privado, vaya a la pestaña "Conexiones de punto de conexión privado" de la página de recursos del servicio de vínculo privado.
- Servicio de vínculo privado.
- Interfaz de red y equilibrador de carga.
- Grupo de recursos.
- Plantilla de imagen.
Para obtener ayuda adicional, puede ponerse en contacto con Soporte técnico de Azure para resolver el error de eliminación bloqueada.
No se encontró el destino de distribución en la solicitud de actualización
Error
Validation failed: Distribute target with Runoutput name <runoutputname> not found in the update request. Deleting a distribution target is not allowed.
Causa
Este error se produce cuando no se encuentra un destino de distribución existente en el cuerpo de la solicitud de revisión.
Solución
La matriz de distribución debe contener todos los destinos de distribución, nuevos destinos (si los hay), destinos existentes sin cambios ni destinos actualizados. Si desea quitar un destino de distribución existente, elimine y vuelva a crear la plantilla de imagen, ya que actualmente no se admite la eliminación de un destino de distribución a través de la API de revisión.
Faltan campos obligatorios
Error
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.
Causa
Este error se produce cuando falta un campo obligatorio de un destino de distribución.
Solución
Al crear una solicitud, proporcione todos los campos necesarios en un destino de distribución aunque no haya ningún cambio.
Tareas de DevOps
Solución de problemas de la tarea
La tarea produce un error solo si se produce un error durante la personalización. Cuando esto sucede, la tarea notifica el error y deja el grupo de recursos de almacenamiento provisional, con los registros, para que pueda identificar el problema.
Para buscar el registro, debe conocer el nombre de la plantilla. Vaya a Canalización>Compilación con errores y,después, profundice en la tarea DevOps de VM Image Builder.
Verá el registro y un nombre de plantilla:
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
- Vaya a Azure Portal, busque el nombre de la plantilla en el grupo de recursos y busque el grupo de recursos escribiendo IT_*.
- Seleccione el nombre de la cuenta de almacenamiento >blobs>contenedores>registros.
Solución de problemas de compilaciones correctas
En ocasiones, es posible que necesite investigar compilaciones correctas y revisar sus registros. Como se mencionó anteriormente, si la creación de la imagen se realiza correctamente, el grupo de recursos de almacenamiento provisional que contiene los registros se eliminará como parte de la limpieza. Sin embargo, para evitar una limpieza automática, puede introducir un valor sleep
después del comando en línea y, después, ver los registros a medida que se pausa la compilación. Para ello, haga lo siguiente:
- Actualice el comando insertado agregando Write-Host / Echo “Sleep”. Esto le proporciona tiempo para buscar en el registro.
- Agregue un valor
sleep
de al menos 10 minutos mediante un comando Start-Sleep oSleep
de Linux. - Use el método para identificar la ubicación del registro y, a continuación, siga descargando o comprobando el registro hasta que llegue el momento de
sleep
.
Operación cancelada
Error
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
Causa
Si un usuario no canceló la compilación, entonces lo hizo el agente de usuario de Azure DevOps. Lo más probable es que se haya agotado el tiempo de espera de una hora debido a las funcionalidades de Azure DevOps. Si usa un proyecto y un agente privados, dispondrá de 60 minutos de tiempo de compilación. Si la compilación supera el tiempo de espera, DevOps cancela la tarea en ejecución.
Para más información sobre las funcionalidades y limitaciones de Azure DevOps, vea Agentes hospedados por Microsoft.
Solución
Puede hospedar sus propios agentes de DevOps o tratar de reducir el tiempo de la compilación. Por ejemplo, si va a distribuir a Azure Compute Gallery, puede replicarlos en una región o replicarlos de forma asincrónica.
Inicio de sesión lento de Windows
Error
Este error puede producirse al crear una imagen de Windows 10 mediante VM Image Builder, crear una máquina virtual a partir de la imagen y, después, usar el Protocolo de escritorio remoto (RDP). Espera varios minutos en la primera pantalla de inicio de sesión y, después, una pantalla azul muestra el siguiente mensaje:
Please wait for the Windows Modules Installer
Solución
En la compilación de la imagen, compruebe que:
- No se requieren reinicios pendientes agregando un personalizador de reinicio de Windows como la última personalización.
- La instalación de todo el software se completó.
Agregue la opción /mode:vm al valor predeterminado
Sysprep
que usa VM Image Builder. Para obtener más información, vaya a la sección "Invalidar los comandos" en "Las máquinas virtuales creadas a partir de imágenes de VM Image Builder no se crearon correctamente".
Las máquinas virtuales creadas a partir de imágenes de VM Image Builder no se crearon correctamente
De forma predeterminada, VM Image Builder ejecuta código de desaprovisionamiento al final de cada fase de personalización de la imagen con el fin de generalizar la imagen. Generalizar una imagen es configurarla para reutilizarla para crear varias máquinas virtuales. Como parte del proceso, puede pasar la configuración de la máquina virtual, como el nombre de host, el nombre de usuario, etc. En Windows, VM Image Builder ejecuta Sysprep
y en Linux, VM Image Builder ejecuta waagent -deprovision
.
En Windows, VM Image Builder usa un comando Sysprep
genérico. Sin embargo, este comando puede no ser conveniente para todas las generalizaciones de Windows correctas. Con VM Image Builder, puede personalizar el comando Sysprep
. Tenga en cuenta que VM Image Builder es una herramienta de automatización de imágenes responsable de ejecutar el comando Sysprep
correctamente. Sin embargo, puede que necesite comandos Sysprep
diferentes para que la imagen se pueda reutilizar. En Linux, VM Image Builder usa un comando waagent -deprovision+user
genérico. Para más información, vea la documentación del agente Linux de Microsoft Azure.
Si va a migrar una personalización existente y usa varios comandos Sysprep
o waagent
, puede probar los comandos genéricos de VM Image Builder. Si se produce un error en la creación de la máquina virtual, use los comandos Sysprep
o waagent
anteriores.
Supongamos que ha usado VM Image Builder correctamente para crear una imagen personalizada de Windows, pero no ha podido crear correctamente una máquina virtual a partir de la imagen. Por ejemplo, la creación de la máquina virtual no finaliza o se agota el tiempo de espera. En este evento, realice una de las siguientes acciones:
- Revise la documentación de Sysprep de Windows Server.
- Genere una solicitud de soporte técnico con el equipo de soporte técnico del Servicio de atención al cliente de Windows Server Sysprep. Pueden ayudar a solucionar el problema y avisarle sobre el comando
Sysprep
correcto.
Nombres de archivo y ubicaciones de comandos
En Windows:
c:\DeprovisioningScript.ps1
En Linux:
/tmp/DeprovisioningScript.sh
El comando Sysprep
: Windows
Write-Output '>>> Waiting for GA Service (RdAgent) to start ...'
while ((Get-Service RdAgent).Status -ne 'Running') { Start-Sleep -s 5 }
Write-Output '>>> Waiting for GA Service (WindowsAzureTelemetryService) to start ...'
while ((Get-Service WindowsAzureTelemetryService) -and ((Get-Service WindowsAzureTelemetryService).Status -ne 'Running')) { Start-Sleep -s 5 }
Write-Output '>>> Waiting for GA Service (WindowsAzureGuestAgent) to start ...'
while ((Get-Service WindowsAzureGuestAgent).Status -ne 'Running') { Start-Sleep -s 5 }
Write-Output '>>> Sysprepping VM ...'
if( Test-Path $Env:SystemRoot\system32\Sysprep\unattend.xml ) {
Remove-Item $Env:SystemRoot\system32\Sysprep\unattend.xml -Force
}
& $Env:SystemRoot\System32\Sysprep\Sysprep.exe /oobe /generalize /quiet /quit
while($true) {
$imageState = (Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Setup\State).ImageState
Write-Output $imageState
if ($imageState -eq 'IMAGE_STATE_GENERALIZE_RESEAL_TO_OOBE') { break }
Start-Sleep -s 5
}
Write-Output '>>> Sysprep complete ...'
El comando -deprovision
: Linux
sudo /usr/sbin/waagent -force -deprovision+user && export HISTSIZE=0 && sync
Reemplazo de los comandos
Para reemplazar los comandos, use los aprovisionadores de scripts de PowerShell o Shell para crear los archivos de comandos con el nombre de archivo exacto y colóquelos en los directorios indicados anteriormente. VM Image Builder lee estos comandos, y escribe la salida en el archivo customization.log.
Obtención de soporte técnico
Si ha hecho referencia a las instrucciones y sigue teniendo problemas, puede abrir un caso de soporte técnico. Asegúrese de seleccionar el producto y el tema de soporte técnico correctos. Al hacerlo, garantizará que está conectado con el equipo de soporte técnico de Azure VM Image Builder.
Selección del producto para el caso:
Product Family: Azure
Product: Virtual Machine Running (Window\Linux)
Support Topic: Azure Features
Support Subtopic: Azure Image Builder
Pasos siguientes
Para más información, consulte Introducción a VM Image Builder.