다음을 통해 공유


Azure Pipelines에 DevTest Labs 통합

Azure DevTest Labs Tasks 확장을 사용하여 Azure DevTest Labs를 Azure Pipelines CI/CD(연속 통합 및 지속적인 업데이트) 파이프라인에 통합할 수 있습니다. 확장은 다음을 포함한 여러 작업을 Azure Pipelines에 설치합니다.

  • VM(가상 머신) 만들기
  • VM에서 사용자 지정 이미지 만들기
  • VM 삭제

이러한 작업을 통해 골든 이미지 VM를 빠르게 배포하고 특정 테스트를 실행한 후 VM을 삭제하는 등의 작업이 쉬워집니다.

이 문서는 Azure DevTest Labs Tasks를 사용하여 VM을 만들어 배포하기, 사용자 지정 이미지 만들기 및 VM 삭제하기 방법을 하나의 릴리스 파이프라인으로 보여줍니다. 일반적으로 이러한 작업은 사용자 고유의 빌드, 테스트 및 배포 파이프라인에서 개별적으로 수행합니다.

Azure DevTest Labs 시작

Azure를 처음 사용하세요? 체험 Azure 계정을 만드세요.

이미 Azure에 계정이 있나요? 첫 번째 랩 을 만들고 몇 분 안에 Azure DevTest Labs를 시작합니다.

필수 조건

  • Azure Portal에서 DevTest Labs 랩을 만들거나 기존 랩을 사용합니다.

  • Azure DevOps Services 조직에 등록하거나 로그인하고 프로젝트를 만들거나 기존 프로젝트를 사용합니다.

  • Visual Studio Marketplace에서 Azure DevTest Labs Tasks 확장을 설치합니다.

    1. Azure DevTest Labs 작업으로 이동합니다.
    2. Get it free를 선택합니다.
    3. 드롭다운 목록에서 Azure DevOps Services 조직을 선택한 후 설치를 선택합니다.

랩 VM을 빌드하는 템플릿 만들기

먼저 요청 시 랩 VM을 만드는 ARM(Azure Resource Manager) 템플릿을 생성합니다.

  1. Azure Portal의 랩에서 위쪽 메뉴 모음에 있는 추가를 선택합니다.
  2. 기본 선택 화면에서 VM에 대한 Windows 기본 이미지를 선택합니다.
  3. 랩 리소스 만들기 화면의 아티팩트에서 아티팩트 추가 또는 제거를 선택합니다.
  4. 아티팩트 추가 화면에서 winrm을 검색한 다음, WinRM 구성 옆에 있는 화살표를 선택합니다.
  5. 아티팩트 추가 창에서 VM의 FQDN(정규화된 도메인 이름)을 입력합니다(예: contosolab00000000000000.westus3.cloudapp.azure.com). 확인을 선택한 후, 다시 확인을 선택합니다.
  6. 고급 설정 탭을 선택하고 IP 주소에 대해 공용을 선택합니다.

    참고 항목

    WinRM 아티팩트를 공유 IP 주소와 함께 사용하는 경우 NAT(Network Address Translation) 규칙을 추가하여 외부 포트를 WinRM 포트에 매핑해야 합니다. 공용 IP 주소를 사용하여 VM을 만드는 경우에는 NAT 규칙이 필요하지 않습니다. 이 연습에서는 공용 IP 주소를 사용하여 VM을 만듭니다.

  7. ARM 템플릿 보기를 선택합니다.
  8. 템플릿 코드를 복사하고 로컬 소스 제어 분기에 CreateVMTemplate.json이라는 파일로 저장합니다.
  9. 프로젝트의 소스 제어 시스템에서 템플릿을 검사합니다.

자세한 내용과 세부 정보는 Resource Manager 템플릿 사용을 참조하세요.

VM 속성을 가져오는 스크립트 만들기

다음으로, Azure 파일 복사대상 컴퓨터의 PowerShell과 같은 작업 단계에서 VM에 앱을 배포하는 데 사용하는 값을 수집하는 스크립트를 만듭니다. 일반적으로 이러한 작업을 사용하여 Azure VM에 고유한 앱을 배포합니다. VM 리소스 그룹 이름, IP 주소 및 FQDN(정규화된 도메인 이름)과 같은 값을 요구하는 작업입니다.

참고 항목

Azure Az PowerShell 모듈을 사용하여 Azure와 상호 작용하는 것이 좋습니다. 시작하려면 Azure PowerShell 설치를 참조하세요. Az PowerShell 모듈로 마이그레이션하는 방법에 대한 자세한 내용은 Azure PowerShell을 AzureRM에서 Azure로 마이그레이션을 참조하세요.

GetLabVMParams.ps1과 같은 이름으로 다음 스크립트를 저장하고 프로젝트의 소스 제어 시스템에 체크 인합니다.

Param( [string] $labVmId)

$labVmComputeId = (Get-AzResource -Id $labVmId).Properties.ComputeId

# Get lab VM resource group name
$labVmRgName = (Get-AzResource -Id $labVmComputeId).ResourceGroupName

# Get the lab VM Name
$labVmName = (Get-AzResource -Id $labVmId).Name

