자습서: ARM 템플릿을 사용하여 여러 리소스 인스턴스 만들기

ARM 템플릿(Azure Resource Manager 템플릿)을 반복하여 Azure 리소스의 여러 인스턴스를 만드는 방법을 알아봅니다. 이 자습서에서는 3개의 스토리지 계정 인스턴스를 만들도록 템플릿을 수정합니다.

Diagram showing Azure Resource Manager creating multiple instances.

이 자습서에서 다루는 작업은 다음과 같습니다.

  • 빠른 시작 템플릿 열기
  • 템플릿 편집
  • 템플릿 배포

Azure 구독이 없는 경우 시작하기 전에 체험 계정을 만듭니다.

리소스 복사를 다루는 Learn 모듈은 고급 ARM 템플릿 기능을 사용하여 복잡한 클라우드 배포 관리를 참조하세요.

필수 조건

이 문서를 완료하려면 다음이 필요합니다.

빠른 시작 템플릿 열기

Azure 빠른 시작 템플릿은 ARM 템플릿용 리포지토리입니다. 템플릿을 처음부터 새로 만드는 대신 샘플 템플릿을 찾아서 사용자 지정할 수 있습니다. 이 빠른 시작에서 사용되는 템플릿은 표준 스토리지 계정 만들기라고 합니다. 이 템플릿은 Azure Storage 계정 리소스를 정의합니다.

  1. Visual Studio Code에서 파일>파일 열기를 차례로 선택합니다.

  2. 파일 이름에서 다음 URL을 붙여넣습니다.

    https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json
    
  3. 열기를 선택하여 파일을 엽니다.

  4. 템플릿에 정의된 Microsoft.Storage/storageAccounts 리소스가 있습니다. 이 템플릿을 템플릿 참조와 비교합니다. 템플릿을 사용자 지정하기 전에 템플릿의 몇 가지 기본적인 내용을 이해하면 유용합니다.

  5. 파일>이름으로 저장을 차례로 선택하여 파일을 azuredeploy.json으로 저장합니다.

템플릿 편집

기존 템플릿은 스토리지 계정 1개를 만듭니다. 스토리지 계정 3개를 만들도록 템플릿을 사용자 지정합니다.

Visual Studio Code에서 다음 4개의 변경 내용을 만듭니다.

Screenshot of Visual Studio Code with Azure Resource Manager creating multiple instances.

  1. 스토리지 계정 리소스 정의에 copy 요소를 추가합니다. copy 요소에서 이 루프의 반복 횟수와 변수를 지정합니다. count 값은 양의 정수여야 하며 800을 초과할 수 없습니다.

    "copy": {
      "name": "storageCopy",
      "count": 3
    },
    
  2. copyIndex() 함수는 루프에서 현재 반복을 반환합니다. 인덱스를 이름 접두사로 사용합니다. copyIndex()는 0부터 시작합니다. 인덱스 값을 오프셋하려면 copyIndex() 함수에 값을 전달하면 됩니다. 예: copyIndex(1).

    "name": "[format('{0}storage{1}', copyIndex(), uniqueString(resourceGroup().id))]",
    
    
    
  3. 더 이상 사용되지 않으므로 storageAccountName 매개 변수 정의를 삭제합니다.

  4. outputs 요소를 삭제합니다. 더 이상 필요하지 않습니다.

  5. metadata 요소를 삭제합니다.

완성된 템플릿은 다음과 같습니다.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageAccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GRS",
        "Standard_GZRS",
        "Standard_LRS",
        "Standard_RAGRS",
        "Standard_RAGZRS",
        "Standard_ZRS"
      ],
      "metadata": {
        "description": "Storage Account type"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for the storage account."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-06-01",
      "name": "[format('{0}storage{1}', copyIndex(), uniqueString(resourceGroup().id))]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageAccountType')]"
      },
      "kind": "StorageV2",
      "copy": {
        "name": "storageCopy",
        "count": 3
      },
      "properties": {}
    }
  ]
}

변경 내용을 저장합니다.

여러 인스턴스를 만드는 방법에 대한 자세한 내용은 ARM 템플릿의 리소스 반복을 참조하세요.

템플릿 배포

  1. Azure Cloud Shell에 로그인

  2. 왼쪽 위 모서리에서 PowerShell 또는 Bash(CLI용)를 선택하여 기본 환경을 선택합니다. 전환하는 경우 셸을 다시 시작해야 합니다.

    Azure portal Cloud Shell upload file

  3. 파일 업로드/다운로드를 선택한 다음, 업로드를 선택합니다. 이전 스크린샷을 참조하세요. 이전 섹션에서 저장한 파일을 선택합니다. 파일을 업로드한 후 ls 명령 및 cat 명령을 사용하여 파일이 성공적으로 업로드되었는지 확인할 수 있습니다.

  4. Cloud Shell에서 다음 명령을 실행합니다. 탭을 선택하여 PowerShell 코드 또는 CLI 코드를 표시합니다.

    echo "Enter a project name that is used to generate resource group name:" &&
    read projectName &&
    echo "Enter the location (i.e. centralus):" &&
    read location &&
    resourceGroupName="${projectName}rg" &&
    az group create --name $resourceGroupName --location "$location" &&
    az deployment group create --resource-group $resourceGroupName --template-file "$HOME/azuredeploy.json"
    

템플릿을 성공적으로 배포한 후에는 지정된 리소스 그룹에서 만든 세 개의 스토리지 계정을 표시할 수 있습니다. 스토리지 계정 이름을 템플릿의 이름 정의와 비교합니다.

echo "Enter a project name that is used to generate resource group name:" &&
read projectName &&
resourceGroupName="${projectName}rg" &&
az storage account list --resource-group $resourceGroupName &&
echo "Press [ENTER] to continue ..."

리소스 정리

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

  1. Azure Portal의 왼쪽 메뉴에서 리소스 그룹을 선택합니다.
  2. 이름으로 필터링 필드에서 리소스 그룹 이름을 입력합니다.
  3. 해당 리소스 그룹 이름을 선택합니다. 리소스 그룹에 총 세 개의 리소스가 표시됩니다.
  4. 위쪽 메뉴에서 리소스 그룹 삭제를 선택합니다.

다음 단계

이 자습서에서는 여러 스토리지 계정 인스턴스를 만드는 방법을 배웠습니다. 다음 자습서에서는 여러 리소스 및 여러 리소스 종류가 있는 템플릿을 개발합니다. 일부 리소스에는 종속 리소스가 있습니다.