Azure DevOps 프로젝트 – GitHub 연동, Azure Agent 설치 방법
이 포스트는 GitHub 리포지토리를 활용하여 NGINX의 설정 파일의 관리/업데이트를 자동화할 수 있도록 Azure DevOps 프로젝트 를 구성하는 방법에 관해 설명합니다.
Azure DevOps 프로젝트에 GitHub 리포지토리를 연동하고, Azure pipeline을 실행할 VM 서버에 Azure agent를 설치하는 방법을 다루며, Azure pipeline을 통해 NGINX의 설정 파일의 관리/업데이트를 자동화하는 과정은 다음 포스트에서 다룹니다.
목차
1. Azure DevOps 프로젝트 란?
2. Azure DevOps 프로젝트 생성
3. VM에 Azure agent 설치
4. Azure DevOps 프로젝트와 GitHub 리포지토리 연동
4-1. GitHub 리포지토리 연동
4-2. Azure DevOps 프로젝트 테스트 Azure Pipeline 실행
5. 결론
1. Azure DevOps 프로젝트 란?
Azure DevOps 프로젝트는 소프트웨어 개발 프로젝트를 관리하고 자동화하는 데 필요한 다양한 도구와 서비스를 제공합니다. 이를 통해 개발팀은 프로젝트의 계획, 개발, 배포, 모니터링을 효율적으로 수행할 수 있습니다. Azure DevOps는 CI/CD(지속적 통합/지속적 배포) 파이프라인, 작업 항목 관리, 버전 관리, 테스트 및 배포 등을 지원하여 팀의 협업과 생산성을 높입니다.
Azure DevOps 프로젝트에는 다음과 같은 구성 요소가 있습니다.
- Azure Boards: 프로젝트의 작업 항목을 관리하고 팀의 진행 상황을 시각화할 수 있습니다.
- Azure Repos: Git 또는 TFVC를 사용하여 소스 코드를 관리할 수 있는 버전 관리 시스템을 제공합니다.
- Azure Pipelines: CI/CD 파이프라인을 구축하여 코드를 자동으로 빌드, 테스트 및 배포할 수 있습니다.
- Azure Test Plans: 테스트 계획 및 테스트 케이스를 관리합니다.
- Azure Artifacts: 패키지 관리 기능을 제공하여 팀이 라이브러리 및 패키지를 공유할 수 있습니다.
2. Azure DevOps 프로젝트 생성
1. Azure DevOps 프로젝트 생성을 위해 Azure DevOps 서비스에 로그인하여 organization을 생성합니다.


이 포스트에선 devopssong 이름으로 생성했습니다.
2. 생성한 organization에서 새로운 Azure DevOps 프로젝트를 생성합니다.


이 포스트에선 다음과 같이 NGINX 이름으로 프로젝트를 생성했습니다.

3. VM에 Azure agent 설치
Azure agent는 Azure Pipeline에 정의된 빌드/배포를 수행하는 컴퓨팅 인프라입니다. Azure agent에는 Microsoft에서 호스트 및 관리하는 Microsoft 호스팅 에이전트, VM에서 호스트되는 자체 호스팅 에이전트등 여러 가지 유형의 에이전트가 있습니다. 자세한 내용은 Azure Pipelines 에이전트를 참고하세요.
이 포스트에서는 Azure Pipeline을 통해서 NGINX의 설정 파일의 관리/업데이트를 자동화하기 위해, VM에 Azure agent를 설치하는 방식을 사용합니다.
자체 호스팅 에이전트는 443번 포트를 통해서 Azure Pipelines와 통신하므로 방화벽 설정을 확인하세요.
1. Azure DevOps 프로젝트 하단의 Project setting 메뉴로 들어갑니다.

2. 좌측 메뉴의 Agent pools 메뉴로 들어갑니다.

3. Add pool 버튼을 통해 새로운 Agent pool을 생성합니다.
기본적으로 생성된 Default pool을 사용해도 무방합니다.


