다음을 통해 공유


Azure DevTest Labs의 랩 가상 머신에서 아티팩트 문제 해결

이 문서에서는 Azure DevTest Labs VM(가상 머신) 리소스의 아티팩트 오류에 대한 가능한 원인과 문제 해결 단계를 안내합니다.

아티팩트는 VM을 만드는 동안 또는 만든 이후에 랩 VM에 설치할 수 있는 도구, 작업 또는 소프트웨어입니다. 랩 소유자는 만들 때 모든 랩 VM에 적용할 필수 아티팩트를 미리 선택할 수 있으며 랩 사용자는 자신이 소유한 VM에 아티팩트를 적용할 수 있습니다. 여러 가지 가능한 문제로 인해 아티팩트가 랩에 설치 및 적용되지 않거나 랩 VM에서 올바르게 실행되지 않을 수 있습니다.

아티팩트가 응답을 멈춘 것처럼 보이면 첫 번째 단계는 프로세스가 중단된 이유를 확인하는 것입니다. 아티팩트 설치는 초기 요청 중에 차단되거나 요청 실행 중에 실패할 수 있습니다. 아티팩트 오류는 Azure Portal 또는 아티팩트가 실패한 VM에서 해결할 수 있습니다.

Azure Portal에서 문제 해결

아티팩트가 랩 VM에 성공적으로 적용되지 않으면 Azure Portal에서 VM 상태를 조사하여 시작할 수 있습니다. VM 상태에 대한 정보를 찾고, 실행 중인지 확인하고, 아티팩트가 적용될 수 있는지 확인할 수 있습니다. 랩 VM의 활동 로그 데이터에는 설치 프로세스에 대한 항목이 표시됩니다. 항목을 확인하여 아티팩트 실패에 대한 정보를 찾을 수 있습니다.

VM 상태 확인

다음 단계에 따라 Azure Portal에서 VM 상태를 확인합니다.

  1. DevTest Labs 랩 VM의 개요 페이지로 이동하여 컴퓨터가 실행 중인지 확인합니다.

    DevTest Labs 가상 머신이 실행 중인지 확인하는 방법을 보여 주는 스크린샷.

  2. 아티팩트를 선택하고 랩 VM의 아티팩트 목록을 엽니다.

    랩 가상 머신의 아티팩트 목록을 여는 방법을 보여 주는 스크린샷.

  3. 아티팩트 적용 옵션을 선택하고 랩 VM이 적용된 아티팩트를 수락할 준비가 되었는지 확인합니다.

    DevTest Labs 가상 머신에 적용할 수 있는 아티팩트를 확인하는 방법을 보여 주는 스크린샷.

    아티팩트 적용 옵션이 회색으로 표시되면 랩 VM에 아티팩트를 적용할 수 없으며 페이지에 알림 메시지가 표시됩니다.

    DevTest Labs 가상 머신에 적용할 수 없는 아티팩트를 보여 주는 메시지의 스크린샷.

PowerShell 명령 사용

Azure PowerShell을 사용하여 랩 VM이 적용된 아티팩트를 받을 수 있는지 확인할 수도 있습니다.

다음 GET 명령은 True 또는 False 값으로 canApplyArtifacts 플래그를 반환합니다. 명령을 실행하려면 $LabName/$VmName 매개 변수를 랩 이름 및 VM 이름으로 바꾸고 $LabRgName 매개 변수에 랩 리소스 그룹을 지정합니다.

