Azure VM Image Builder 문제 해결

적용 대상: ✔️ Linux VM ✔️ 유연한 확장 집합

이 문서를 사용하여 Azure VM Image Builder를 사용할 때 발생할 수 있는 일반적인 문제를 해결합니다.

필수 조건

빌드를 만들 때 다음을 수행합니다.

  • VM Image Builder 서비스는 WinRM 또는 SSH(Secure Shell)를 사용하여 빌드 VM과 통신합니다. 빌드의 일부로 이러한 설정을 비활성화하지 마세요.
  • VM Image Builder는 빌드의 일부로 준비 리소스 그룹에 리소스를 만듭니다. Azure Policy에서 VM Image Builder가 필요한 리소스를 만들거나 사용하는 것을 방지하지 않는지 확인해야 합니다.
  • Azure Policy가 Azure Extensions와 같은 빌드 VM에 의도하지 않은 기능을 설치하지 않는지 확인합니다.
  • VM Image Builder에 이미지를 읽고 쓰며 스토리지 계정에 연결할 수 있는 올바른 권한이 있는지 확인합니다. 자세한 내용은 Azure CLI 또는 Azure PowerShell의 권한 문서를 검토하세요.
  • 스크립트 또는 인라인 명령이 오류(0이 아닌 종료 코드)로 실패하면 VM Image Builder가 빌드에 실패합니다. 사용자 지정 스크립트를 테스트했으며 오류 없이 실행(종료 코드 0)하거나 사용자 입력이 필요한지 확인했음을 확인합니다. 자세한 내용은 VM Image Builder 및 PowerShell을 사용하여 Azure Virtual Desktop 이미지 만들기를 참조하세요.
  • 구독에 Azure Container Instances 할당량이 충분한지 확인합니다.
    • 각 이미지 빌드는 준비 리소스 그룹에 최대 하나의 임시 Azure Container Instance 리소스(4개의 표준 코어)를 배포할 수 있습니다. 이러한 리소스는 격리된 이미지 빌드에 필요합니다.

다음 두 영역에서 VM Image Builder가 실패할 수 있습니다.

  • 이미지 템플릿 전송 중
  • 이미지 빌드 중

참고 항목

CIS에서 관리하는 Azure Marketplace의 CIS 강화 이미지(Linux 또는 Windows)는 해당 구성으로 인해 Azure Image Builder 서비스에서 빌드 오류를 일으킬 수 있습니다. 예를 들면 다음과 같습니다.

  • CIS 강화 Windows 이미지는 AIB 빌드의 필수 구성 요소인 WinRM 연결을 방해할 수 있습니다.
  • CIS Linux 이미지는 chmod +x 권한 문제로 인해 실패할 수 있습니다.

이미지 템플릿 전송 오류 문제 해결

이미지 템플릿 전송 오류는 전송 시에만 반환됩니다. 이미지 템플릿 전송 오류에 대한 오류 로그가 없습니다. 전송 중에 오류가 발생한 경우 템플릿 상태를 확인하여, 특히 ProvisioningStateProvisioningErrorMessage/provisioningError를 검토하여 오류를 반환할 수 있습니다.

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

참고 항목

PowerShell의 경우 VM Image Builder PowerShell 모듈을 설치해야 합니다.

Important

API 버전 2021-10-01은 모든 향후 API 릴리스의 일부가 될 오류 스키마를 변경합니다. Azure VM Image Builder 자동화가 있으면 API 버전 2021-10-01 이상으로 전환할 때 새 오류 출력을 알고 있어야 합니다. 최신 API 버전으로 전환한 후에는 이전 버전으로 되돌리지 않는 것이 좋습니다. 이전 오류 스키마를 생성하기 위해 자동화를 다시 변경해야 하기 때문입니다. Microsoft는 향후 릴리스에서 오류 스키마를 다시 변경하지 않습니다.

버전 2020-02-14 이전의 오류 출력

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

버전 2021-10-01 이후의 오류 출력

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

다음 섹션에서는 일반적인 이미지 템플릿 전송 오류에 대한 문제 해결 지침을 설명합니다.

현재 이미지 템플릿을 업데이트 또는 업그레이드할 수 없음

오류

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

원인

템플릿이 이미 있습니다.

