다음을 통해 공유


GitHub Actions를 사용하여 ARM 템플릿 배포

GitHub Actions는 코드를 저장하고 끌어오기 요청 및 이슈에 대해 공동 작업하는 곳과 동일한 위치에서 소프트웨어 개발 워크플로를 자동화하는 GitHub의 기능 모음입니다.

Azure Resource Manager 템플릿 배포 작업을 사용하여 Azure에 대한 ARM 템플릿(Azure Resource Manager 템플릿) 배포를 자동화할 수 있습니다.

필수 조건

워크플로 파일 개요

워크플로는 리포지토리의 /.github/workflows/ 경로에 있는 YAML(.yml) 파일에서 정의됩니다. 이 정의는 워크플로를 구성하는 다양한 단계와 매개 변수를 포함합니다.

이 파일에는 다음 두 가지 섹션이 있습니다.

섹션 작업
인증 1. 배포 자격 증명을 생성합니다.
Deploy 1. Resource Manager 템플릿을 배포합니다.

배포 자격 증명 생성

OIDC에서 Azure 로그인 작업을 사용하려면 Microsoft Entra 애플리케이션 또는 사용자 할당 관리 ID에서 페더레이션 ID 자격 증명을 구성해야 합니다.

옵션 1: Microsoft Entra 애플리케이션

옵션 2: 사용자 할당 관리 ID

GitHub 비밀 구성

로그인 작업에 애플리케이션의 클라이언트 ID, 디렉터리(테넌트) ID구독 ID 를 제공해야 합니다. 이러한 값은 워크플로에서 직접 제공하거나 GitHub 비밀에 저장하고 워크플로에서 참조할 수 있습니다. 값을 GitHub 비밀로 저장하는 것이 더 안전한 옵션입니다.

  1. GitHub에서 리포지토리로 이동합니다.

  2. 보안 > 비밀 및 변수 > 작업을 선택합니다.

    비밀 추가 스크린샷

  3. 새 리포지토리 비밀을 선택합니다.

    참고 항목

    공용 리포지토리에서 워크플로 보안을 강화하려면 리포지토리 비밀 대신 환경 비밀을 사용합니다. 환경에 승인이 필요한 경우 필수 검토자 중 한 명이 승인할 때까지 작업에서 환경 비밀에 액세스할 수 없습니다.

  4. AZURE_CLIENT_ID, AZURE_TENANT_IDAZURE_SUBSCRIPTION_ID에 대한 비밀을 만듭니다. GitHub 비밀에 대한 Microsoft Entra 애플리케이션 또는 사용자 할당 관리 ID에서 다음 값을 복사합니다.

    GitHub 비밀 Microsoft Entra 애플리케이션 또는 사용자 할당 관리 ID
    AZURE_CLIENT_ID 클라이언트 ID
    AZURE_SUBSCRIPTION_ID 구독 ID
    AZURE_TENANT_ID 디렉터리(테넌트) ID

    참고 항목

    보안상의 이유로 워크플로에 직접 값을 전달하는 대신 GitHub 비밀을 사용하는 것이 좋습니다.

Resource Manager 템플릿 추가

GitHub 리포지토리에 Resource Manager 템플릿을 추가합니다. 이 템플릿으로 스토리지 계정을 만듭니다.

https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json

파일을 리포지토리의 어디에나 배치할 수 있습니다. 다음 섹션의 워크플로 샘플에서는 템플릿 파일의 이름이 azuredeploy.json이고 리포지토리의 루트에 저장된다고 가정합니다.

워크플로 만들기

워크플로 파일은 리포지토리의 루트에 있는 .github/workflows 폴더에 저장해야 합니다. 워크플로 파일 확장명은 .yml 또는 .yaml일 수 있습니다.

  1. GitHub 리포지토리의 상단 메뉴에서 작업을 선택합니다.
  2. 새 워크플로를 선택합니다.
  3. 워크플로 직접 설정을 선택합니다.
  4. main.yml이 아닌 다른 이름을 선호하는 경우 워크플로 파일의 이름을 바꿉니다. 예: deployStorageAccount.yml.
  5. yml 파일의 내용을 다음으로 바꿉니다.
  on: [push]
  name: Azure ARM
  jobs:
    build-and-deploy:
      runs-on: ubuntu-latest
      steps:

        # Checkout code
      - uses: actions/checkout@main

        # Log into Azure
      - uses: azure/login@v1
        with:
          creds: ${{ secrets.AZURE_CREDENTIALS }}

        # Deploy ARM template
      - name: Run ARM deploy
        uses: azure/arm-deploy@v1
        with:
          subscriptionId: ${{ secrets.AZURE_SUBSCRIPTION }}
          resourceGroupName: ${{ secrets.AZURE_RG }}
          template: ./azuredeploy.json
          parameters: storageAccountType=Standard_LRS

        # output containerName variable from template
      - run: echo ${{ steps.deploy.outputs.containerName }}

참고 항목

ARM 배포 작업에 대신 JSON 형식 매개 변수 파일을 지정할 수 있습니다(예: .azuredeploy.parameters.json).

워크플로 파일의 첫 번째 섹션에는 다음이 포함됩니다.

  • name: 워크플로의 이름입니다.
  • on: 워크플로를 트리거하는 GitHub 이벤트의 이름입니다. 기본 분기에 지정된 두 파일 중 하나 이상을 수정하는 푸시 이벤트가 있는 경우 워크플로가 트리거됩니다. 두 파일은 워크플로 파일 및 템플릿 파일입니다.
  1. 커밋 시작을 선택합니다.
  2. 기본 분기에 직접 커밋을 선택합니다.
  3. 새 파일 커밋(또는 변경 내용 커밋)을 선택합니다.

업데이트되는 워크플로 파일이나 템플릿 파일에 의해 트리거되도록 워크플로를 구성했기 때문에 변경 내용을 커밋하면 워크플로가 바로 시작됩니다.

워크플로 상태 확인

  1. 작업 탭을 선택합니다. deployStorageAccount.yml 만들기 워크플로가 나열되어 있습니다. 워크플로를 실행하는 데 1-2분이 소요됩니다.
  2. 워크플로를 선택하여 엽니다.
  3. 메뉴에서 ARM 배포 실행을 선택하여 배포를 확인합니다.

리소스 정리

리소스 그룹 및 리포지토리가 더 이상 필요하지 않은 경우 리소스 그룹과 GitHub 리포지토리를 삭제하여 배포한 리소스를 정리합니다.

다음 단계