연습 - Azure Resource Manager 템플릿 만들기 및 배포

완료됨

참고

처음으로 샌드박스를 활성화하고 약관에 동의하면 Microsoft 계정이 Microsoft Learn 샌드박스라는 새로운 Azure 디렉터리와 연결됩니다. 또한 Concierge Subscription이라는 특수 구독에도 추가됩니다.

이 연습에서는 ARM 템플릿(Azure Resource Manager 템플릿)을 만들고 Azure에 배포한 다음 해당 ARM 템플릿을 업데이트하여 매개 변수 및 출력을 추가합니다.

이 연습에서는 Visual Studio Code용 Azure Resource Manager 도구를 사용합니다. 연습을 시작하기 전에 Visual Studio Code에 다음 확장을 설치해야 합니다.

ARM 템플릿 만들기

  1. Visual Studio Code를 열고 azuredeploy.json이라는 새 파일을 만듭니다.

  2. Visual Studio Code ARM 템플릿 확장은 템플릿을 개발하는 데 도움이 되는 코드 조각으로 구성되어 있습니다. 먼저 빈 템플릿을 추가해 보겠습니다. 파일의 첫 줄에서 arm을 입력합니다.

  3. Visual Studio Code는 arm!로 시작하는 몇 가지 잠재적 선택 항목을 자동으로 표시합니다. ARM(Azure Resource Manager) 템플릿을 선택합니다. Visual Studio Code는 템플릿의 스키마와 언어를 자동으로 처리합니다.

    Visual Studio Code azuredeploy.json file showing the snippet choices for Azure Resource Manager templates.

    이제 파일이 다음과 같아집니다.

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {},
      "functions": [],
      "variables": {},
      "resources": [],
      "outputs": {}
    }
    

    이 파일에는 앞 단원에서 설명한 ARM 템플릿의 모든 섹션이 있는 것을 볼 수 있습니다.

  4. Ctrl+S를 눌러 변경 내용을 파일에 저장합니다.

Azure에 ARM 템플릿 배포

Azure에 해당 템플릿을 배포하려면 Visual Studio Code 터미널에서 Azure 계정에 로그인해야 합니다. Azure CLI 도구를 설치하고 샌드박스를 활성화한 것과 동일한 계정에 로그인했는지 확인합니다.

  1. 터미널 > 새 터미널을 선택하여 터미널 창을 엽니다.

  2. 명령 모음에 bash가 표시되면 올바른 셸을 사용하고 있는 것이며 다음 섹션으로 건너뛸 수 있습니다.

  3. 그렇지 않은 경우 드롭다운을 선택하고 기본 프로필 선택을 선택합니다.

    Screenshot of the Visual Studio Code terminal window with bash in the drop-down.

  4. Git Bash를 선택합니다.

    Screenshot of the Visual Studio Code terminal window showing the select shell drop-down.

  5. 터미널 > 새 터미널을 선택하여 Bash 셸 터미널 창을 엽니다.

Azure에 로그인

  1. 터미널 창에서 이 명령을 실행하여 Azure에 로그인합니다.

    az login
    
  2. 계정에 로그인할 수 있도록 브라우저가 열립니다. 로그인하면 이 계정과 연결된 구독 목록이 터미널에 표시됩니다. 샌드박스를 활성화한 경우 ‘컨시어지 구독’이라는 구독이 표시됩니다. 나머지 연습에서 해당 구독을 사용합니다.

  3. Bash 셸에서 다음 명령을 실행하여 이 세션에서 실행하는 모든 Azure CLI 명령에 대한 기본 구독을 설정합니다.

    az account set --subscription "Concierge Subscription"
    

    최근에 샌드박스를 두 개 이상 사용한 경우에는 ‘컨시어지 구독’이 두 개 이상 나열될 수 있습니다. 이 경우 다음 두 단계를 사용하여 기본 구독을 식별하고 설정합니다.

    1. 다음 명령을 실행하여 ‘컨시어지 구독’ ID를 가져옵니다.
     az account list \
       --refresh \
       --query "[?contains(name, 'Concierge Subscription')].id" \
       --output table
    
    1. 다음 명령을 실행해 기본 구독을 설정하여 {your subscription ID}를 최신 컨시어지 구독 ID로 대체합니다.
    az account set --subscription {your subscription ID}
    

기본 리소스 그룹 설정

기본 리소스 그룹을 샌드박스를 활성화할 때 만든 리소스 그룹으로 설정하면 이 연습의 Azure CLI 명령에서 해당 매개 변수를 생략할 수 있습니다. 리소스 그룹을 설정하려면 다음 명령을 실행합니다.

az configure --defaults group=<rgn>[sandbox resource group name]</rgn>

Azure에 템플릿 배포