솔루션

이미지 구성 템플릿을 전송했지만 전송이 실패하면 실패한 템플릿 아티팩트가 여전히 있습니다. 실패한 템플릿을 삭제합니다.

이미지 템플릿에 MSI 다시 할당

오류

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.

원인

이미지 템플릿에 할당된 MSI(관리형 서비스 ID)를 사용할 수 없는 경우가 있습니다.

  • Image Builder 템플릿은 고객이 제공한 스테이징 리소스 그룹을 사용하며 이미지 템플릿이 삭제되기 전에 MSI가 삭제됩니다(스테이징 리소스 그룹 시나리오).
  • 이미지 템플릿에 할당된 MSI(관리형 서비스 ID)를 사용할 수 없는 경우가 있습니다.

솔루션

Azure CLI를 사용하여 이미지 템플릿에서 ID를 다시 설정합니다. Azure CLI를 2.45.0 버전 이상으로 업데이트해야 합니다.

대상 Image Builder 템플릿에서 관리 ID 제거

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

대상 Image Builder 템플릿에 ID 다시 할당

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

터미널 프로비전 상태 “실패”로 완료된 리소스 작업

오류

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

원인

대부분의 경우 권한 누락으로 인해 리소스 배포 실패 오류가 발생합니다. 이 오류는 준비 리소스 그룹과의 충돌로 인해 발생할 수도 있습니다.

솔루션

시나리오에 따라 VM Image Builder에 다음 권한이 필요할 수 있습니다.

  • 원본 이미지 또는 Azure Compute Gallery(이전에는 Shared Image Gallery) 리소스 그룹
  • 배포 이미지 또는 Azure Compute Gallery 리소스
  • File 사용자 지정자에서 액세스하는 스토리지 계정, 컨테이너 또는 BLOB

또한 각 이미지 템플릿에 대해 스테이징 리소스 그룹 이름이 고유하게 지정되어 있는지 확인합니다.

권한 구성에 대한 자세한 내용은 Azure CLI를 사용하여 VM Image Builder 권한 구성 또는 PowerShell을 사용하여 VM Image Builder 권한 구성을 참조하세요.

관리 이미지 가져오기 오류

오류

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

원인

권한이 없습니다.

솔루션

시나리오에 따라 VM Image Builder에 다음 권한이 필요할 수 있습니다.

  • 원본 이미지 또는 Azure Compute Gallery 리소스 그룹
  • 배포 이미지 또는 Azure Compute Gallery 리소스
  • File 사용자 지정자에서 액세스하는 스토리지 계정, 컨테이너 또는 BLOB

권한 구성에 대한 자세한 내용은 Azure CLI를 사용하여 VM Image Builder 권한 구성 또는 PowerShell을 사용하여 VM Image Builder 권한 구성을 참조하세요.

이미지 버전 빌드 단계가 실패함

오류

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

원인

VM Image Builder에서 원본 이미지를 찾을 수 없습니다.

솔루션

원본 이미지가 올바르고 VM Image Builder 위치에 있는지 확인합니다.

외부 파일을 로컬 파일에 다운로드

오류

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

원인

파일 이름이나 위치가 잘못되었거나 위치에 연결할 수 없습니다.

솔루션

파일에 연결할 수 있는지 확인합니다. 이름과 위치가 올바른지 확인합니다.

디스크 생성 시 권한 부여 오류

다음과 같은 권한 부여 오류로 인해 Azure Image Builder 빌드가 실패합니다.

오류

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

원인

이 오류는 Windows 원본 이미지를 사용하여 Azure Image Builder 서비스에 기존 리소스 그룹 및 VNet을 지정하려고 할 때 발생합니다.

솔루션

아래 CLI 명령 또는 포털 지침을 사용하여 Azure Image Builder의 자사 앱에 해당하는 서비스 주체의 리소스 그룹에 기여자 역할을 할당해야 합니다.

먼저 다음 CLI 명령을 사용하여 서비스 주체가 Azure Image Builder의 자사 앱과 연결되어 있는지 확인합니다.

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

그런 다음, CLI를 사용하여 이 솔루션을 구현하려면 다음 명령을 사용합니다.

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