3. 생성한 pool(Azure Agent)을 클릭하고, New agent 버튼을 클릭하여 Azure agent 설치 과정을 확인합니다.


4. 안내된 과정에 맞게 Azure agent를 설치합니다.
이 포스트에서는 ubuntu 22.04.4 버전의 VM에서 설치를 진행했습니다.
4-1. agent.tar.gz 파일을 다운로드합니다.
$ wget https://vstsagentpackage.azureedge.net/agent/3.245.0/vsts-agent-linux-x64-3.245.0.tar.gz

포스트와 Azure agent의 버전 차이가 있을 수 있으니 Download 버튼 우측의 버튼을 클릭하여 다운로드 링크를 복사하여 다운로드 합니다.
4-2. myagent 디렉토리를 생성하고, 다운받은 파일을 생성한 디렉토리로 이동합니다.
$ mkdir myagent
$ mv vsts-agent-linux-x64-3.245.0.tar.gz myagent/
$ cd myagent/
4-3. 다운받은 파일의 압축을 해제합니다.
$ tar zxvf vsts-agent-linux-x64-3.245.0.tar.gz
./
./externals/
...
./config.sh
./env.sh
./run-docker.sh
./reauth.sh
./license.html
./run.sh
4-4. Azure DevOps 페이지 우측 상단 메뉴에서 personal access token을 생성하고 준비합니다.

4-5. Azure agent의 설정 스크립트를 실행합니다.
$ ./config.sh
Enter server URL > https://dev.azure.com/<organization 이름> # 예제의 경우 devopssong
Enter authentication type (press enter for PAT) > # 엔터 입력으로 PAT 사용
Enter personal access token > **************************************************** # 토큰 입력
Connecting to server ...
>> Register Agent:
Enter agent pool (press enter for default) > Azure Agent # pool 이름 입력
Enter agent name (press enter for nginxoss) > azure-agent # agent 이름 지정
Scanning for tool capabilities.
Connecting to the server.
Successfully added the agent
Testing agent connection.
Enter work folder (press enter for _work) >
2024-10-07 08:24:28Z: Settings Saved.
4-6. Agent pool에서 VM의 등록을 확인합니다.

4-7. Azure agent를 서비스로 설치하고, 실행합니다.
$ sudo ./svc.sh install
Creating launch agent in /etc/systemd/system/vsts.agent.devopssong.Azure\x20Agent.azure\x2dagent.service
Run as user: agent
Run as uid: 1000
gid: 1000
Created symlink /etc/systemd/system/multi-user.target.wants/vsts.agent.devopssong.Azure\x20Agent.azure\x2dagent.service → /etc/systemd/system/vsts.agent.devopssong.Azure\x20Agent.azure\x2dagent.service.
$ sudo ./svc.sh start

Azure agent 실행 시 기존에 등록된 VM의 상태가 Offline에서 Online으로 변경됨을 확인할 수 있습니다.

4. Azure DevOps 프로젝트와 GitHub 리포지토리 연동
GitHub 리포지토리로 NGINX의 설정 파일을 관리하고, Azure Pipeline을 통해 NGINX 구성/배포 자동화를 위해 프로젝트와 리포지토리를 연동하겠습니다.
4-1. GitHub 리포지토리 연동
1. Azure DevOps 프로젝트 하단의 Project setting 메뉴로 들어갑니다.

2. 메뉴 내부의 GitHub connections를 선택합니다.

3. GitHub 계정의 연동할 리포지토리를 선택합니다.

최초 진행 시 Azure Boards 설치/인증 단계가 진행됩니다. (참고를 위한 이미지로 이전 과정의 계정/리포지토리 이름과 다릅니다)

4. 연동된 GitHub 리포지토리를 확인할 수 있습니다.

