GitHub Actions를 사용하여 ARM 템플릿 배포
GitHub Actions는 코드를 저장하고 끌어오기 요청 및 이슈에 대해 공동 작업하는 곳과 동일한 위치에서 소프트웨어 개발 워크플로를 자동화하는 GitHub의 기능 모음입니다.
Azure Resource Manager 템플릿 배포 작업을 사용하여 Azure에 대한 ARM 템플릿(Azure Resource Manager 템플릿) 배포를 자동화할 수 있습니다.
필수 조건
활성 구독이 있는 Azure 계정. 체험 계정을 만듭니다.
GitHub 계정. 없는 경우 평가판에 등록하세요.
- Resource Manager 템플릿 및 워크플로 파일을 저장하는 GitHub 리포지토리. 리포지토리를 만들려면 새 리포지토리 만들기를 참조하세요.
워크플로 파일 개요
워크플로는 리포지토리의 /.github/workflows/
경로에 있는 YAML(.yml) 파일에서 정의됩니다. 이 정의는 워크플로를 구성하는 다양한 단계와 매개 변수를 포함합니다.
이 파일에는 다음 두 가지 섹션이 있습니다.
섹션 | 작업 |
---|---|
인증 | 1. 배포 자격 증명을 생성합니다. |
Deploy | 1. Resource Manager 템플릿을 배포합니다. |
배포 자격 증명 생성
Azure CLI에서 az ad sp create-for-rbac 명령을 사용하여 서비스 주체를 만듭니다. 이 명령은 Azure Portal에서 Azure Cloud Shell을 사용하거나 사용해 보세요 단추를 선택하여 실행합니다.
az ad sp create-for-rbac --name "myML" --role contributor \
--scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
--json-auth
--json-auth
매개 변수는 Azure CLI 버전 >= 2.51.0에서 사용할 수 있습니다. 이전 버전에서는 사용 중단 경고와 함께 --sdk-auth
를 사용합니다.
위의 예시에서 자리 표시자를 구독 ID, 리소스 그룹 이름 및 앱 이름으로 바꿉니다. 출력은 아래와 비슷한 App Service 앱에 대한 액세스를 제공하는 역할 할당 자격 증명이 있는 JSON 개체입니다. 나중에 사용할 수 있도록 이 JSON 개체를 복사합니다.
{
"clientId": "<GUID>",
"clientSecret": "<GUID>",
"subscriptionId": "<GUID>",
"tenantId": "<GUID>",
(...)
}
GitHub 비밀 구성
GitHub에서 리포지토리로 이동합니다.
탐색 메뉴에서 설정으로 이동합니다.
보안 > 비밀 및 변수 > 작업을 선택합니다.
새 리포지토리 비밀을 선택합니다.
Azure CLI 명령의 전체 JSON 출력을 비밀의 값 필드에 붙여넣습니다. 비밀 이름을
AZURE_CREDENTIALS
으로 지정합니다.비밀 추가를 선택합니다.
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일 수 있습니다.
- GitHub 리포지토리의 상단 메뉴에서 작업을 선택합니다.
- 새 워크플로를 선택합니다.
- 워크플로 직접 설정을 선택합니다.
- main.yml이 아닌 다른 이름을 선호하는 경우 워크플로 파일의 이름을 바꿉니다. 예: deployStorageAccount.yml.
- 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 이벤트의 이름입니다. 기본 분기에 지정된 두 파일 중 하나 이상을 수정하는 푸시 이벤트가 있는 경우 워크플로가 트리거됩니다. 두 파일은 워크플로 파일 및 템플릿 파일입니다.
- 커밋 시작을 선택합니다.
- 기본 분기에 직접 커밋을 선택합니다.
- 새 파일 커밋(또는 변경 내용 커밋)을 선택합니다.
업데이트되는 워크플로 파일이나 템플릿 파일에 의해 트리거되도록 워크플로를 구성했기 때문에 변경 내용을 커밋하면 워크플로가 바로 시작됩니다.
워크플로 상태 확인
- 작업 탭을 선택합니다. deployStorageAccount.yml 만들기 워크플로가 나열되어 있습니다. 워크플로를 실행하는 데 1-2분이 소요됩니다.
- 워크플로를 선택하여 엽니다.
- 메뉴에서 ARM 배포 실행을 선택하여 배포를 확인합니다.
리소스 정리
리소스 그룹 및 리포지토리가 더 이상 필요하지 않은 경우 리소스 그룹과 GitHub 리포지토리를 삭제하여 배포한 리소스를 정리합니다.