포털에서 이 솔루션을 구현하려면 Azure Portal을 사용하여 Azure 역할 할당 - Azure RBAC 설명서의 지침을 따릅니다.

1단계: 필요한 범위 식별하기: 필요한 범위는 리소스 그룹입니다.

3단계: 적절한 역할 선택하기: 역할은 기여자입니다.

4단계: 액세스가 필요한 사용자 선택하기: 멤버 “Azure Virtual Machine Image Builder”를 선택합니다.

그런 다음, 6단계: 역할을 할당하여 역할을 할당합니다.

빌드 실패 문제 해결

이미지 빌드가 실패하는 경우 lastrunstatus에서 오류를 가져온 다음, customization.log 파일에서 세부 정보를 검토합니다.

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

사용자 지정 로그

이미지 빌드를 실행하면 로그가 만들어지고 스토리지 계정에 저장됩니다. VM Image Builder는 이미지 템플릿 아티팩트를 만들 때 스토리지 계정을 임시 리소스 그룹에 만듭니다.

스토리지 계정 이름에 IT_<ImageResourceGroupName><TemplateName><GUID> 패턴을 사용합니다(예: IT_aibmdi_helloImageTemplateLinux01).

리소스 그룹에서 customization.log 파일을 보려면 스토리지 계정>Blob>packerlogs을 선택하고 디렉터리를 선택한 다음, customization.log 파일을 선택합니다.

사용자 지정 로그 이해

로그는 자세한 정보입니다. Azure Compute Gallery 복제와 같은 이미지 배포 문제를 포함하여 이미지 빌드를 다룹니다. 이러한 오류는 이미지 템플릿 상태의 오류 메시지에 표시됩니다.

