M365Con 2027 – 무료 온라인 컨퍼런스 · 11–22 Jan 2027 · 120 sessions→ m365con.net

블로그 · Mirko Peters

DevOps 간소화: CI/CD 파이프라인에 Azure CLI 통합하기

By ·

빠르게 변화하는 현대 소프트웨어 제공 환경에서는 효율성과 속도가 무엇보다 중요합니다. 개발 팀이 지속적 통합 및 지속적 배포(CI/CD)를 도입하면서 가볍고 안정적이며 플랫폼에 구애받지 않는 자동화 도구의 필요성이 그 어느 때보다 커졌습니다…

Automatically translated with AI from the original post. Read the English original

▶ BLOGStreamlining DevOps:Integrating Azure CLI…M365.FM
Titelbild: Streamlining DevOps: Integrating Azure CLI into CI/CD Pipelines

빠르게 변화하는 현대 소프트웨어 제공 환경에서는 효율성과 속도가 무엇보다 중요합니다. 개발 팀이 지속적 통합 및 지속적 배포(CI/CD) 방식을 도입하면서, 가볍고 안정적이며 플랫폼에 구애받지 않는 자동화 도구의 필요성이 그 어느 때보다 커지고 있습니다. 임시 스테이징 환경을 구성하든, IaC(Infrastructure as Code)로 인프라를 배포하든, 마이크로서비스를 설정하든, 파이프라인 도구는 빠르고 일관되게 실행되어야 합니다.

그 해답이 Azure CLI입니다. 단순성, 속도, 크로스 플랫폼 실행을 염두에 두고 설계된 Azure CLI는 DevOps 워크플로를 간소화하려는 클라우드 엔지니어들이 즐겨 찾는 도구가 되었습니다. 이 글에서는 최신 배포 파이프라인에서 Azure CLI가 돋보이는 이유, 다른 관리 도구와의 비교, 그리고 CI/CD 프로세스에 자연스럽게 통합하는 방법을 살펴보겠습니다.

이 심층 분석이 도움이 되셨다면 관련 팟캐스트 에피소드 Azure CLI vs PowerShell: Which Should You Use?도 들어 보시기 바랍니다. 이 에피소드에서는 Microsoft의 대표적인 클라우드 관리 인터페이스 간의 명확한 차이점을 자세히 다룹니다.

CI/CD에서의 Azure CLI 소개

지속적 통합 및 지속적 배포 파이프라인에는 무거운 오버헤드 없이 최소한의 컨테이너 환경에서 실행할 수 있는 도구가 필요합니다. 전통적으로 자동화 스크립트는 특정 운영 체제에 밀접하게 묶여 있었기 때문에, 로컬 개발자 머신, 빌드 에이전트, 프로덕션 클러스터 사이를 옮길 때마다 어려움이 생겼습니다. 현대 DevOps는 Windows, macOS, Linux에서 완벽한 동일성을 제공하는 도구로 전환해야 합니다.

Azure CLI는 이러한 요구에 정면으로 대응합니다. 기본적으로 JSON을 출력하는 깔끔하고 스크립트 친화적인 명령 구조를 제공하여, 개발자와 자동화 에이전트가 최소한의 노력으로 클라우드 리소스를 조회, 생성, 수정할 수 있습니다. GitHub Actions, GitLab CI, Azure DevOps 같은 CI/CD 파이프라인에 Azure CLI를 포함하면, 추상적인 배포 단계가 반복 가능하고 결정적인 코드로 바뀝니다.

최신 파이프라인에 Azure CLI를 써야 하는 이유

최신 CI/CD 아키텍처를 설계할 때는 모든 초가 중요합니다. 빌드 에이전트는 컴퓨팅 리소스를 소비하고, 배포 대기열이 길어지면 개발 속도가 떨어집니다. Azure CLI는 이처럼 빠른 속도가 요구되는 환경에 맞춰 특별히 최적화되어 있습니다. 기반 아키텍처가 경량 REST 호출에 의존하기 때문에 실행 속도가 매우 빠르고 리소스 효율도 높습니다.

또한 컨테이너화된 빌드 에이전트는 종종 최소 구성의 Linux 이미지에서 실행됩니다. 무거운 종속성을 설치하면 파이프라인 시작 시간이 길어질 수 있습니다. Azure CLI는 발자국이 작고 설치가 간단해서 Docker 기반 CI/CD 러너에 이상적인 도구입니다. 개발자는 원격 빌드 서버가 실행하는 것과 동일한 셸 환경에서 로컬로 배포 스크립트를 테스트할 수 있어, "제 컴퓨터에서는 되는데요" 같은 문제를 크게 줄일 수 있습니다.

Azure CLI와 PowerShell 간단 비교