다음 명령을 실행하여 ARM 템플릿을 Azure에 배포합니다. ARM 템플릿에는 아직 리소스가 없으므로 생성된 리소스가 표시되지 않습니다. 배포에 성공합니다.

templateFile="azuredeploy.json"
today=$(date +"%d-%b-%Y")
DeploymentName="blanktemplate-"$today

az deployment group create \
 --name $DeploymentName \
 --template-file $templateFile

앞에 나온 코드의 맨 위 섹션은 배포할 템플릿 파일의 경로 및 배포의 이름에 해당하는 Azure CLI 변수를 설정합니다. 아래 섹션에서 az deployment group create는 Azure에 템플릿을 배포합니다. 배포 이름은 날짜가 접미사로 추가된 blanktemplate입니다.

터미널에 Running...이(가) 표시됩니다.

Azure에 해당 템플릿을 배포하려면 Visual Studio Code 터미널에서 Azure 계정에 로그인해야 합니다. Visual Studio Code 확장에서 Azure PowerShell 도구를 설치했는지 확인하고 샌드박스를 활성화한 것과 동일한 계정에 로그인합니다.

  1. 명령 모음에서 터미널 > 새 터미널을 선택하여 PowerShell 창을 엽니다.

  2. 터미널 창의 명령 모음에 PowerShell이 표시되면 작업할 올바른 셸을 사용하고 있는 것이며 다음 섹션으로 건너뛸 수 있습니다.

    Screenshot of the Visual Studio Code terminal window with pwsh terminal selected.

    1. 그렇지 않은 경우 아래쪽 화살표를 선택하고 드롭다운 목록에서 PowerShell을 선택합니다. 해당 옵션이 누락된 경우 기본 프로필 선택을 선택합니다.

    2. 입력 필드에서 아래로 스크롤하여 PowerShell을 선택합니다.

      Screenshot of the Visual Studio Code terminal window showing the select shell drop-down.

    3. 터미널 > 새 터미널을 선택하여 PowerShell 터미널 창을 엽니다.

Azure PowerShell을 사용하여 Azure에 로그인

  1. Visual Studio Code의 터미널에서 다음 명령을 실행하여 Azure에 로그인합니다. 계정에 로그인할 수 있도록 브라우저가 열립니다.

    Connect-AzAccount
    

    Az PowerShell 모듈은 AzureRM을 대체하며 Azure와 상호 작용하는 데 사용되는 권장 버전입니다.

  2. 샌드박스를 활성화하는 데 사용한 계정을 사용하여 로그인합니다. 로그인하면 Visual Studio Code 터미널 창에 계정과 연결된 구독이 나열됩니다. 샌드박스를 활성화한 경우 "name": "Concierge Subscription"이 포함된 코드 블록이 표시됩니다. 이 구독은 연습의 나머지 부분에 사용할 구독입니다.

이 세션의 모든 PowerShell 명령에 대한 기본 구독 설정

  1. 다음 명령을 실행하여 구독 및 해당 ID를 얻습니다. 구독 ID는 두 번째 열입니다. ‘컨시어지 구독’을 검색하고 두 번째 열에 있는 값을 복사합니다. 이는 cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0과 같이 표시됩니다.

    Get-AzSubscription
    
  2. 다음 명령을 실행해 {Your subscription ID}를 이전 단계에서 복사한 구독으로 대체하여 사용 중인 구독을 컨시어지 구독으로 변경합니다.

    $context = Get-AzSubscription -SubscriptionId {Your subscription ID}
    Set-AzContext $context
    
  3. 다음 명령을 실행하여 기본 리소스 그룹이 샌드박스 환경에서 생성된 리소스 그룹이 되도록 합니다. 이렇게 하면 이 연습의 나머지 Azure PowerShell 명령에서 해당 매개 변수를 생략할 수 있습니다.

    Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
    

Azure에 템플릿 배포

다음 명령을 실행하여 템플릿을 Azure에 배포합니다. ARM 템플릿에는 아직 리소스가 없으므로 생성된 리소스가 표시되지 않습니다.

$templateFile="azuredeploy.json"
$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="blanktemplate-"+"$today"
New-AzResourceGroupDeployment `
  -Name $deploymentName `
  -TemplateFile $templateFile

앞에 나온 코드의 맨 위 섹션은 배포 파일 및 배포의 이름에 해당하는 Azure PowerShell 변수를 설정합니다. New-AzResourceGroupDeployment 명령은 Azure에 템플릿을 배포합니다. 배포 이름은 날짜가 접미사로 추가된 blanktemplate입니다.