customization.log 파일에는 다음 단계가 포함됩니다.

  1. ARM 템플릿을 사용하여 빌드 VM 및 종속성을 IT_ 준비 리소스 그룹에 배포 단계. 이 단계에는 VM Image Builder 리소스 공급자에 대한 POST 여러 개가 포함됩니다.

    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. 배포 상태 단계. 이 단계에는 각 리소스 배포의 상태가 포함됩니다.

    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. 빌드 VM에 연결 단계.

    Windows에서 VM Image Builder는 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.
    

    Linux에서 VM Image Builder는 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. 사용자 지정 실행 단계. 사용자 지정이 실행되면 customization.log 파일을 검토하여 사용자 지정을 식별할 수 있습니다. (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
    
  5. 프로비전 해제 단계. VM Image Builder에서 숨겨진 사용자 지정자를 추가합니다. 이 프로비전 해제 단계는 프로비전을 해제할 수 있도록 VM을 준비합니다. Windows에서는 c:\DeprovisioningScript.ps1을 사용하여 Sysprep을 실행합니다. Linux에서는 /tmp/DeprovisioningScript.sh를 사용하여 waagent-deprovision을 실행합니다.

    예시:

    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. 정리 단계. 빌드가 완료되면 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 ...
    

스크립트 또는 인라인 사용자 지정 문제 해결 팁

  • 코드를 VM Image Builder에 제공하기 전에 테스트합니다.
  • Azure Policy 및 Firewall에서 원격 리소스에 대한 연결을 허용하는지 확인합니다.
  • Write-Host 또는 echo를 사용하여 주석을 콘솔로 출력합니다. 이렇게 하면 customization.log 파일을 검색할 수 있습니다.

일반적인 빌드 오류 문제 해결

정책 위반으로 인해 템플릿 배포 실패

오류

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

원인

위의 정책 위반 오류는 퍼블릭 액세스가 비활성화된 상태에서 Azure Key Vault를 사용한 결과입니다. 현재 Azure Image Builder는 이 구성을 지원하지 않습니다.

솔루션

Azure Key Vault는 퍼블릭 액세스를 사용하도록 설정하여 만들어야 합니다.

packer 빌드 명령 실패

오류

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

원인

사용자 지정 오류입니다.

솔루션

로그를 검토하여 사용자 지정자 실패를 찾습니다. (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

시간 제한 예외

오류

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'

원인

빌드가 빌드 제한 시간을 초과했습니다. 이 오류는 'lastrunstatus'에 표시됩니다.

솔루션

  1. customization.log 파일을 검토합니다. 실행할 마지막 사용자 지정자를 식별합니다. 로그 하단부터 (telemetry)를 검색합니다.

  2. 스크립트 사용자 지정을 확인합니다. 사용자 지정은 quiet 옵션과 같은 명령에 대한 사용자 상호 작용을 억제하지 않을 수 있습니다. 예를 들어 apt-get install -y는 스크립트 실행에서 사용자 상호 작용을 기다리도록 합니다.

  3. File 사용자 지정자를 사용하여 20MB를 초과하는 아티팩트를 다운로드하는 경우 해결 방법 섹션을 참조하세요.

  4. 스크립트 대기가 발생할 수 있는 스크립트에서 오류와 종속성을 검토합니다.

  5. 사용자 지정에 더 많은 시간이 필요하면 buildTimeoutInMinutes 값을 늘립니다. 기본값은 4시간입니다.

  6. GB(기가바이트) 단위 파일 다운로드와 같이 리소스를 많이 사용하는 작업이 있는 경우 기본 빌드 VM 크기를 사용하는 것이 좋습니다. 이 서비스는 Standard_D1_v2 VM을 사용합니다. VM에는 vCPU 1개와 메모리 3.5GB가 있습니다. 50GB를 다운로드하는 경우 이로 인해 VM 리소스가 고갈되고 VM Image Builder 및 빌드 VM 간의 통신이 실패할 수 있습니다. VM_size를 설정하여 메모리가 더 큰 VM으로 빌드를 다시 시도합니다.

긴 파일 다운로드 시간

오류

[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

원인

File 사용자 지정자에서 대용량 파일을 다운로드하고 있습니다.

솔루션

File 사용자 지정자는 저용량(20MB 미만) 파일 다운로드에만 적합합니다. 큰 파일을 다운로드하려면 스크립트 또는 인라인 명령을 사용합니다. 예를 들어 Linux에서 wget 또는 curl을 사용할 수 있습니다. Windows에서는 Invoke-WebRequest를 사용할 수 있습니다.

작성기가 오류 코드 1190으로 Windows 재시작을 계속 실행하지 못합니다.

오류

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

원인

windows 업데이트 단계는 Windows Server 2016 기반으로 이미지에서 조기에 선언합니다.

솔루션

restartTimeout을 15분에서 30분으로 늘립니다.

오류

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}

원인

VM Image Builder에서 이미지를 Azure Compute Gallery에 추가하고 복제할 때까지 기다리는 시간이 초과되었습니다. 이미지가 갤러리에 삽입되는 경우 이미지 빌드에 성공했다고 가정할 수 있습니다. 그러나 VM Image Builder는 복제가 완료될 때까지 Azure Compute Gallery에서 기다리고 있으므로 전체 프로세스가 실패했습니다. 빌드가 실패하더라도 복제는 계속됩니다. 배포 runOutput을 확인하여 이미지 버전의 속성을 가져올 수 있습니다.

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

솔루션

buildTimeoutInMinutes 값을 늘립니다.

낮은 Windows 리소스 정보 이벤트

오류

[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

원인

리소스가 고갈되었습니다. 이 문제는 일반적으로 기본 빌드 VM 크기 D1_V2를 사용하여 실행되는 Windows 업데이트에 표시됩니다.

솔루션

빌드 VM 크기를 늘립니다.

빌드가 완료되었지만 생성된 아티팩트가 없음

Warning

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

솔루션

위의 경고는 무시해도 됩니다.

이미지 만들기 건너뛰기

Warning

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

솔루션

위의 경고는 무시해도 됩니다.

리소스를 찾을 수 없음

오류

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

원인

권한이 없습니다.

솔루션

VM Image Builder에 필요한 모든 권한이 있는지 다시 확인합니다.

권한 구성에 대한 자세한 내용은 Azure CLI를 사용하여 VM Image Builder 권한 구성 또는 PowerShell을 사용하여 VM Image Builder 권한 구성을 참조하세요.

Sysprep 타이밍

오류

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

원인

D1_V2 VM 크기로 인해 타이밍 문제가 발생할 수 있습니다. 사용자 지정이 제한되고 3초 미만으로 실행되는 경우 VM Image Builder에서 Sysprep 명령을 실행하여 프로비전을 해제합니다. VM Image Builder에서 프로비전 해제할 때 Sysprep 명령은 완전히 설치되지 않아 타이밍 문제가 발생할 수 있는 WindowsAzureGuestAgent를 확인합니다.

솔루션

타이밍 문제를 방지하려면 VM 크기를 늘리거나 60초 PowerShell 절전 모드 사용자 지정을 추가하면 됩니다.

등록되지 않은 Azure Container Instances 공급자

오류

Azure Container Instances provider not registered for your subscription.

원인

템플릿 구독에 Azure Container Instances 공급자가 등록되어 있지 않습니다.

솔루션

템플릿 구독을 위해 Azure Container Instances 공급자를 등록하고 Azure CLI 또는 PowerShell 명령을 추가합니다.

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

Azure Container Instances 할당량이 초과됨

오류

Azure Container Instances quota exceeded"

원인

구독에 Azure Image Builder가 이미지를 성공적으로 빌드할 수 있는 ACI(Azure Container Instances) 할당량이 충분하지 않습니다.

솔루션

다음을 수행하여 Azure Image Builder에 ACI 할당량을 사용할 수 있습니다.

  • 구독에서 Azure Container Instances의 다른 사용량을 조회하고 불필요한 인스턴스를 제거하여 Azure Image Builder에 할당량을 사용할 수 있도록 합니다.
  • Azure Image Builder는 빌드가 진행되는 동안에만 ACI를 일시적으로 배포합니다. 이러한 인스턴스는 빌드가 완료되면 삭제됩니다. 구독에서 너무 많은 동시 이미지 빌드가 발생하는 경우 일부 이미지 빌드를 지연하는 것이 좋습니다. 이렇게 하면 구독에서 ACI의 동시 사용량이 줄어듭니다. 트리거를 사용하여 자동 이미지 빌드를 위해 이미지 템플릿이 설정된 경우 이러한 실패한 빌드는 Azure Image Builder에 의해 자동으로 다시 시도됩니다.
  • 구독에 대한 현재 ACI 한도가 이미지 빌드 시나리오를 지원하기에 너무 낮은 경우 ACI 할당량을 늘리도록 요청할 수 있습니다.

참고 항목

ACI 리소스는 격리된 이미지 빌드에 필요합니다.

일정 기간 내에 배포된 Azure Container Instances가 너무 많습니다.

오류

"일정 기간 내에 배포된 Azure Container Instances가 너무 많습니다."

원인

구독에 Azure Image Builder가 이미지를 동시에 빌드하는 데 필요한 ACI(Azure Container Instances) 할당량이 충분하지 않습니다.

솔루션

다음을 수행할 수 있습니다.

  • 실패한 빌드를 덜 동시적인 방식으로 다시 시도합니다.
  • 구독에 대한 현재 ACI 한도가 이미지 빌드 시나리오를 지원하기에 너무 낮은 경우 ACI 할당량을 늘리도록 요청할 수 있습니다.

격리된 이미지 빌드 실패

오류

격리된 이미지 빌드로 인해 Azure Image Builder 빌드가 실패합니다.

원인

Azure Image Builder 빌드는 이 문서의 다른 위치에 나열된 이유로 인해 실패할 수 있습니다. 그러나 시나리오, 구독 할당량 또는 예기치 않은 서비스 오류에 따라 격리된 이미지 빌드로 인해 빌드가 실패할 가능성이 적습니다. 자세한 내용은 격리된 이미지 빌드를 참조하세요.

솔루션

격리된 이미지 빌드로 인해 빌드가 실패하는 경우 다음을 수행할 수 있습니다.

  • 필수 구성 요소 섹션, 특히 Azure Container Instances, Azure Virtual Networks 및 Azure 프라이빗 엔드포인트에 언급된 리소스의 배포를 차단하는 Azure Policy가 없는지 확인합니다.
  • 구독에 모든 동시 이미지 빌드를 지원하기에 충분한 Azure Container Instances 할당량이 있는지 확인합니다. 자세한 내용은 Azure Container Instances 할당량 초과를 참조하세요.

Azure Image Builder는 현재 격리된 이미지 빌드를 배포하는 중입니다. 특정 이미지 템플릿은 격리된 이미지 빌드에 연결되지 않으며 동일한 이미지 템플릿은 다른 빌드 중에 격리된 이미지 빌드를 활용하거나 활용하지 않을 수도 있습니다. 격리된 이미지 빌드 없이 빌드를 일시적으로 실행하려면 다음을 수행하면 됩니다.

  • 빌드를 다시 시도합니다. 이미지 템플릿은 격리된 이미지 빌드 기능과 연결되어 있지 않으므로 빌드를 다시 시도하면 격리된 이미지 빌드 없이 다시 실행할 가능성이 높습니다.

이러한 솔루션 중 어느 것도 이미지 빌드 실패를 완화하지 못하는 경우 Azure 지원에 문의하여 격리된 이미지 빌드에서 구독을 일시적으로 옵트아웃할 수 있습니다. 자세한 내용은 Azure 지원 요청 만들기를 참조하세요.

참고 항목

격리된 이미지 빌드는 결국 모든 지역 및 템플릿에서 사용하도록 설정됩니다. 따라서 위의 완화는 일시적인 것으로 간주되어야 하며 빌드 오류의 근본 원인을 해결해야 합니다.

컨텍스트 취소 컨텍스트가 취소된 후에 빌드가 취소됩니다.

오류

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

원인

VM Image Builder는 포트 22(Linux) 또는 5986(Windows)을 사용하여 빌드 VM에 연결합니다. 이미지 빌드 중에 빌드 VM에서 서버스 연결이 끊기면 발생합니다. 연결 끊김 이유는 다를 수 있지만 스크립트에서 방화벽을 사용하거나 구성하면 앞에서 언급한 포트가 차단될 수 있습니다.

솔루션

스크립트를 검토하여 방화벽 변경 사항이나 사용 또는 SSH 또는 WinRM에 대한 변경 사항을 확인하고 모든 변경 사항이 앞에서 언급한 포트에서 서비스와 빌드 VM 간의 지속적인 연결을 허용하는지 확인합니다. 자세한 내용은 VM Image Builder 네트워킹 개요를 참조하세요.

빌드 초기에 로그의 JWT 오류

오류

빌드 프로세스 초기에 빌드가 실패하고 로그에 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:

원인

템플릿의 buildTimeoutInMinutes 값은 1~5분 사이로 설정됩니다.

솔루션

VM Image Builder 템플릿 만들기의 설명대로 기본값을 사용하려면 시간 제한을 0으로 설정하고 기본값을 재정의하려면 5분 넘게 설정해야 합니다. 템플릿의 시간 제한을 0으로 변경하여 기본값을 사용하거나 최소 6분으로 변경합니다.

리소스 삭제 오류

오류

중간 리소스는 빌드가 끝날 때 정리되고 사용자 지정 로그에 여러 리소스 삭제 오류가 표시될 수 있습니다.

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

원인

리소스 삭제가 여러 번 다시 시도되고 대개 결국 성공하므로 이러한 오류 로그 메시지는 대부분 무해합니다. 성공 메시지가 표시될 때까지 삭제 로그를 계속 수행하여 이를 확인할 수 있습니다. 또는 준비 리소스 그룹을 검사하여 리소스가 삭제되었는지 확인할 수 있습니다.

이러한 관찰은 특히 빌드 실패에서 중요합니다. 여기서 이러한 오류 메시지는 실제 오류가 다른 곳에 발생할 수 있더라도 실패 원인이라고 결론을 내릴 수 있습니다.

오류

템플릿 삭제 시 이미지가 중단되면 사용자 지정 로그에 아래 오류가 표시될 수 있습니다.

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

원인

네트워크 인터페이스가 현재 프라이빗 엔드포인트와 함께 사용 중이므로 오류가 발생합니다.

솔루션

문제를 해결하려면 다음 리소스를 특정 순서로 하나씩 삭제합니다.

  1. 프라이빗 엔드포인트 연결. 프라이빗 링크 서비스 리소스 페이지의 “프라이빗 엔드포인트 연결” 탭으로 이동하여 프라이빗 링크 서비스 리소스에서 이를 찾을 수 있습니다.
  2. 프라이빗 링크 서비스.
  3. 네트워크 인터페이스 및 부하 분산 장치.
  4. 리소스 그룹.
  5. 이미지 템플릿.

추가 지원을 받으려면 Azure 지원에 문의하여 중단된 삭제 오류를 해결할 수 있습니다.

업데이트 요청에서 대상 배포를 찾을 수 없음

오류

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

원인

이 오류는 패치 요청 본문에서 기존 배포 대상을 찾을 수 없는 경우에 발생합니다.

솔루션

배포 배열에는 모든 배포 대상(즉, 새 대상(있는 경우), 변경 및 업데이트된 대상이 없는 기존 대상)이 포함되어야 합니다. 기존 배포 대상을 제거하려면 배포 대상 삭제가 현재 패치 API를 통해 지원되지 않으므로 이미지 템플릿을 삭제하고 다시 만듭니다.

필수 필드가 없음

오류

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.

원인

이 오류는 배포 대상에 필수 필드가 누락된 경우에 발생합니다.

솔루션

요청을 만들 때 변경 내용이 없더라도 배포 대상에 필요한 모든 필드를 제공하세요.

DevOps 작업

작업 문제 해결

사용자 지정 중에 오류가 발생하는 경우에만 작업이 실패합니다. 이 경우 작업은 실패를 보고하고 문제를 식별할 수 있도록 준비 리소스 그룹을 로그와 함께 둡니다.

로그를 찾으려면 템플릿 이름을 알아야 합니다. 파이프라인>실패 빌드로 이동한 다음, VM Image Builder DevOps 작업으로 드릴다운합니다.

로그와 템플릿 이름이 표시됩니다.

start reading task parameters...
found build at:  /home/vsts/work/r1/a/_ImageBuilding/webapp
end reading parameters
getting storage account details for aibstordot1556933914
created archive /home/vsts/work/_temp/temp_web_package_21475337782320203.zip
Source for image:  { type: 'SharedImageVersion',
  imageVersionId: '/subscriptions/<subscriptionID>/resourceGroups/<rgName>/providers/Microsoft.Compute/galleries/<galleryName>/images/<imageDefName>/versions/<imgVersionNumber>' }
template name:  t_1556938436xxx
  1. Azure Portal로 이동하여 리소스 그룹에서 템플릿 이름을 검색한 다음, IT_*를 입력하여 리소스 그룹을 검색합니다.
  2. 스토리지 계정 이름 >BLOB>컨테이너>로그를 선택합니다.

성공한 빌드 문제 해결

경우에 따라 성공적인 빌드를 조사하고 해당 로그를 검토해야 할 수 있습니다. 앞에서의 설명대로 이미지 빌드가 성공하면 정리 단계의 일환으로 로그가 포함된 준비 리소스 그룹이 삭제됩니다. 그러나 자동 정리를 방지하려면 인라인 명령 다음에 sleep을 도입한 다음, 빌드가 일시 중지될 때 로그를 보면 됩니다. 이렇게 하려면 다음을 수행합니다.

  1. Write-Host / Echo "Sleep"을 추가하여 인라인 명령을 업데이트합니다. 이렇게 하면 로그에서 검색할 시간이 제공됩니다.
  2. Start-Sleep 또는 Sleep Linux 명령을 사용하여 sleep 값을 최소 10분 이상으로 추가합니다.
  3. 이 방법을 사용하여 로그 위치를 확인한 다음, sleep으로 전환될 때까지 로그를 계속 다운로드하거나 확인합니다.

작업이 취소되었습니다.

오류

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

원인

사용자가 빌드를 취소하지 않았으면 Azure DevOps 사용자 에이전트에서 빌드를 취소한 것입니다. Azure DevOps 기능으로 인해 1시간 제한이 발생했을 가능성이 높습니다. 프라이빗 프로젝트와 에이전트를 사용하는 경우 빌드 시간 60분이 제공됩니다. 빌드에서 시간 제한을 초과하면 DevOps는 실행 중인 작업을 취소합니다.

Azure DevOps 기능과 제한 사항에 대한 자세한 내용은 Microsoft 호스트된 에이전트를 참조하세요.

솔루션

고유한 DevOps 에이전트를 호스트하거나 빌드 시간을 줄일 수 있습니다. 예를 들어 Azure Compute Gallery에 배포하는 경우 한 지역에 복제하거나 비동기적으로 복제할 수 있습니다.

Windows 로그온 느림

오류

이 오류는 VM Image Builder를 사용하여 Windows 10 이미지를 만들고 이미지에서 VM을 만든 다음, RDP(원격 데스크톱 프로토콜)를 사용할 때 발생할 수 있습니다. 첫 번째 로그온 화면에서 몇 분 정도 기다립니다. 그러면 다음 메시지가 블루 스크린에 표시됩니다.

Please wait for the Windows Modules Installer

솔루션

  1. 이미지 빌드에서 다음을 확인합니다.

    • Windows 다시 시작 사용자 지정자를 마지막 사용자 지정으로 추가하여 처리 중인 다시 부팅이 필요 없음
    • 모든 소프트웨어 설치 완료
  2. VM Image Builder에서 사용하는 기본값 Sysprep/mode:vm 옵션을 추가합니다. 자세한 내용을 확인하려면 "VM Image Builder 이미지에서 만든 VM이 성공적으로 생성되지 않음"의 "명령 재정의" 섹션으로 이동하세요.

VM Image Builder 이미지에서 만든 VM이 성공적으로 생성되지 않음

기본적으로 VM Image Builder는 이미지를 일반화하기 위해 각 이미지 사용자 지정 단계가 끝날 때 프로비전 해제 코드를 실행합니다. 이미지를 일반화하는 것은 VM을 여러 개 만드는 데 다시 사용하도록 설정하는 것입니다. 프로세스의 일부로 호스트 이름, 사용자 이름 등과 같은 VM 설정을 전달할 수 있습니다. Windows에서 VM Image Builder는 Sysprep을 실행하고 Linux에서 VM Image Builder는 waagent -deprovision를 실행합니다.

Windows의 경우 VM Image Builder는 일반 Sysprep 명령을 사용합니다. 그러나 이 명령은 성공적인 모든 Windows 일반화에 적합하지 않을 수 있습니다. VM Image Builder를 사용하면 Sysprep 명령을 사용자 지정할 수 있습니다. VM Image Builder는 Sysprep 명령을 성공적으로 실행하는 이미지 자동화 도구입니다. 그러나 이미지를 다시 사용할 수 있게 하려면 다른 Sysprep 명령이 필요할 수 있습니다. Linux의 경우 VM Image Builder는 일반 waagent -deprovision+user 명령을 사용합니다. 자세한 내용은 Microsoft Azure Linux 에이전트 설명서를 참조하세요.

기존 사용자 지정을 마이그레이션하고 다양한 Sysprep 명령이나 waagent 명령을 사용하는 경우 VM Image Builder 일반 명령을 사용해 볼 수 있습니다. VM 만들기가 실패하면 이전 Sysprep 명령이나 waagent 명령을 사용합니다.

VM Image Builder를 사용하여 Windows 사용자 지정 이미지를 성공적으로 만들었지만 이미지에서 VM을 성공적으로 만들지 못했다고 가정해 보겠습니다. 예를 들어 VM 만들기가 완료되지 않았거나 시간이 초과되었습니다. 이 이벤트에서 다음 중 하나를 수행합니다.

  • Windows Server Sysprep 문서를 검토합니다.
  • Windows Server Sysprep 고객 서비스 지원 팀에 지원을 요청합니다. 문제를 해결하는 데 도움을 주고 올바른 Sysprep 명령을 알려줄 수 있습니다.

명령 위치 및 파일 이름

Windows:

c:\DeprovisioningScript.ps1

Linux:

/tmp/DeprovisioningScript.sh

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

-deprovision 명령: Linux

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

명령 재정의

명령을 재정의하려면 PowerShell 또는 셸 스크립트 구축 프로그램을 사용하여 정확한 파일 이름으로 명령 파일을 만들고 이전에 나열된 디렉터리에 배치합니다. VM Image Builder는 이러한 명령을 읽고 출력을 customization.log에 씁니다.

지원 받기

지침을 참조했지만 문제가 계속되면 지원 사례를 열 수 있습니다. 올바른 제품과 지원 토픽을 선택해야 합니다. 이렇게 하면 Azure VM Image Builder 지원 팀과 연결됩니다.

사례 제품 선택:

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

다음 단계

자세한 내용은 VM Image Builder 개요를 참조하세요.