환경에서 VM 리소스 관리

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2020

이 문서에서는 환경에서 VM(가상 머신) 리소스를 사용하여 여러 컴퓨터에서 Azure Pipelines 배포를 관리하는 방법을 설명합니다. 배포를 롤링하기 위해 자체 서버에 에이전트를 설치할 수도 있습니다.

VM 리소스는 개발, 테스트 또는 프로덕션과 같은 환경에 존재할 수 있습니다. 환경을 정의한 후 배포를 사용하여 대상에 VM을 추가할 수 있습니다. 환경의 배포 기록은 각 VM에서 파이프라인으로의 추적 가능성을 제공합니다.

필수 조건

  • 파이프라인에 연결된 원본 리포지토리에 액세스합니다.
  • 환경에 연결하려는 VM에서 실행 스크립트를 다운로드하고 실행할 수 있는 액세스 및 권한입니다.
  • 환경을 포함하는 Azure DevOps 프로젝트의 프로젝트 관리자 또는 빌드 관리자 권한 입니다. 자세한 내용은 파이프라인 보안 리소스를 참조 하세요.
  • 배포 풀대한 관리자 역할 또는 조직에서 사용할 수 있는 대상 서버 집합입니다. 자세한 내용은 배포 풀 및 환경 권한을 참조 하세요.

참고 항목

배포 그룹 에이전트를 구성하거나 VM 환경 리소스를 등록할 때 오류가 표시되는 경우 PAT(개인 액세스 토큰) 범위를 액세스 가능한 모든 조직으로 설정해야 합니다.

환경 만들기

다음 절차에 따라 환경에 VM 리소스를 추가합니다. 동일한 프로세스를 사용하여 물리적 컴퓨터를 설정할 수 있습니다.

VM 리소스 추가

  1. Azure DevOps 프로젝트에서 파이프라인>환경으로 이동한 다음, 환경 또는 새 환경 만들기를 선택합니다.

  2. 첫 번째 새 환경 화면에서 이름 및 선택적 설명을 추가합니다.

  3. 리소스에서 가상 머신을 선택한 다음, 다음을 선택합니다.

    환경 추가를 보여 주는 스크린샷

등록 스크립트 복사

VM 리소스에 대한 에이전트 스크립트는 자체 호스팅 에이전트에 대한 스크립트와 같으며 동일한 명령을 사용합니다. 스크립트에는 로그인한 사용자에 대한 Azure DevOps PAT(Personal Access Token)가 포함되며 스크립트가 생성된 후 3시간 후에 만료됩니다.

  1. 다음 새 환경 화면에서 운영 체제에서 Linux를 선택합니다.

  2. Linux 등록 스크립트를 복사합니다.

    가상 머신 추가를 보여 주는 스크린샷

이 스크립트는 환경에 추가된 모든 Linux VM에 대해 동일합니다. 에이전트 스크립트 설치에 대한 자세한 내용은 자체 호스팅 Linux 에이전트를 참조 하세요.

복사한 스크립트 실행

  1. 닫기를 선택하고 새 환경이 만들어집니다. 스크립트를 다시 복사하려면(예: PAT가 만료되는 경우) 리소스 추가를 선택합니다.

    생성된 새 환경 메시지의 스크린샷.

  2. 환경에 등록하려는 각 대상 VM에서 복사된 스크립트를 실행합니다.

    참고 항목

    VM에 이미 다른 에이전트가 실행 중인 경우 에이전트가 환경에 등록할 고유한 이름을 제공합니다.

VM이 등록되면 환경의 리소스 탭 아래에 리소스 로 표시됩니다.

리소스 탭의 스크린샷.

파이프라인에서 VM 사용

YAML 파이프라인에서 해당 환경을 참조하여 VM을 대상으로 지정할 수 있습니다. 기본적으로 작업은 해당 환경에 resourceName등록된 모든 VM을 대상으로 합니다.

참고 항목

스테이지를 다시 시도하면 실패한 대상뿐만 아니라 모든 VM에서 배포가 다시 실행됩니다.

trigger: 
- main

pool: 
   vmImage: ubuntu-latest

jobs:
- deployment: VMDeploy
  displayName: Deploy to VM
  environment: 
   name: VMenv
   resourceName: VMenv
   resourceType: virtualMachine
  strategy:
     runOnce:
        deploy:   
          steps:
            - script: echo "Hello world"

참고 항목

같은 virtualMachine 값은 resourceType 대/소문자를 구분합니다. 대/소문자를 잘못 지정하면 일치하는 리소스를 찾을 수 없습니다.

에서 지정하여 환경의 특정 VM에 배포할 수 있습니다 resourceName. 다음 예제에서는 환경에 명명된 RESOURCE-PC VM 리소스에만 배포합니다 VMenv .

trigger: 
- main

pool: 
   vmImage: ubuntu-latest

jobs:
- deployment: VMDeploy
  displayName: Deploy to VM
  environment: 
    name: VMenv
    resourceType: virtualMachine
    resourceName: RESOURCE-PC # only deploy to the VM resource named RESOURCE-PC
  strategy:
    runOnce:
      deploy:   
          steps:
          - script: echo "Hello world"

YAML 파이프라인 배포 작업에 대한 자세한 내용은 YAML 파이프라인 스키마를 참조하세요.

태그 추가 및 관리

태그는 배포를 위해 환경에서 특정 VM 집합을 대상으로 지정하는 방법입니다. 태그는 각각 256자로 제한됩니다. 사용할 수 있는 태그 수에는 제한이 없습니다.

VM 리소스에 대한 추가 작업을 선택하여 대화형 등록 스크립트 또는 UI를 통해 VM에 대한 태그를 추가하거나 제거할 수 있습니다.

VM 태그 설정을 보여 주는 스크린샷

여러 태그를 지정하는 경우 파이프라인은 모든 태그를 포함하는 VM만 사용합니다. 다음 예제에서는 태그와 prod 태그가 모두 windows 있는 VM만 대상으로 합니다. 태그가 하나만 있거나 없는 VM은 대상으로 지정되지 않습니다.

trigger: 
- main

pool: 
   vmImage: ubuntu-latest

jobs:
- deployment: VMDeploy
  displayName: Deploy to VM
  environment: 
    name: VMenv
    resourceType: virtualMachine
    tags: windows,prod # only deploy to VMs with both windows and prod tags
  strategy:
    runOnce:
      deploy:   
          steps:
          - script: echo "Hello world"

배포 전략 적용

배포 strategy 를 적용하여 애플리케이션을 롤아웃하는 방법을 정의할 수 있습니다. VM은 전략과 rolling 전략을 모두 runOnce 지원합니다. 배포 전략 및 수명 주기 후크에 대한 자세한 내용은 배포 전략을 참조하세요.

배포 기록 보기

커밋 및 작업 항목의 전체 추적 가능성과 환경 및 리소스당 파이프라인 간 배포 기록을 보려면 배포 탭을 선택합니다.

VM 배포 보기를 보여 주는 스크린샷

환경에서 VM 제거

Linux 환경에서 VM을 제거하려면 각 컴퓨터에서 다음 명령을 실행합니다.

./config.sh remove