DevTest Labs 가상 머신에서 아티팩트를 적용하는 문제 해결

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

아티팩트는 VM을 만드는 동안 또는 만든 이후에 랩 VM에 설치할 수 있는 도구, 작업 또는 소프트웨어입니다. 랩 소유자는 만들 때 모든 랩 VM에 적용할 필수 아티팩트를 미리 선택할 수 있으며 랩 사용자는 자신이 소유한 VM에 아티팩트를 적용할 수 있습니다.

아티팩트가 올바르게 설치되지 않거나 실행되지 않는 데에는 몇 가지 가능한 원인이 있습니다. 아티팩트가 응답을 중지한 것처럼 보이면 먼저 중지된 위치를 파악하려고 노력합니다. 아티팩트 설치는 초기 요청 중에 차단되거나 요청 실행 중에 실패할 수 있습니다.

아티팩트 오류는 Azure Portal 또는 아티팩트가 실패한 VM에서 해결할 수 있습니다.

Azure Portal에서 아티팩트 실패 문제 해결

VM에 아티팩트를 적용할 수 없는 경우 먼저 Azure Portal에서 다음 항목을 검사.

  • VM이 실행되고 있는지 확인합니다.
  • 랩 VM의 Artifacts 페이지로 이동하여 VM이 아티팩트를 적용할 준비가 되었는지 확인합니다. 아티팩트 적용 기능을 사용할 수 없는 경우 페이지 맨 위에 메시지가 표시됩니다.

PowerShell 명령 사용

Azure PowerShell을 사용하여 VM에서 아티팩트를 적용할 수 있는지 여부를 파악할 수도 있습니다. GET 작업을 확장할 때 반환되는 canApplyArtifacts 플래그를 검사합니다. 예시:

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

실패한 아티팩트 조사

아티팩트가 응답을 중지하고 마침내 실패로 표시될 수 있습니다. 실패한 아티팩트를 조사하려면 다음을 수행합니다.

  1. 개요 페이지의 내 가상 머신 아래 목록에서 조사하려는 아티팩트가 있는 VM을 선택합니다.

  2. VM 개요 페이지의 왼쪽 탐색 영역에서 Artifacts를 선택합니다. Artifacts 페이지에는 VM과 연결된 아티팩트 및 해당 상태가 나열됩니다.

    Screenshot showing the list of artifacts and their status.

  3. 실패 상태를 보여주는 아티팩트를 선택합니다. 아티팩트가 열리고 아티팩트의 실패에 대한 세부 정보를 포함하는 확장 메시지가 표시됩니다.

    Screenshot of the error message for a failed artifact.

활동 로그 검사

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

아티팩트를 설치하지 못한 경우 아티팩트를 직접 적용했다면 가상 머신 확장 만들기 또는 업데이트에 대한 활동 로그 항목을 검사하고 VM 만들기의 일부로 아티팩트를 적용했다면 가상 머신 만들기 또는 업데이트에 대한 항목을 검사합니다. 이 항목 아래에서 실패를 찾습니다. 경우에 따라 실패를 확인하기 위해 항목을 확장해야 합니다.

실패한 항목을 선택하여 오류 세부 정보를 확인합니다. 실패 페이지에서 JSON을 선택하여 JSON 페이로드의 내용을 검토합니다. JSON 문서의 끝에서 오류를 볼 수 있습니다.

프라이빗 아티팩트 리포지토리 및 랩 스토리지 계정 조사

DevTest Labs는 아티팩트를 적용할 때 연결된 리포지토리에서 아티팩트 구성과 파일을 읽습니다. 기본적으로 DevTest Labs는 DevTest Labs 공용 아티팩트 리포지토리에 액세스할 수 있습니다. 랩을 프라이빗 리포지토리에 연결하여 사용자 지정 아티팩트에 액세스도 가능합니다. 사용자 지정 아티팩트를 설치하지 못한 경우 프라이빗 리포지토리에 대한 PAT(개인용 액세스 토큰)가 만료되지 않았는지 확인합니다. PAT가 만료되면 아티팩트가 나열되지 않으며 해당 리포지토리의 아티팩트를 참조하는 스크립트가 실패합니다.

