Azure DevOps Services | Azure DevOps Server | Azure DevOps Server 2022 | Azure DevOps Server 2020
이전 버전의 Azure Pipelines에서는 애플리케이션을 여러 서버에 배포하려면 상당한 계획 및 유지 관리가 필요했습니다. Windows PowerShell 원격을 수동으로 사용하도록 설정해야 했고, 특정 포트를 열어야 했으며, 각 서버에 배포 에이전트를 설치해야 했습니다. 롤아웃 배포를 관리하려면 수동 작업도 필요합니다. 이러한 문제는 배포 그룹을 도입하면서 크게 간소화되었습니다.
배포 그룹은 그룹의 각 대상 서버에 배포 에이전트를 설치하고 릴리스 파이프라인이 해당 서버에 애플리케이션을 점진적으로 배포할 수 있도록 합니다. 배포 배포를 위해 여러 파이프라인을 만들 수 있으므로 애플리케이션 업데이트를 여러 사용자 그룹에 단계적으로 전달할 수 있습니다.
비고
배포 그룹은 클래식 파이프라인에서 사용됩니다. YAML 파이프라인을 사용하는 경우 환경을 참조하세요.
필수 조건
| 제품 | 요구 사항 |
|---|---|
| Azure DevOps | - 하나의 Azure DevOps 조직. - Azure DevOps 프로젝트. |
| Azure DevOps 데모 생성기 |
-
데모 생성기를 설정합니다. - 새 Azure DevOps 프로젝트를 만들고 DeploymentGroups 템플릿(목록의 15번)을 선택해야 합니다. |
| Azure | - Azure 구독권. |
Azure에서 리소스 설정
이 섹션에서는 ARM 템플릿을 사용하여 Azure 리소스를 설정하는 방법에 대해 설명합니다. IIS가 구성된 6개의 VM(Virtual Machine) 웹 서버, SQL Server VM(DB 서버), Azure Load Balancer 및 필요한 모든 네트워크 연결을 프로비전합니다.
필요한 정보를 입력한 다음 검토 + 만들기를 선택합니다. 이 자습서에서는 사용자 이름과 암호가 다시 사용되지 않으므로 허용되는 모든 조합의 사용자 이름과 암호를 사용할 수 있습니다. 전역 고유성을 보장하기 위해 Env 접두사 이름이 모든 리소스 이름에 추가됩니다. 개인 또는 임의 항목을 사용합니다. 유효성 검사 또는 생성 중에 명명 충돌이 발생하는 경우 이 값을 변경하고 다시 배포해 보세요. 프로비저닝에는 보통 10~15분이 걸립니다.
유효성 검사가 완료되면 만들기 를 선택하여 리소스를 배포합니다.
배포가 완료되면 Azure Portal의 리소스 그룹으로 이동하여 생성된 리소스를 검토합니다. 이름에 sqlSrv 가 있는 DB 서버 VM을 선택하여 세부 정보를 봅니다.
나중에 필요하므로 DNS 이름을 복사합니다.
배포 그룹 만들기
배포 그룹은 각각 배포 에이전트가 설치된 컴퓨터의 컬렉션입니다. 이러한 컴퓨터는 Azure Pipelines와 통신하여 애플리케이션 배포를 조정합니다.
데모 생성기를 사용하여 이전에 만든 Azure DevOps 프로젝트로 이동합니다.
파이프라인>배포 그룹을 선택합니다.
배포 그룹 추가를 선택합니다.
배포 그룹 이름으로릴리스를 입력한 다음 만들기를 선택합니다. 등록 스크립트가 생성됩니다. 이 스크립트를 사용하여 대상 서버를 등록하고 배포 에이전트를 수동으로 설치할 수 있습니다. 그러나 이 자습서에서는 대상 서버가 릴리스 파이프라인의 일부로 자동으로 등록됩니다.
개인용 액세스 토큰 만들기
Azure DevOps 프로젝트에서 사용자 설정 아이콘을 선택한 다음 개인용 액세스 토큰을 선택합니다.
새 토큰을 선택하고 PAT의 이름을 입력한 다음 만료 날짜를 선택합니다.
범위에 대해 정의된 사용자 지정을 선택하고 모든 범위 표시를 선택한 다음, 다음 범위를 확인합니다.
- 프로젝트 및 팀 ->읽기 및 쓰기.
- 에이전트 풀 ->읽기 및 관리
- 배포 그룹 ->읽기 및 관리.
완료되면 만들기 를 선택하고 다음 섹션에서 필요에 따라 PAT를 복사합니다.
릴리스 파이프라인 구성
클래식 릴리스 파이프라인 템플릿에는 에이전트 풀의 에이전트에서 작업을 실행하는 하나의 에이전트 작업인 에이전트 단계가 포함되어 있습니다. 또한 배포 그룹 단계와 IIS배포 단계의 두 가지 배포 그룹 작업도 포함됩니다. 배포 그룹 작업은 배포 그룹에 정의된 컴퓨터에서 작업을 실행합니다. 아래 단계에 따라 각 작업을 구성합니다.
에이전트 작업 구성
Azure DevOps 프로젝트로 이동하고 파이프라인> 선택합니다.
배포 그룹 릴리스 정의를 선택한 다음 편집을 선택합니다.
파이프라인에서 배포 작업을 보려면 작업 탭을 선택합니다.
에이전트 단계 단계를 선택한 다음 Azure Pipelines 풀 및 windows-latest 사양을 선택합니다.
Azure 리소스 그룹 배포 작업을 선택하고, 이전에 리소스를 만드는 데 사용한 Azure 구독을 선택한 다음, 권한 부여를 선택하여 연결 권한을 부여합니다. 권한이 부여되면 이 자습서에 대해 만든 리소스 그룹을 선택합니다.
이 작업은 Azure의 가상 머신에서 실행되며 파이프라인에 다시 연결하여 배포 그룹 요구 사항을 완료할 수 있어야 합니다. 연결을 보호하려면 이전에 만든 PAT(개인 액세스 토큰)를 사용하여 서비스 연결을 설정해야 합니다. 동일한 작업 내에서 아래로 스크롤하고 Azure Pipelines 서비스 연결에서 새로 만들기를 선택합니다.
새 서비스 연결 패널에서 Azure DevOps 조직의
https://dev.azure.com/organizationName을 입력합니다. 이전에 만든 개인용 액세스 토큰 을 붙여넣고, 서비스 연결 이름을 지정하고, 모든 파이프라인에 대한 액세스 권한 부여 확인란을 선택합니다. 확인을 선택하고 완료되면 저장 합니다.
Azure 리소스 그룹 배포 작업에서 아래로 스크롤한 다음 팀 프로젝트 및 이전에 만든 배포 그룹의 드롭다운 메뉴에서 선택합니다.
배포 그룹 작업 구성
배포 그룹 릴리스 정의에서 배포 그룹 단계 작업을 선택합니다. 이 작업은 배포 그룹에 정의된 컴퓨터에서 작업을 실행합니다. 이 작업은 SQL-Svr-DB 태그를 사용하여 배포 그룹의 대상 하위 집합에 배포합니다. 배포 그룹 드롭다운 아래에서 이전에 만든 릴리스 배포 그룹을 선택합니다.
IIS 배포 단계 작업을 선택합니다. 이 작업은 WebSrv 태그를 사용하여 웹 애플리케이션을 웹 서버의 하위 집합에 배포합니다. 드롭다운에서 이전에 만든 배포 그룹을 선택합니다.
Azure 네트워크 부하 분산 장치 연결 끊기 및 Azure 네트워크 부하 분산 장치 연결 작업은 더 이상 사용되지 않습니다. 작업을 마우스 오른쪽 단추로 클릭하고 선택한 작업 사용 안 함을 선택하여 지금은 비활성화할 수 있습니다.
IIS 웹앱 관리 및 IIS 웹앱 배포 작업은 미리 채워져 있으며 변경이 필요하지 않습니다.
왼쪽 위 모서리에서 변수 탭을 선택하고 파이프라인 변수를 선택하고 다음 값을 제공합니다. DefaultConnectionString 변수의 자리 표시자를 이전에 복사한 SQL Server DNS 이름으로 바꿉니다.
변수 이름 변수 값 데이터베이스 이름 PartsUnlimited-Dev DBPassword xxxxxxxx DBUserName xxxxxxxx DefaultConnectionString(기본 연결 문자열) 데이터 원본=[YOUR_DNS_NAME]; 초기 카탈로그=PartsUnlimited-Dev; 사용자 ID=xxxxxxxx; 비밀번호=xxxxxxxx; 여러 활성 결과 세트=False; 연결 시간 제한=30; 서버 이름 localhost (로컬 호스트) 저장을 선택하고 원하는 경우 메모를 추가한 다음 확인을 선택합니다.
팁 (조언)
DefaultConnectionString 변수를 비밀로 저장해야 한다는 오류가 표시되면 해당 값 옆에 있는 자물쇠 아이콘을 선택하여 보호합니다.
릴리스 만들기 및 애플리케이션 배포
이제 릴리스 정의가 구성되고 저장되었으므로 Azure에 웹앱을 배포하는 릴리스를 계속 만들 수 있습니다. 그러나 릴리스를 시작하기 전에 빌드 파이프라인이 한 번 이상 실행되었는지 확인해야 합니다. 이렇게 하면 배포에 필요한 파이프라인 아티팩트가 생성됩니다. 빌드 파이프라인 전에 릴리스 파이프라인을 실행하려고 하면 릴리스 패널의 아티팩트 섹션이 비어 있습니다. 아래 단계에 따라 파이프라인을 실행하고 파이프라인 아티팩트를 생성한 다음 새 릴리스를 만듭니다.
Azure DevOps 프로젝트에서 파이프라인을 선택한 다음, 배포 그룹 빌드 파이프라인을 선택합니다.
파이프라인 실행을 선택합니다. 파이프라인 실행 패널에서 에이전트 사양을 선택한 다음 실행을 선택합니다.
파이프라인이 성공적으로 완료되면 파이프라인 아티팩트를 생성합니다. 파이프라인 요약 창에서 볼 수 있습니다.
이제 파이프라인>릴리스로 이동하여 릴리스 정의를 선택한 다음 릴리스 만들기 를 선택하여 배포 파이프라인을 시작합니다.
완료되면 만들기 를 선택한 다음 파이프라인 실행을 선택하여 개요를 엽니다. 당신은 파이프라인이 진행 중임을 확인할 수 있어야 합니다. 단계를 클릭하여 자세한 배포 로그를 봅니다.
요약 창에서 배포의 각 단계 상태를 볼 수 있습니다.
문제 해결
- 마스터 또는 대상 서버에 연결할 수 없거나서버와의 연결이 성공적으로 설정되었지만 로그인 프로세스 중에 오류가 발생했습니다.
컴퓨터 그룹에서 Sql Dacpac 배포 작업을 실행하는 동안 이러한 오류 중 하나가 발생하는 경우 다음 단계를 수행합니다.
- 데이터베이스를 확인합니다.
리소스를 배포하는 동안 데이터베이스가 성공적으로 만들어졌는지 확인합니다. Azure CLI 또는 sqlcmd를 사용하여 이를 확인할 수 있습니다.
sqlcmd -S <server-name> -U <username> -P <password> -Q "SELECT name FROM sys.databases"
데이터베이스가 목록에 없는 경우 다음 명령을 사용하여 새 데이터베이스를 만들 수 있습니다.
sqlcmd -S <server-name> -U <username> -P <password> -Q "CREATE DATABASE [YourDatabaseName]"
- SQL Server 인증을 확인합니다.
SQL Server 인증이 사용하도록 설정되어 있는지 확인합니다. SQL 및 Windows 인증(혼합 모드)을 모두 허용하도록 SQL Server를 구성해야 합니다. 이렇게 설정하려면 다음을 수행합니다.
a. SSMS 또는 sqlcmd를 사용하여 연결
b. 다음 쿼리를 실행합니다.
EXEC xp_instance_regwrite
N'HKEY_LOCAL_MACHINE',
N'Software\\Microsoft\\MSSQLServer\\MSSQLServer',
N'LoginMode',
REG_DWORD,
2;
다. 변경 내용이 적용되려면 SQL Server 서비스를 다시 시작합니다.
net stop MSSQLSERVER
net start MSSQLSERVER
- 에이전트가 내 VM에서 실행되고 있더라도 일부 에이전트는 오프라인 상태입니다.
하나 이상의 에이전트가 오프라인으로 표시되는 경우 몇 가지를 시도해 볼 수 있습니다. 먼저 에이전트가 실행 중인 VM에 로그인하고 다음 명령을 실행하여 VM이 동일한 IP 집합으로 확인되는지 확인합니다.
nslookup dev.azure.com
모든 VM이 동일한 IP 집합으로 확인되는 경우 부하 분산 장치가 올바른 아웃바운드 규칙으로 구성되어 있는지 확인합니다. Azure의 부하 분산 장치에 백 엔드 풀을 추가하고, VM의 NIC를 백 엔드 풀에 추가한 다음, 부하 분산 장치의 아웃바운드 규칙과 연결할 수 있습니다. 이렇게 하려면 다음을 수행합니다.
Azure로 이동하여 부하 분산 장치를 찾습니다.
백 엔드 풀을 선택하고, 기존 풀을 선택하거나, 새 풀을 만들고, IP 구성에 웹 서버를 추가합니다.
부하 분산 규칙으로 이동하여 부하 분산 규칙을 선택하고 백 엔드 풀 드롭다운에서 백 엔드 풀을 선택합니다.
자원을 정리하세요
이 자습서에서는 Azure DevOps 프로젝트를 만들고 Azure에 리소스를 배포했습니다. 더 이상 필요하지 않은 경우 다음 단계에 따라 정리합니다.
Azure DevOps 프로젝트 삭제: 프로젝트 설정>개요>삭제로 이동합니다.
Azure 리소스 그룹을 삭제합니다. 이 자습서에서 만든 모든 Azure 리소스는 동일한 리소스 그룹에 배치되었습니다. 리소스 그룹을 삭제하면 연결된 모든 리소스가 제거됩니다. Azure Portal 또는 CLI를 통해 이 작업을 수행할 수 있습니다.
Azure CLI
az group delete --name <RESOURCE_GROUP_NAME> --yes --no-waitAzure Portal
Azure Portal >리소스 그룹으로 이동합니다.
자습서에서 사용한 리소스 그룹을 선택합니다.
리소스 그룹 삭제를 선택하고 이름을 확인한 다음 삭제를 선택합니다.