# Get lab VM public IP address
$labVMIpAddress = (Get-AzPublicIpAddress -ResourceGroupName $labVmRgName -Name $labVmName).IpAddress

# Get lab VM FQDN
$labVMFqdn = (Get-AzPublicIpAddress -ResourceGroupName $labVmRgName -Name $labVmName).DnsSettings.Fqdn

# Set a variable labVmRgName to store the lab VM resource group name
Write-Host "##vso[task.setvariable variable=labVmRgName;]$labVmRgName"

# Set a variable labVMIpAddress to store the lab VM Ip address
Write-Host "##vso[task.setvariable variable=labVMIpAddress;]$labVMIpAddress"

# Set a variable labVMFqdn to store the lab VM FQDN name
Write-Host "##vso[task.setvariable variable=labVMFqdn;]$labVMFqdn"

Azure Pipelines에서 릴리스 파이프라인 만들기

다음으로, Azure Pipelines에서 릴리스 파이프라인을 만듭니다. 파이프라인 작업은 ARM 템플릿을 만들 때 VM에 할당한 값을 사용합니다.

  1. Azure DevOps Services 프로젝트 페이지의 왼쪽 탐색 영역에서 파이프라인>릴리스를 선택합니다.
  2. 새 파이프라인을 선택합니다.
  3. 템플릿 선택 창에서 빈 작업을 선택합니다.
  4. 스테이지 창을 닫습니다.
  5. 새 릴리스 파이프라인 페이지에서 변수 탭을 선택합니다.
  6. 추가를 선택하고, 다음 이름 쌍을 입력하고, 각 쌍을 추가한 후 추가를 선택합니다.
    • vmName: ARM 템플릿에서 할당한 VM 이름입니다.
    • userName: VM에 액세스할 사용자 이름입니다.
    • password: 사용자 이름의 암호입니다. 암호를 숨기고 보호하려면 자물쇠 아이콘을 선택합니다.

아티팩트 추가

  1. 새 릴리스 파이프라인 페이지의 파이프라인 탭에서 아티팩트 추가를 선택합니다.
  2. 아티팩트 창 추가에서 Azure 리포지토리를 선택합니다.
  3. 프로젝트 목록에서 DevOps 프로젝트를 선택합니다.
  4. 원본(리포지토리) 목록에서 원본 리포지토리를 선택합니다.
  5. 기본 분기 목록에서 체크 아웃하려는 분기를 선택합니다.
  6. 추가를 선택합니다.

DevTest Labs VM 만들기

다음 단계에서는 향후 배포에 사용할 골든 이미지 VM을 만듭니다. 이 단계에서는 Azure DevTest Labs VM 만들기 작업을 사용합니다.

  1. 새 릴리스 파이프라인 페이지의 파이프라인 탭에서 1단계에서 하이퍼링크된 텍스트를 선택합니다.

  2. 왼쪽 창에서 에이전트 작업 옆에 있는 더하기 기호(+)를 선택합니다.

  3. 오른쪽 창의 작업 추가에서 Azure DevTest Labs VM 만들기를 검색하여 선택하고 추가를 선택합니다.

  4. 왼쪽 창에서 Azure DevTest Labs VM 만들기 작업을 선택합니다.

  5. 오른쪽 창에서 다음과 같이 양식을 작성합니다.

    • Azure RM 구독: 드롭다운 목록에서 서비스 연결 또는 구독을 선택하고 필요한 경우 권한 부여를 선택합니다.

      참고 항목

      Azure 구독에 대해 더욱 제한된 권한 연결을 만드는 방법에 대한 자세한 내용은 Azure Resource Manager 서비스 엔드포인트를 참조하세요.

    • : DevTest Labs 랩 이름을 선택합니다.

    • Virtual Machine 이름: 가상 머신 이름에 대해 지정한 변수: $vmName.

    • 템플릿: 프로젝트 리포지토리에 체크 인한 템플릿 파일을 찾아 선택합니다.

    • 매개 변수 파일: 매개 변수 파일을 리포지토리에 체크 인한 경우 해당 파일을 찾아 선택합니다.

    • 매개 변수 재정의: -newVMName '$(vmName)' -userName '$(userName)' -password '$(password)'를 입력합니다.

    • 출력 변수를 드롭다운하고 참조 이름 아래에 만든 랩 VM ID의 변수를 입력합니다. 간단히 하기 위해 참조 이름으로 vm을 입력해 보겠습니다. labVmId는 이 변수의 특성이며 나중에 $vm.labVmId로 참조됩니다. 다른 이름을 사용하는 경우 후속 태스크에서 적절하게 사용해야 합니다.

      랩 VM ID는 /subscriptions/{subscription Id}/resourceGroups/{resource group Name}/providers/Microsoft.DevTestLab/labs/{lab name}/virtualMachines/{vmName} 형식으로 표시됩니다.

DevTest Labs VM의 세부 정보 수집