Select-AzSubscription -SubscriptionId $SubscriptionId | Out-Null
$vm = Get-AzResource `
        -Name "$LabName/$VmName" `
        -ResourceGroupName $LabRgName `
        -ResourceType 'microsoft.devtestlab/labs/virtualmachines' `
        -ApiVersion '2018-10-15-preview' `
        -ODataQuery '$expand=Properties($expand=ComputeVm)'
$vm.Properties.canApplyArtifacts

실패한 아티팩트 세부 정보 조사

아티팩트가 응답을 중지하고 결국 랩 VM의 아티팩트 목록에 실패로 표시될 수 있습니다.

다음 단계에 따라 실패한 아티팩트를 조사합니다.

  1. 랩 VM의 아티팩트 목록 페이지로 이동하여 실패 상태의 아티팩트를 선택합니다.

    랩 가상 머신에 대해 실패한 아티팩트를 찾고 선택하는 방법을 보여 주는 스크린샷.

  2. 아티팩트 세부 정보 보기가 열립니다. 세부 정보에는 아티팩트 실패에 대한 배포 메시지확장 메시지 정보가 포함됩니다.

    배포 및 확장 메시지 정보를 포함하여 실패한 아티팩트에 대한 세부 정보의 스크린샷.

활동 로그 검사

아티팩트를 설치하기 위해 DevTest Labs는 CSE(사용자 지정 스크립트 확장) 사용을 요청하는 ARM(Azure Resource Manager) 템플릿을 만들고 배포합니다. 이 수준의 오류는 구독 및 랩 VM이 포함된 리소스 그룹에 대한 활동 로그에 표시됩니다.

참고 항목

활동 로그를 볼 때 실패 오류 요약을 보려면 설치 프로세스 항목을 확장해야 할 수도 있습니다.

다음 단계에 따라 랩 VM에서 아티팩트 설치 또는 적용과 관련된 오류에 대한 활동 로그 항목을 검사합니다.

  1. 랩 VM의 활동 로그 페이지로 이동하여 실패 상태의 아티팩트를 찾습니다.

    랩 VM에서 실패한 아티팩트에 대한 활동 로그 항목을 찾는 방법을 보여 주는 스크린샷.

  2. 세부 정보 창을 열고 로그 정보를 보려면 항목을 선택합니다.

    • 아티팩트를 랩 VM에 직접 적용하려는 경우 가상 머신 확장 만들기 또는 업데이트 설치 프로세스와 관련된 실패 오류를 찾습니다.

    • VM을 만들고 프로세스 중에 아티팩트를 적용하는 경우 가상 머신 만들기 또는 업데이트 설치 프로세스에 대해 보고된 실패 오류를 찾습니다.

    창 제목은 가상 머신에 아티팩트 적용과 같은 항목 제목에 해당합니다.

    실패한 아티팩트에 대한 활동 로그 항목의 세부 정보를 보는 방법을 보여 주는 스크린샷.

  3. 세부 정보 창에서 JSON을 선택하여 JSON 페이로드의 콘텐츠를 검토합니다. JSON 문서의 끝에서 오류를 볼 수 있습니다.

    실패한 아티팩트에 대한 활동 로그 항목의 JSON 세부 정보를 보는 방법을 보여 주는 스크린샷.

아티팩트 리포지토리 및 랩 스토리지 계정 조사

DevTest Labs는 아티팩트를 적용할 때 연결된 리포지토리에서 아티팩트 구성과 파일을 읽습니다. 아티팩트를 랩 VM에 설치하거나 적용하지 못하는 경우 문제는 리포지토리 액세스와 관련이 있을 수 있습니다.

기본적으로 DevTest Labs는 DevTest Labs 공용 아티팩트 리포지토리에 액세스할 수 있습니다. 랩을 프라이빗 리포지토리에 연결하여 사용자 지정 아티팩트에 액세스도 가능합니다. 구성에 따라 랩 VM은 아티팩트 리포지토리에 직접 액세스하지 못할 수 있습니다. DevTest Labs는 랩이 처음 초기화될 때 만들어진 랩 스토리지 계정에 아티팩트를 캐시합니다.

  • 사용자 지정 아티팩트를 설치하지 못한 경우 프라이빗 리포지토리에 대한 PAT(개인용 액세스 토큰)가 만료되지 않았는지 확인합니다. PAT가 만료되면 아티팩트가 나열되지 않으며 해당 리포지토리의 아티팩트를 참조하는 모든 스크립트가 실패합니다.

  • 스토리지 계정에 대한 액세스가 차단되면 다음 예와 유사한 오류가 표시될 수 있습니다.

    CSE Error: Failed to download all specified files. Exiting. Exception: Microsoft.WindowsAzure.Storage.StorageException: The remote server returned an error: (403) Forbidden. ---> System.Net.WebException: The remote server returned an error: (403) Forbidden.
    

    이 오류가 발생할 수 있는 시나리오는 VM에서 Azure Storage 서비스로의 트래픽이 차단되는 경우입니다. 랩 VM에 대한 리소스 그룹의 활동 로그에 오류가 나타납니다.

다음 단계에 따라 Azure Storage 계정에 대한 리포지토리 연결 문제를 식별합니다.

  1. 추가된 NSG(네트워크 보안 그룹)를 확인합니다. 모든 가상 네트워크에서 NSG를 자동으로 구성하기 위해 구독 정책을 추가하면 랩 VM을 만드는 데 사용되는 가상 네트워크에 영향을 미칠 수 있습니다.

  2. 모든 NSG 규칙을 확인합니다.

  3. 랩의 기본 스토리지 계정을 확인합니다.

    기본 스토리지 계정은 랩을 만드는 동안 만들어진 첫 번째 스토리지 계정입니다. 이름은 일반적으로 문자 "a"로 시작하고 a<labname>#과 같은 여러 자리 숫자로 끝납니다.

    1. DevTest Labs 랩 VM의 개요 페이지로 이동하여 리소스 비주얼라이저를 선택합니다.

    2. 다이어그램에서 설명된 명명 규칙 a<labname>#과 일치하는 이름을 가진 스토리지 계정을 찾습니다.

    3. 스토리지 계정 리소스를 선택하여 팝업 메뉴를 확인한 다음 보기를 선택합니다.

      DevTest Labs 랩 리소스의 스토리지 계정에 대한 보기 옵션을 선택하는 방법을 보여 주는 스크린샷.

    4. 스토리지 계정 개요 페이지에서 왼쪽 메뉴의 보안 + 네트워킹 섹션을 확장하고 네트워킹을 선택합니다.

      DevTest Labs 랩 리소스에 대한 스토리지 계정의 네트워킹 구성을 보는 방법을 보여 주는 스크린샷.

    5. 방화벽 및 가상 네트워크 탭에서 공용 네트워크 액세스 옵션 구성을 확인합니다.

      1. 선택한 가상 네트워크 및 IP 주소에서 사용을 선택한 경우 허용된 IP 주소 목록에 랩 VM을 만드는 데 사용할 수 있는 랩의 가상 네트워크가 표시되는지 확인합니다.

        랩 리소스 스토리지 계정에 대해 선택한 가상 네트워크 및 IP 주소에서 사용 선택을 보여 주는 스크린샷.

      2. 그렇지 않은 경우 모든 네트워크에서 사용이 선택되었는지 확인합니다.

        랩 리소스 스토리지 계정에 대한 모든 네트워크에서 사용을 보여 주는 스크린샷.

문제 해결에 대한 자세한 내용은 Azure Storage 방화벽 및 가상 네트워크 구성을 참조하세요.

랩 컴퓨터의 문제 해결

아티팩트가 실패한 랩 VM에 연결하고 문제를 조사할 수 있습니다.

사용자 지정 스크립트 확장 로그 파일 검사

다음 단계에 따라 Windows VM에 대한 CSE(사용자 지정 스크립트 확장) 로그 파일을 확인합니다.

  1. 실행 중인 DevTest Labs 랩 VM에 연결합니다.

  2. 파일 탐색기 창을 열고 C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\<CSE version>\Status\로 이동합니다. <CSE 버전>의 예는 1.10.12입니다.

    DevTest Labs용 Windows 가상 머신의 상태 폴더 콘텐츠를 보여 주는 스크린샷.

  3. STATUS 파일을 열고 검사하여 1.status와 같은 오류를 확인합니다.

Linux VM에서 로그 파일을 찾는 방법에 대한 지침은 Linux 가상 머신에서 Azure 사용자 지정 스크립트 확장 버전 2 사용을 참조하세요.

Azure 가상 머신 에이전트 확인

랩 VM용 Azure VM 에이전트(가상 머신 에이전트)가 설치되어 있고 준비되었는지 확인합니다.

랩 VM이 처음 시작되거나 아티팩트 적용 요청을 처리하기 위해 CSE가 처음 설치될 때 랩 VM은 VM 에이전트를 업그레이드하거나 VM 에이전트가 초기화될 때까지 기다려야 할 수 있습니다. VM 에이전트는 초기화하는 데 시간이 오래 걸리는 서비스에 따라 달라질 수 있습니다.

다음 단계에 따라 VM 에이전트로 인해 아티팩트의 응답이 중지되는지 확인합니다.

  1. 실행 중인 DevTest Labs 랩 VM에 연결합니다.

  2. 파일 탐색기 창을 열고 랩 VM에 대한 로그 파일이 있는 폴더(예: C:\WindowsAzure\logs)로 이동합니다.

  3. WaAppAgent.log 파일을 엽니다.

  4. 로그 파일에서 VM 에이전트의 초기화 시작, 완료 및 첫 번째 하트비트 전송을 보여 주는 항목을 찾습니다. 항목에서 아티팩트 문제가 발생한 시점의 타임스탬프를 검사합니다. 다음 코드 조각은 로그 파일의 몇 가지 예 항목을 보여 줍니다.

    [00000006] [11/14/2019 05:52:13.44] [INFO]  WindowsAzureGuestAgent starting. Version 2.7.41491.949
    ...
    [00000006] [11/14/2019 05:52:31.77] [WARN]  Waiting for OOBE to Complete ...
    ...
    [00000006] [11/14/2019 06:02:30.43] [WARN]  Waiting for OOBE to Complete ...
    [00000006] [11/14/2019 06:02:33.43] [INFO]  StateExecutor initialization completed.
    [00000020] [11/14/2019 06:02:33.43] [HEART] WindowsAzureGuestAgent Heartbeat.
    

    이 예에서는 VM 에이전트를 시작하는 데 10분 20초가 걸렸습니다. 이러한 지연은 OOBE(Out-of-Box-Experience) 서비스를 시작하는 데 오랜 시간이 걸렸기 때문입니다. VM 에이전트의 시작 시간이 길어 아티팩트가 응답을 중지했습니다.

Azure 확장에 대한 일반적인 내용은 Azure 가상 머신 확장 및 기능을 참조하세요. 더 많은 문제 해결 아이디어를 보려면 Azure Virtual Machine 에이전트 개요를 참조하세요.

스크립트 문제 조사

아티팩트 설치가 실패할 수 있는 또 다른 이유는 아티팩트 설치 스크립트가 작성되는 방식 때문입니다.

다음은 잠재적인 스크립트 문제의 몇 가지 예입니다.

  • 스크립트에는 필수 매개 변수가 있지만 스크립트 실행 중에 예상 값이 전달되지 않습니다. 이 시나리오는 사용자가 예상 매개 변수를 비워 두는 것이 허용되고 기본값이 artifactfile.json 정의 파일에 지정되지 않은 경우 발생할 수 있습니다. 결과적으로 스크립트는 사용자 입력을 기다리고 있기 때문에 응답을 중지합니다. 스크립트에 매개 변수 값이 필요한 경우 기본값을 정의하고 사용자가 값을 입력하도록 요구하는 것이 좋습니다.

  • 스크립트는 스크립트 실행 중에 사용자 작업이 필요합니다. 이 시나리오는 사용자가 조치를 취할 때까지 기다리는 동안 스크립트 실행이 오랫동안 지연되는 경우 발생할 수 있습니다. 사용자 개입 없이 자동으로 작동할 수 있는 스크립트를 작성하는 것이 좋습니다.

다음 단계에 따라 스크립트로 인해 아티팩트의 응답이 중지되는지 확인합니다.

  1. 실행 중인 DevTest Labs 랩 VM에 연결합니다.

  2. 파일 탐색기 창을 엽니다.

  3. VM용 아티팩트 설치 스크립트가 있는 Download 폴더(예: C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\<CSE version>\Downloads\)로 이동합니다. <CSE 버전>의 예는 1.10.12입니다.

    후속 단계에서는 이 폴더의 스크립트로 작업하거나 스크립트를 VM의 작업 폴더에 복사할 수 있습니다.

  4. VM에 대한 관리자 권한으로 명령 프롬프트 창을 엽니다.

  5. 명령 프롬프트 창에서 아티팩트 설치 스크립트를 실행합니다.

    스크립트 프롬프트에 따라 필수 매개 변수 값을 입력합니다. 사용자 입력 부족이나 사용자 작업 지연으로 인해 문제가 발생하는지 조사하려면 특정 동작을 재현해 보세요.

  6. 스크립트가 예기치 못한 동작이나 문제가 있는 동작을 나타내는지 확인합니다.

  7. 필요에 따라 랩 VM에서 스크립트를 수정하고 스크립트를 다시 실행하여 문제가 해결되었는지 확인합니다.

아티팩트 구조 확인

사용자 지정 아티팩트는 적절한 구조를 가져야 합니다. 아티팩트 설치 스크립트의 사용자 지정 아티팩트가 올바른 구조를 구현하는지 확인합니다. 다음 리소스는 이 확인을 완료하는 데 도움이 되는 정보를 제공합니다.

스크립트 업데이트 요청

DevTest Labs 공용 리포지토리에서 호스트되는 아티팩트에 대해 제안된 스크립트 수정 사항을 제출할 수 있습니다. 자세한 내용은 README 문서의 기여 섹션을 참조하세요.

지원 받기

도움이 더 필요하면 다음 지원 채널 중 하나를 사용해 보세요.

  • Azure DevTest Labs에 대한 정보를 알아보고 Stack Overflow의 게시물에 액세스하려면 Microsoft 커뮤니티 웹 사이트 리소스를 검색합니다.

  • 고객 환경을 개선하기 위한 공식 Microsoft Azure 계정인 @AzureSupport와 연결합니다. Azure 지원은 Azure 커뮤니티를 답변, 지원 및 전문가에게 연결합니다.