4-2. Azure DevOps 프로젝트 테스트 Azure Pipeline 실행
연동 확인을 위해 테스트 Pipeline을 실행해 보겠습니다.
테스트를 위해 service로 실행된 Azure agent를 중지시키고, run.sh 스트립트로 실행합니다.
$ sudo ./svc.sh stop
/etc/systemd/system/vsts.agent.devopssong.Azure\x20Agent.azure\x2dagent.service
○ vsts.agent.devopssong.Azure\x20Agent.azure\x2dagent.service - Azure Pipelines Agent (devopssong.Azure Agent.azure-agent)
Loaded: loaded (/etc/systemd/system/vsts.agent.devopssong.Azure\x20Agent.azure\x2dagent.service; enabled; vendor preset: enabled)
...
$ ./run.sh
Scanning for tool capabilities.
Connecting to the server.
2024-10-18 05:15:42Z: Listening for Jobs
1. 프로젝트 내부 좌측 메뉴의 Pipeline을 선택하여, Create Pipeline 버튼을 통해 신규 Pipeline을 생성합니다.

2. GitHub를 선택합니다.

최초 진행 시 GitHub의 Azure Pipeline 앱 설치 과정이 나타납니다. (참고를 위한 이미지로 이전 과정의 계정/리포지토리 이름과 다릅니다)

3. 앞서 연동한 리포지토리를 지정합니다.

4. 테스트를 위해 Starter pipeline을 선택합니다.

5. 테스트 pipeline의 pool 이름을 앞서 생성한 pool 이름으로 지정하고, 우상단의 Save and run 버튼을 통해 실행합니다.
# Starter pipeline
# Start with a minimal pipeline that you can customize to build and deploy your code.
# Add steps that build, run tests, deploy, and more:
# https://aka.ms/yaml
# push가 발생하면 pipeline을 트리거 할 브랜치를 지정합니다
trigger:
- main
# pipeline을 실행할 Agent pool을 지정합니다
pool: Azure Agent
# pipeline으로 실행 될 작업을 정의합니다
steps:
- script: echo Hello, world! # Hello, world! 메시지 출력
displayName: 'Run a one-line script' # Azure DevOps UI에서 보여질 작업 이름
- script: |
echo Add other tasks to build, test, and deploy your project.
echo See https://aka.ms/yaml
displayName: 'Run a multi-line script'


6. Pipeline 실행을 위해 Agent pool의 권한을 설정합니다.


7. Pipeline 실행이 완료되면 연동된 리포지토리의 지정한 branch에 pipeline 파일이 commit 메시지와 함께 yml 파일로 저장된 것을 확인할 수 있습니다.


Agent VM의 화면에는 다음과 같은 출력이 나타납니다.

8. Pipeline 결과 내역을 확인하면 세부 내용을 확인할 수 있습니다.


Pipeline 내부의 echo 명령어를 통해 출력된 문자열을 확인할 수 있습니다.
5. 결론
이번 포스트에서는 Azure DevOps 프로젝트를 생성하고, GitHub 리포지토리를 연동하는 방법과 VM에 Azure agent를 설치하여 구성하는 과정을 다뤘습니다. GitHub 리포지토리와의 연동을 통해, 리포지토리에 push가 발생하면 구성된 Azure 파이프라인을 통해 Azure agent가 자동으로 업데이트된 파일을 NGINX 서버에 반영할 수 있습니다.
Azure agent VM을 통해 설정 파일을 NGINX VM에 반영하기 위한 ssh 설정 방법과, 관리/업데이트의 자동화를 위한 pipeline 코드의 예시는 다음 포스트를 참고하세요.
Azure Pipeline을 통해 관리할 수 있는 NGINX OSS보다 더욱 향상된 NGINX Plus를 체험해 보고 싶으시다면 NGINX STORE를 통해 문의해 무료로 NGINX Plus trial을 체험해 보세요.
댓글을 달려면 로그인해야 합니다.