클라우드 관리에서 흔히 논의되는 주제가 Azure CLI와 PowerShell 중 무엇을 선택할지입니다. 두 도구 모두 매우 강력하지만, 서로 다른 사용자 유형과 운영 방식을 대상으로 합니다. Azure CLI가 CI/CD 파이프라인에서 우위를 점하는 이유를 이해하려면 두 도구를 나란히 비교해 보는 것이 도움이 됩니다.

시나리오최적의 도구돋보이는 이유
빠른 리소스 배포Azure CLI빠르고 가볍고 명령이 간단하며 모든 플랫폼에서 동작하고, DevOps와 스크립팅에 적합합니다.
엔터프라이즈 자동화PowerShell복잡한 자동화, 객체 기반 출력, 대량 작업을 처리하며 Windows와의 통합이 강력합니다.
CI/CD 파이프라인 통합Azure CLI高수준 명령, 인프라 as 코드에 대한 기본 지원, 간편한 파이프라인 구성을 제공합니다.
고급 스크립팅PowerShell유연한 스크립팅과 도구 제작이 가능하며 Azure 리소스를 세밀하게 제어할 수 있습니다.
크로스 플랫폼 관리Azure CLILinux, macOS, Windows에서 실행되며 Python으로 구현되어 다양한 환경에 이상적입니다.

PowerShell은 무겁고 객체 지향적인 관리 작업과 깊은 Windows 통합에서 뛰어난 성능을 보입니다. 반면 Azure CLI는 단순한 텍스트 출력, 대량의 가벼운 작업에서 더 빠른 실행 시간, 기본 Bash 호환성 덕분에 컨테이너 기반 파이프라인에서 더 유리합니다.

Azure CLI 설치 및 구성

클라우드 인프라를 자동화하기 전에, 배포 환경에 Azure CLI가 올바르게 설치되고 인증되어 있는지 확인해야 합니다. 다행히 운영 체제와 관계없이 설치 과정은 간단합니다.

로컬 컴퓨터나 Windows를 실행하는 가상 머신 빌드 에이전트를 설정하는 경우, PowerShell을 사용하여 CLI를 설치할 수 있습니다:

Invoke-WebRequest -Uri https://aka.ms/installazurecliwindows -OutFile .\AzureCLI.msi; Start-Process msiexec.exe -Wait -ArgumentList '/I AzureCLI.msi /quiet'; rm .\AzureCLI.msi

Linux 기반 CI/CD 러너(예: 표준 Ubuntu GitHub Actions 러너)의 경우, Microsoft 패키지 리포지토리를 사용하여 한 단계로 설치하거나, Azure CLI가 기본으로 포함된 사전 설치 러너 환경을 활용할 수 있습니다. 설치가 끝나면 다음 명령을 실행하여 설치를 확인하면 됩니다:

az --version

파이프라인 인증에서는 대화형 브라우저 로그인을 피하십시오. 대신 서비스 주체(Service Principal) 또는 관리 ID(Managed Identity)를 사용해 안전하게 인증하도록 파이프라인을 구성하십시오:

az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET --tenant $AZURE_TENANT_ID

Azure CLI 핵심 구문과 명령

Azure CLI의 장점은 직관적이고 예측 가능한 구문에 있습니다. 모든 명령은 az 네임스페이스로 시작하고, 이어서 리소스 그룹이나 서비스를 지정한 뒤, 마지막에 수행할 작업을 입력합니다. 이처럼 단순한 명령 구조 덕분에 파이프라인 스크립트를 작성하고 읽기가 매우 쉽습니다.

클라우드 자동화에서 자주 사용하는 기본 명령은 다음과 같습니다:

# Create a resource group
az group create --name MyPipelineResourceGroup --location eastus

# List all virtual machines in a table format
az vm list --output table

# Deploy an ARM or Bicep template
az deployment group create --resource-group MyPipelineResourceGroup --template-file azuredeploy.json

Azure CLI 명령은 기본적으로 깔끔한 JSON 페이로드를 반환합니다. 따라서 내장 JMESPath 식(--query)으로 특정 속성을 쉽게 조회하고, 그 값을 CI/CD 워크플로의 후속 단계에 전달할 수 있습니다.

Azure CLI로 배포 자동화하기

자동화는 DevOps의 핵심입니다. Azure에 애플리케이션을 배포할 때 Azure Portal에서 수동으로 클릭하는 방식에 의존하는 경우는 드뭅니다. 배포 로직을 Azure CLI 스크립트로 감싸면 개발, 스테이징, 운영 환경 전반에서 일관성을 완벽하게 보장할 수 있습니다.

새 Azure App Service를 프로비저닝하고, 구성 설정을 업데이트하고, main 브랜치에 병합될 때마다 코드를 배포해야 한다고 가정해 봅시다. Azure CLI를 사용한 자동화 스크립트로 이 작업을 손쉽게 처리할 수 있습니다:

