자습서: 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에서 리소스 그룹을 탐색하여 배포를 확인할 수 있습니다.
- Azure Portal에 로그인합니다.
- 왼쪽 메뉴에서 리소스 그룹을 선택합니다.
- myResourceGroup 왼쪽에 있는 확인란을 선택하고 myResourceGroup을 선택합니다.
- 만든 리소스 그룹을 선택하세요. 기본 이름은 myResourceGroup입니다.
- 배포된 스토리지 계정과 리소스 그룹의 위치가 동일합니다.
리소스 정리
다음 자습서로 이동하는 경우에는 리소스 그룹을 삭제할 필요가 없습니다.
지금 중지하는 경우 리소스 그룹을 삭제하는 것이 좋습니다.
- Azure Portal의 왼쪽 메뉴에서 리소스 그룹을 선택합니다.
- 모든 필드에 대한 필터... 텍스트 필드에 리소스 그룹 이름을 입력합니다.
- myResourceGroup 옆에 있는 확인란을 선택하고 myResourceGroup 또는 리소스 그룹 이름을 선택합니다.
- 위쪽 메뉴에서 리소스 그룹 삭제를 선택합니다.
다음 단계
이 자습서에서는 함수를 사용하여 매개 변수의 기본값을 정의합니다. 이 자습서 시리즈에서는 함수를 계속 사용합니다. 시리즈의 끝 부분에서 템플릿의 모든 섹션에 함수를 추가합니다.