다음을 통해 공유


자습서: ARM 템플릿에 템플릿 함수 추가

이 자습서에서는 ARM 템플릿(Azure Resource Manager 템플릿)에 템플릿 함수를 추가하는 방법을 알아봅니다. 함수를 사용하여 값을 동적으로 구성합니다. 이러한 시스템 제공 템플릿 함수 외에도 사용자 정의 함수를 만들 수 있습니다. 이 자습서를 완료하는 데 7분이 소요됩니다.

필수 조건

매개 변수에 대한 자습서를 완료하는 것이 좋지만 필수는 아닙니다.

Visual Studio Code가 설치되어 있고 Azure Resource Manager Tools 확장 및 Azure PowerShell 또는 Azure CLI와 함께 작동해야 합니다. 자세한 내용은 템플릿 도구를 참조하세요.

템플릿 검토

이전 자습서의 끝 부분에 템플릿에는 다음 JSON 파일이 있습니다.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageName": {
      "type": "string",
      "minLength": 3,
      "maxLength": 24
    },
    "storageSKU": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Standard_ZRS",
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GZRS",
        "Standard_RAGZRS"
      ]
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "[parameters('storageName')]",
      "location": "eastus",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

Azure 스토리지 계정의 위치를 eastus에 하드 코딩했지만 다른 지역에 배포해야 한다고 가정합니다. 템플릿에 유연성을 추가하고 다른 위치를 가질 수 있도록 매개 변수를 추가해야 합니다.

함수 사용

매개 변수 자습서를 완료한 경우 함수를 사용한 것입니다. "[parameters('storageName')]"을 추가할 때 parameters 함수를 사용했습니다. 대괄호는 대괄호 안의 구문이 템플릿 표현식임을 나타냅니다. Resource Manager는 구문을 리터럴 값으로 처리하는 대신 구문을 확인합니다.

함수는 배포 중에 값을 동적으로 가져와서 템플릿에 유연성을 추가합니다. 이 자습서에서는 함수를 사용하여 리소스 그룹 배포 위치를 가져옵니다.

다음 예제는 location이라는 매개 변수를 추가하기 위한 변경 사항을 강조 표시합니다. 매개 변수 기본값은 resourceGroup 함수를 호출합니다. 이 함수는 배포된 리소스 그룹에 대한 정보가 포함된 개체를 반환합니다. 개체 속성 중 하나는 위치 속성입니다. 기본값을 사용하면 스토리지 계정과 리소스 그룹이 같은 위치에 있습니다. 그룹 내 리소스의 위치가 다릅니다.

전체 파일을 복사하고 템플릿을 해당 콘텐츠로 바꿉니다.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageName": {
      "type": "string",
      "minLength": 3,
      "maxLength": 24
    },
    "storageSKU": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Standard_ZRS",
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GZRS",
        "Standard_RAGZRS"
      ]
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "[parameters('storageName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

템플릿 배포

이전 자습서에서 스토리지 계정은 미국 동부에 만들었지만 리소스 그룹은 미국 중부에 만들었습니다. 이 자습서에서는 리소스 그룹과 동일한 지역에 스토리지 계정을 만듭니다. 위치에 기본값을 사용하기 때문에 해당 매개 변수 값을 제공할 필요가 없습니다. 다른 위치에 스토리지 계정을 만들기 때문에 스토리지 계정에 대해 새 이름을 제공해야 합니다. 예를 들어, store1 대신 store2를 접두사로 사용합니다.

리소스 그룹을 만들지 않은 경우 리소스 그룹 만들기를 참조하세요. 이 예제에서는 첫 번째 자습서에 표시된 대로 templateFile 변수를 템플릿 파일의 경로로 설정했다고 가정합니다.

New-AzResourceGroupDeployment `
  -Name addlocationparameter `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storageName "{new-unique-name}"

참고 항목

배포에 실패한 경우 verbose 스위치를 사용하여 생성 중인 리소스에 대한 정보를 가져옵니다. 디버깅에 대한 자세한 정보를 보려면 debug 스위치를 사용합니다.

배포 확인

Azure Portal에서 리소스 그룹을 탐색하여 배포를 확인할 수 있습니다.

  1. Azure Portal에 로그인합니다.
  2. 왼쪽 메뉴에서 리소스 그룹을 선택합니다.
  3. myResourceGroup 왼쪽에 있는 확인란을 선택하고 myResourceGroup을 선택합니다.
  4. 만든 리소스 그룹을 선택하세요. 기본 이름은 myResourceGroup입니다.
  5. 배포된 스토리지 계정과 리소스 그룹의 위치가 동일합니다.

리소스 정리

다음 자습서로 이동하는 경우에는 리소스 그룹을 삭제할 필요가 없습니다.

지금 중지하는 경우 리소스 그룹을 삭제하는 것이 좋습니다.

  1. Azure Portal의 왼쪽 메뉴에서 리소스 그룹을 선택합니다.
  2. 모든 필드에 대한 필터... 텍스트 필드에 리소스 그룹 이름을 입력합니다.
  3. myResourceGroup 옆에 있는 확인란을 선택하고 myResourceGroup 또는 리소스 그룹 이름을 선택합니다.
  4. 위쪽 메뉴에서 리소스 그룹 삭제를 선택합니다.

다음 단계

이 자습서에서는 함수를 사용하여 매개 변수의 기본값을 정의합니다. 이 자습서 시리즈에서는 함수를 계속 사용합니다. 시리즈의 끝 부분에서 템플릿의 모든 섹션에 함수를 추가합니다.