구성에 따라 랩 VM은 아티팩트 리포지토리에 직접 액세스하지 못할 수 있습니다. DevTest Labs는 랩을 처음 초기화할 때 만들어진 랩 스토리지 계정의 아티팩트를 캐시합니다. VM에서 Azure Storage 서비스로의 트래픽이 차단되는 경우와 같이 이 스토리지 계정에 대한 액세스가 차단되면 다음과 유사한 오류가 표시될 수 있습니다.

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 계정에 대한 연결 문제를 해결하려면 다음을 수행합니다.

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

  • NSG 규칙을 확인합니다. IP 흐름 확인을 사용하여 NSG 규칙이 VM을 오가는 트래픽을 차단하는지 확인합니다. 유효한 보안 그룹 규칙을 검토하여 인바운드 허용 NSG 규칙이 있는지 확인할 수도 있습니다. 자세한 내용은 효과적인 보안 규칙을 사용하여 VM 트래픽 흐름 문제를 해결하세요.

  • 랩의 기본 스토리지 계정을 확인합니다. 기본 스토리지 계정은 랩을 만들 때 만든 첫 번째 스토리지 계정입니다. 이름은 일반적으로 문자 "a"로 시작하고 <labname>#과 같은 여러 자리 숫자로 끝납니다.

    1. 랩의 리소스 그룹으로 이동합니다.
    2. 이름이 규칙과 일치하며 종류가 스토리지 계정인 리소스를 찾습니다.
    3. 스토리지 계정 개요 페이지의 왼쪽 탐색 영역에서 네트워킹을 선택합니다.
    4. 방화벽 및 가상 네트워크 탭에서 공용 네트워크 액세스모든 네트워크에서 사용으로 설정되어 있는지 확인합니다. 또는 선택한 가상 네트워크 및 IP 주소에서 사용 옵션을 선택한 경우 VM을 만드는 데 사용되는 랩의 가상 네트워크가 목록에 추가되었는지 확인합니다.

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

랩 VM에서 아티팩트 실패 문제 해결

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

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

  1. 랩 VM에서 C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\*1.10.12*\Status\로 이동합니다. 여기서 *1.10.12*는 CSE 버전 번호입니다.

    Screenshot of the Status folder on the lab V M.

  2. STATUS 파일을 열고 검사하여 오류를 확인합니다.

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

VM 에이전트 확인

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

VM을 처음 시작하거나 아티팩트 적용 요청을 제공하기 위해 CSE를 처음 설치하는 경우 VM에서 VM 에이전트를 업그레이드하거나 VM 에이전트가 초기화될 때까지 기다려야 할 수 있습니다. VM 에이전트는 초기화하는 데 시간이 오래 걸리는 서비스에 따라 달라질 수 있습니다. 추가 문제 해결은 Azure Virtual Machine 에이전트 개요를 참조하세요.

VM 에이전트로 인해 아티팩트가 응답하지 않는 것처럼 보이는지 확인하려면 다음을 수행합니다.

  1. 랩 VM에서 C:\WindowsAzure\logs로 이동합니다.

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

  3. 아티팩트 문제가 발생할 무렵 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 서비스를 시작하는 데 시간이 오래 걸렸기 때문입니다.

Azure 확장에 대한 일반적인 내용은 Azure 가상 머신 확장 및 기능을 참조 하세요.

스크립트 문제 조사

아티팩트 설치 스크립트가 작성된 방식으로 인해 아티팩트 설치가 실패할 수 있습니다. 예시:

  • 스크립트에는 필수 매개 변수가 있지만 사용자가 값을 비워 두도록 허용하거나 artifactfile.json 정의 파일에 기본값이 없기 때문에 값을 전달하지 못합니다. 스크립트는 사용자 입력을 기다리고 있기 때문에 응답을 중지합니다.

  • 스크립트는 실행의 일부로 사용자 입력이 필요합니다. 스크립트는 사용자 개입 없이도 자동으로 작동해야 합니다.

스크립트로 인해 아티팩트가 응답하지 않는 것처럼 보이는지 여부의 문제 해결하려면 다음을 수행합니다.

  1. VM에 스크립트를 복사하거나 아티팩트 스크립트 다운로드 위치 C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.12\Downloads에서 VM의 스크립트를 찾습니다.
  2. 관리 명령 프롬프트를 사용하여 VM에서 스크립트를 실행하고 문제를 일으킨 동일한 매개 변수 값을 제공합니다.
  3. 스크립트에 원치 않는 동작이 표시되는지 확인합니다. 그렇다면 업데이트를 요청하거나 스크립트를 수정합니다.

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

참고 항목

사용자 지정 아티팩트는 적절한 구조를 가져야 합니다. 아티팩트를 올바르게 생성하는 방법에 대한 자세한 내용은 사용자 지정 아티팩트 만들기를 참조 하세요. 적절하게 구조화된 아티팩트의 예는 테스트 매개 변수 형식 아티팩트를 확인하세요.

아티팩트 스크립트를 작성하고 수정하는 방법에 대한 자세한 내용은 AUTHORING을 참조하세요.

다음 단계

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

  • MSDN Azure 및 Stack Overflow 포럼에서 Azure DevTest Labs 전문가에게 문의하세요.
  • Azure 포럼을 통해 Azure 전문가로부터 답변을 얻습니다.
  • 고객 환경을 개선하기 위한 공식 Microsoft Azure 계정인 @AzureSupport와 연결합니다. Azure 지원은 Azure 커뮤니티를 답변, 지원 및 전문가에 연결합니다.
  • Azure 지원 사이트이동하여 지원 티켓 제출을 선택하여 Azure 지원 인시던트를 제출합니다.