Azure Virtual Machine Scale Set에 앱의 지속적인 배포 구현

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019 | TFS 2018

참고

Microsoft TFS(Team Foundation Server) 2018 이하 버전에서 빌드 및 릴리스 ‘파이프라인’은 ‘정의’라고 하며 ‘실행’은 ‘빌드’, ‘서비스 연결’은 ‘서비스 엔드포인트’, ‘스테이지’는 ‘환경’, ‘작업’은 ‘단계’라고 합니다.

머신 이미지 빌드 작업을 사용하면 변경할 수 없는 VHD 기반 배포를 접하는 사용자가 프로비저닝기 및 작성기와 같은 개념을 학습하지 않고도 Packer를 쉽게 사용할 수 있습니다. 배포 스크립트를 사용하여 가상 머신에 배포하는 경우 이 작업을 사용하여 새 가상 머신 인스턴스를 만들거나 가상 머신 확장 집합을 만들고 업데이트할 수 있습니다.

작업의 자동 생성 모드는 다음을 사용하여 Packer 구성을 생성합니다.

  • Azure용 작성기
  • 선택한 기본 운영 체제의 유형에 따라 달라지는 프로비전자입니다. Linux의 경우 셸 스크립트입니다. Windows의 경우 PowerShell 스크립트입니다. 제공된 배포 스크립트는 프로비저닝기에서 사용됩니다.

사용자 지정 Packer 구성 JSON 파일을 사용할 수도 있습니다.

설정

CI 빌드 시작

시작하기 전에 앱을 만드는 CI 빌드가 필요합니다. CI를 설정하려면 다음을 참조하세요.

릴리스 파이프라인 만들기

  1. Azure Pipelines릴리스 탭을 열고 "+" 아이콘을 선택하여 새 릴리스 파이프라인을 만듭니다.

  2. 릴리스 파이프라인 만들기 대화 상자에서 템플릿을 선택하고 다음을 선택합니다.

  3. 다음 페이지에서 이전에 만든 빌드 파이프라인을 선택하고 만들기를 선택합니다. 이렇게 하면 하나의 기본 단계가 있는 새 릴리스 파이프라인이 만들어집니다.

  4. 새 릴리스 파이프라인에서 + 작업 추가 를 선택하고 다음 작업을 추가합니다.

    • 컴퓨터 이미지 빌드
    • Azure PowerShell

    빌드 머신 이미지는Packer를 사용하여 VHD를 만듭니다. 전체 프로세스는 다음과 같습니다.

    • 선택한 기본 운영 체제를 사용하여 새 가상 머신 만들기
    • 배포 스크립트를 사용하여 VM에 모든 필수 구성 요소 및 애플리케이션 설치
    • VHD를 만들고 Azure Storage 계정에 저장
    • 생성된 새 가상 머신 삭제

  5. 다음과 같이 컴퓨터 이미지 빌드 작업을 구성합니다.

    컴퓨터 이미지배포 빌드: 컴퓨터 이미지 빌드 - Packer를 사용하여 컴퓨터 이미지 빌드

    • Packer 템플릿: 사용자 고유의 Packer 구성 JSON 파일을 사용하거나 태스크에서 사용자에 대한 패커 템플릿을 생성하는 자동 생성 기능을 사용할 수 있습니다. 이 예제에서는 자동 생성된 패커 구성을 사용합니다.

    • Azure 구독: 사용할 수 있는 Azure 서비스 연결 목록에서 연결을 선택하거나, Azure 구독에 좀 더 제한된 권한 연결을 만듭니다. 자세한 내용은 Azure Resource Manager 서비스 연결을 참조하세요.

    • 스토리지 위치: VHD가 저장될 스토리지 계정의 위치입니다. 가상 머신 확장 집합이 있는 위치 또는 가상 머신 확장 집합이 만들어지는 위치와 동일해야 합니다.

    • 기본 이미지 원본: OS 이미지의 큐레이팅된 갤러리에서 선택하거나 사용자 지정 이미지의 URL을 제공할 수 있습니다. 예를 들어 Ubuntu 16.04 LTS

    • 배포 패키지: $(System.DefaultWorkingDirectory)를 기준으로 배포 패키지 디렉터리의 경로를 지정합니다. 예를 들어 $(System.DefaultWorkingDirectory)/Packer-NodeJs/drop

    • 배포 스크립트: 패키지를 배포하는 PowerShell 스크립트(Windows용) 또는 셸 스크립트(Linux용)에 대한 상대 경로를 지정합니다. 이 스크립트는 위에서 선택한 배포 패키지 경로 내에 있어야 합니다. 예들 들어 Deploy/ubuntu/deployNodejsApp.sh입니다. 스크립트는 Curl, Node.js, NGINX 및 PM2를 설치해야 할 수 있습니다. 애플리케이션을 복사합니다. 그런 다음, 애플리케이션을 실행하도록 NGINX 및 PM2를 구성합니다.

    • 출력 - 이미지 URL: 생성된 컴퓨터 이미지의 URL을 보유할 출력 변수의 이름을 제공합니다. 예를 들어 bakedImageUrl

    Azure PowerShellDeploy: Azure PowerShell - PowerShell 스크립트를 실행하여 새 VHD로 Virtual Machine Scale Set을 업데이트합니다.

    • Azure 연결 유형: 선택 Azure Resource Manager

    • Azure RM 구독: 사용 가능한 Azure 서비스 연결 아래 목록에서 연결을 선택하거나 Azure 구독에 대한 더 제한된 권한 연결을 만듭니다. 자세한 내용은 Azure Resource Manager 서비스 연결을 참조하세요.

    • 스크립트 유형: 선택 Inline Script

    • 인라인 스크립트: 아래 표시된 스크립트를 입력하여 가상 머신 확장 집합을 업데이트합니다.

    Azure PowerShell 태스크의 인라인 스크립트 매개 변수에 다음 스크립트를 사용합니다.

    # get the VMSS model
    
    $vmss = Get-AzureRmVmss -ResourceGroupName resource_group_name -VMScaleSetName VM_scale_set_name
    
    # set the new version in the model data
    
    $vmss.virtualMachineProfile.storageProfile.osDisk.image.uri="$(bakedImageUrl)"
    
    # update the virtual machine scale set model
    
    Update-AzureRmVmss -ResourceGroupName resource_group_name -Name resource_group_name -VirtualMachineScaleSet $vmss
    

    원하는 경우 변수를 사용하여 리소스 그룹 및 가상 머신 확장 집합 이름과 같은 값을 스크립트에 전달할 수 있습니다.

  6. 단계의 배포 조건 대화 상자에서 트리거 섹션이 릴리스 생성 후로 설정되어 있는지 확인합니다.

  7. 릴리스 파이프라인의 이름을 입력하고 저장합니다.

  8. 새 릴리스를 만들고, 최신 빌드를 선택하고, 애플리케이션이 올바르게 배포되고 VHD를 생성했는지 확인합니다.

FAQ

TFS 온-프레미스를 사용하고 있지만 일부 기능이 표시되지 않습니다. 이유는 무엇입니까?

일부 기능은 Azure Pipelines에서만 사용할 수 있으며 온-프레미스에서는 아직 사용할 수 없습니다. 최신 버전의 TFS로 업그레이드한 경우 일부 기능을 온-프레미스에서 사용할 수 있습니다.

도움말 및 지원