# Create an App Service plan
az appservice plan create --name MyPlan --resource-group MyResourceGroup --sku B1 --is-linux

# Create the web app
az webapp create --name MyAppService --resource-group MyResourceGroup --plan MyPlan --runtime "NODE:18-lts"

# Configure environment variables
az webapp config appsettings set --name MyAppService --resource-group MyResourceGroup --settings DATABASE_URL="Server=tcp:myServer.database.windows.net..."

이 명령들은 멱등성(idempotent)을 갖추고 있으므로 여러 번 실행해도 인프라가 손상되지 않습니다. 오히려 대상 환경이 원하는 구성 상태와 일치하도록 보장합니다.

Azure CLI를 CI/CD 파이프라인에 통합하기

Azure CLI 명령을 GitHub Actions나 Azure DevOps Pipelines 같은 주요 CI/CD 오케스트레이터에 통합하는 작업은 매우 간단합니다. 파이프라인 에이전트는 일반적으로 셸 스크립트를 실행하므로, 표준 `az` 명령을 워크플로 구성 파일에 바로 넣으면 됩니다.

다음은 Azure에 로그인하고 웹 애플리케이션을 배포하는 GitHub Actions 워크플로 파일의 예시입니다:

name: Deploy to Azure
on:
  push:
    branches: [ main ]
jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
    - name: Checkout code
      uses: actions/checkout@v3

    - name: Azure Login
      uses: azure/login@v1
      with:
        creds: ${{ secrets.AZURE_CREDENTIALS }}

    - name: Deploy Azure Resources
      run: |
        az group create --name ProdRG --location eastus
        az deployment group create --resource-group ProdRG --template-file infra/main.bicep

공식 러너 액션과 원시 Azure CLI 명령을 함께 활용하면, 코드 변경이 있을 때마다 원활하게 실행되는 견고하고 감사 가능하며 자동화된 배포 파이프라인을 구축할 수 있습니다.

Azure CLI로 DevOps를 효율화하기 위한 모범 사례

Azure CLI 자동화의 효과를 최대한 얻고 CI/CD 파이프라인을 안전하고 효율적으로 유지하려면 다음의 검증된 모범 사례를 따르십시오:

  • 시크릿을 코드에 직접 입력하지 마십시오: 서비스 주체 자격 증명, 연결 문자열, API 키는 항상 CI/CD 플랫폼의 보안 시크릿 관리 기능(예: GitHub Secrets 또는 Azure DevOps 변수 그룹)에 저장하십시오.
  • CLI 버전을 고정하십시오: 클라우드 환경은 빠르게 변합니다. 파이프라인에서 예기치 않은 호환성 중단을 막으려면 빌드 에이전트가 사용할 Azure CLI 버전을 명시적으로 정의하십시오.
  • JSON 쿼리를 활용하십시오: 복잡한 외부 정규식이나 파싱 스크립트를 작성하는 대신, 내장 --query 매개변수를 사용하여 명령 출력에서 특정 ID나 엔드포인트를 추출하십시오.
  • 스크립트를 멱등성 있게 유지하십시오: 의도하지 않은 부작용이나 리소스 중복 오류를 일으키지 않고 반복 실행할 수 있도록 CLI 명령을 설계하십시오.
  • 테스트 환경을 정리하십시오: PR 파이프라인에서 자동 정리(teardown) 스크립트를 사용해 임시 리소스 그룹을 삭제하고, 불필요한 클라우드 비용이 쌓이는 것을 방지하십시오.

결론

Azure CLI를 CI/CD 파이프라인에 통합하는 것은 현대 DevOps 팀에게 판도를 바꾸는 변화입니다. 가볍고, 여러 플랫폼에서 동작하며, 직관적인 구문을 갖춘 덕분에 빠르고 자동화된 클라우드 배포에 이상적인 도구입니다. 안전한 인증 방식, 잘 구조화된 스크립트, 견고한 파이프라인 통합을 결합하면, 소프트웨어 제공 수명 주기 전반에서 전례 없는 속도와 안정성을 달성할 수 있습니다.

이 주제를 더 깊이 살펴보고 명령줄 철학을 둘러싼 생생한 토론을 듣고 싶다면, 함께 제공되는 팟캐스트 에피소드를 확인해 보십시오: Azure CLI vs PowerShell: Which Should You Use?. 두 도구를 모두 익혀 각각의 고유한 강점을 이해하고, 오늘부터 Azure 클라우드 아키텍처를 완벽하게 제어하십시오!

Entities in this article

Azure CLI DevOps PowerShell Continuous integration GitHub Actions JSON Azure DevOps Microservices Automation CI/CD pipeline

Related articles

RSS