다음으로, 파이프라인은 사용자가 만든 스크립트를 실행하여 DevTest Labs VM의 세부 정보를 수집합니다.

  1. 릴리스 파이프라인 태스크 탭에서 에이전트 작업 옆에 있는 더하기 기호 +를 선택합니다.
  2. 오른쪽 창의 작업 추가에서 Azure PowerShell을 검색하여 선택하고 추가를 선택합니다.
  3. 왼쪽 창에서 Azure PowerShell 스크립트: FilePath 작업을 선택합니다.
  4. 오른쪽 창에서 다음과 같이 양식을 작성합니다.
    • Azure 구독: 서비스 연결 또는 구독을 선택합니다.
    • 스크립트 형식: 스크립트 파일 경로를 선택합니다.
    • 스크립트 경로: 소스 코드 리포지토리에 체크 인한 PowerShell 스크립트를 찾아 선택합니다. 기본 제공 속성을 사용하여 경로를 단순화할 수 있습니다. 예를 들면 $(System.DefaultWorkingDirectory/Scripts/GetLabVMParams.ps1입니다.
    • 스크립트 인수: 값을 -labVmId $(vm.labVmId)로 입력합니다.

스크립트는 필수 값을 수집하여 이후 단계에서 참조할 수 있도록 릴리스 파이프라인 내 환경 변수에 이를 저장합니다.

DevTest Labs VM에서 VM 이미지 만들기

다음 작업에서는 랩에 새로 배포된 VM의 이미지를 만듭니다. 이미지를 사용하여 요청 시 VM의 복사본을 만들어 개발자 작업을 수행하거나 테스트를 실행할 수 있습니다.

  1. 릴리스 파이프라인 태스크 탭에서 에이전트 작업 옆에 있는 더하기 기호 +를 선택합니다.
  2. 작업 추가에서 Azure DevTest Labs VM로 사용자 지정 이미지 만들기를 선택하고 추가를 선택합니다.
  3. 왼쪽 창에서 Azure DevTest Labs 사용자 지정 이미지 만들기 작업을 선택합니다.
  4. 오른쪽 창에서 다음과 같이 양식을 작성합니다.
    • Azure RM 구독: 서비스 연결 또는 구독을 선택합니다.
    • : 랩을 선택합니다.
    • 사용자 지정 이미지 이름: 사용자 지정 이미지의 이름을 입력합니다.
    • 설명: 올바른 이미지를 쉽게 선택할 수 있도록 선택적 설명을 입력합니다.
    • 원본 랩 VM: 원본 labVmId입니다. 값을 $(vm.labVmId)로 입력합니다.
    • 출력 변수: 필요한 경우 기본 사용자 지정 이미지 ID 변수의 이름을 편집할 수 있습니다.

DevTest Labs VM에 앱 배포(선택 사항)

새 DevTest Labs VM에 앱을 배포하는 작업을 추가할 수 있습니다. 앱을 배포하지 않고 DevTest Labs VM 및 사용자 지정 이미지를 만들어 시험하려는 경우 이 단계를 건너뛸 수 있습니다.

일반적으로 앱을 배포하는 데 사용하는 작업은 Azure 파일 복사대상 컴퓨터의 PowerShell입니다. 작업 매개 변수에 필요한 VM 정보는 릴리스 파이프라인 내 labVmRgName, labVMIpAddresslabVMFqdn이라는 세 가지 구성 변수에서 찾을 수 있습니다.

VM 삭제

마지막 작업은 랩에 배포한 VM을 삭제하는 것입니다. 일반적으로 배포된 VM에서 필요한 개발자 작업을 수행하거나 테스트를 실행한 후에는 VM을 삭제합니다.

  1. 릴리스 파이프라인 태스크 탭에서 에이전트 작업 옆에 있는 더하기 기호 +를 선택합니다.
  2. 작업 추가에서 Azure DevTest Labs로 VM 삭제를 선택하고 추가를 선택합니다.
  3. 아래와 같이 작업을 구성합니다.
    • Azure RM 구독: 서비스 연결 또는 구독을 선택합니다.
    • : 랩을 선택합니다.
    • Virtual Machine: 값을 $(vm.labVmId)로 입력합니다.
    • 출력 변수: 참조 이름에서 labVmId 변수의 기본 이름을 변경한 경우 여기에 입력합니다. 기본값은 $(labVmId)입니다.

릴리스 파이프라인 저장

새 릴리스 파이프라인을 저장하려면 다음을 수행합니다.

  1. 릴리스 파이프라인 페이지 맨 위에서 새 릴리스 파이프라인을 선택하고 파이프라인의 새 이름을 입력합니다.
  2. 오른쪽 위에서 저장을 선택합니다.

릴리스 만들기 및 실행

새 파이프라인을 사용하여 릴리스를 만들고 실행하려면 다음을 수행합니다.

  1. 릴리스 파이프라인 페이지의 오른쪽 위에서 릴리스 만들기를 선택합니다.
  2. 아티팩트에서 최신 빌드를 선택하고 만들기를 선택합니다.

각 릴리스 단계마다 Azure Portal에서 랩 보기를 새로 고침하여 VM 만들기, 이미지 만들기 및 VM 삭제를 확인할 수 있습니다.

사용자 지정 이미지를 사용하여 필요할 때마다 VM을 만들 수 있습니다.

다음 단계