ARM 템플릿을 Azure에 배포한 후에는 Azure Portal로 이동하여 샌드박스 구독에 있는지 확인합니다. 확인하려면 페이지의 오른쪽 위에 있는 아바타를 선택합니다. 디렉터리 전환을 선택합니다. 목록에서 Microsoft Learn 샌드박스 디렉터리를 선택합니다.

  1. 리소스 메뉴에서 리소스 그룹을 선택합니다.

  2. 리소스 그룹 [샌드박스 리소스 그룹 이름]을 선택합니다.

  3. 개요 창에 성공한 배포 하나가 표시됩니다.

    Azure portal interface for the resource group overview with the deployments section showing that one succeeded.

  4. ‘1 성공’을 선택하여 배포 세부 정보를 확인합니다.

    Azure portal interface for the deployments with the one deployment listed and a succeeded status.

  5. blanktemplate을 선택하여 배포된 리소스를 확인합니다. 이 경우 템플릿에서 리소스를 아직 지정하지 않았기 때문에 리소스가 비어 있습니다.

    Azure portal interface for the specific deployment with no resources listed.

  6. 브라우저에서 페이지를 열어 둡니다. 배포를 다시 확인합니다.

ARM 템플릿에 리소스 추가

이전 작업에서는 빈 템플릿을 만들고 배포하는 방법을 알아보았습니다. 이제 실제 리소스를 배포할 준비가 되었습니다. 이 작업에서는 Visual Studio Code용 Azure Resource Manager 도구 확장의 코드 조각을 사용하여 ARM 템플릿에 Azure 스토리지 계정 리소스를 추가합니다.

  1. Visual Studio Code의 azuredeploy.json 파일에서 resources 블록 "resources":[],의 괄호 안에 커서를 놓습니다.

  2. 괄호 안에 storage를 입력합니다. 관련된 코드 조각 목록이 표시됩니다. arm-storage를 선택합니다.

    Visual Studio Code arm-storage snippet shown under the typed word storage.

    파일이 다음과 같이 표시됩니다.

    {
      "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {},
      "functions": [],
      "variables": {},
      "resources": [
        {
          "type": "Microsoft.Storage/storageAccounts",
          "apiVersion": "2023-05-01",
          "name": "storageaccount1",
          "tags": {
            "displayName": "storageaccount1"
          },
          "location": "[resourceGroup().location]",
          "kind": "StorageV2",
          "sku": {
            "name": "Premium_LRS"
          }
        }
      ],
      "outputs": {}
    }
    

    편집해야 하는 값은 파일의 새 섹션에서 강조 표시되며 Tab 키를 눌러 탐색할 수 있습니다.

    tagslocation 특성이 입력되어 있는지 확인합니다. location 특성은 함수를 사용하여 리소스 위치를 리소스 그룹의 위치로 설정합니다. 다음 모듈에서 태그 및 함수에 대해 알아봅니다.

  3. resource namedisplayName 값을 고유한 값으로 변경합니다(예: learnexercise12321). 해당 이름은 모든 Azure에서 고유해야 하므로 고유한 이름을 선택하세요.

  4. sku name 값을 Premium_LRS에서 Standard_LRS로 변경합니다. tier 값을 Standard로 변경합니다. Visual Studio Code는 IntelliSense에서 특성 값의 적절한 선택 항목을 제공합니다. 따옴표를 포함한 기본값을 삭제하고 따옴표를 입력하여 해당 작업을 확인합니다.

    Screenshot of Visual Studio Code showing the IntelliSense choices for the name attribute of the storage SKU.

  5. 리소스 위치는 배포될 리소스 그룹의 위치로 설정됩니다. 기본값을 그대로 둡니다.

  6. 파일을 저장합니다.

업데이트된 ARM 템플릿 배포

여기에서 해당 배포가 수행하는 작업을 더 잘 반영하도록 배포 이름을 변경합니다.

터미널에서 다음 Azure CLI 명령을 실행합니다. 코드 조각은 이전에 사용한 것과 동일한 코드이지만, 배포 이름이 변경되었습니다.

templateFile="azuredeploy.json"
today=$(date +"%d-%b-%Y")
DeploymentName="addstorage-"$today

az deployment group create \
  --name $DeploymentName \
  --template-file $templateFile

터미널에서 다음 Azure PowerShell 명령을 실행합니다. 코드 조각은 이전에 사용한 것과 동일한 코드이지만, 배포 이름이 변경되었습니다.

$templateFile="azuredeploy.json"
$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="addstorage-"+"$today"
New-AzResourceGroupDeployment `
  -Name $deploymentName `
  -TemplateFile $templateFile

배포 확인

  1. 배포가 완료되면 브라우저의 Azure Portal로 돌아갑니다. 리소스 그룹으로 이동하고 이제 두 개의 성공한 배포가 있는지 확인합니다. 해당 링크를 선택합니다.

    두 배포가 모두 목록에 있습니다.

    Screenshot of the Azure portal interface for the deployments with the two deployments listed and succeeded statuses.

  2. addstorage를 선택합니다.

    Screenshot of the Azure portal interface for the specific deployment with one resource listed.

스토리지 계정이 배포되었습니다.