자습서: 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"
      ]
    },
    "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
      }
    }
  ]
}

ARM 템플릿을 쉽게 빌드하려면 Azure Storage 계정 이름이 고유해야 합니다. 이 시리즈의 이전 자습서를 완료한 경우 고유한 이름을 생각해 내는 데 질렸을 것입니다. 스토리지 계정의 고유한 이름을 생성하는 변수를 추가하면 이 문제를 해결할 수 있습니다.

변수 사용

다음 예에서는 고유한 스토리지 계정 이름을 만드는 변수를 템플릿에 추가하는 변경 사항이 강조 표시되어 있습니다. 전체 파일을 복사하고 템플릿을 해당 콘텐츠로 바꿉니다.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "type": "string",
      "minLength": 3,
      "maxLength": 11
    },
    "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]"
    }
  },
  "variables": {
    "uniqueStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "[variables('uniqueStorageName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

uniqueStorageName이라는 변수가 포함되어 있습니다. 이 변수는 4개의 함수를 사용하여 문자열 값을 생성합니다.

parameters 함수는 이미 익숙할 것이므로 다루지 않겠습니다.

또한 resourceGroup 함수도 익숙할 것입니다. 이 경우 이전 자습서에 표시된 것처럼 location 속성 대신 id 속성을 가져옵니다. id 속성은 구독 ID 및 리소스 그룹 이름을 포함한 리소스 그룹의 전체 식별자를 반환합니다.

uniqueString 함수는 13자 해시 값을 만듭니다. 전달된 매개 변수가 반환되는 값을 결정합니다. 이 자습서에서는 해시 값에 대한 입력으로 리소스 그룹 ID를 사용합니다. 즉, 이 템플릿을 여러 리소스 그룹에 배포하고 다른 고유한 문자열 값을 가져올 수 있습니다. 그러나 동일한 리소스 그룹에 배포하는 경우에는 동일한 값을 얻을 수 있습니다.

concat 함수는 값을 받아서 결합합니다. 이 변수의 경우 매개 변수의 문자열과 uniqueString 함수의 문자열을 가져와서 하나의 문자열로 결합합니다.

storagePrefix 매개 변수를 사용하면 스토리지 계정을 식별하는 데 도움이 되는 접두사를 전달할 수 있습니다. 광범위한 리소스 목록에서 배포한 후 스토리지 계정을 더욱 쉽게 식별할 수 있도록 고유한 명명 규칙을 만들 수 있습니다.

마지막으로, 이제 스토리지 계정 이름이 매개 변수 대신 변수로 설정되었는지 확인합니다.

템플릿 배포

템플릿을 배포해보겠습니다. 스토리지 계정 이름의 접두사만 제공하기 때문에 이 템플릿을 이전 템플릿보다 쉽게 배포할 수 있습니다.

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

New-AzResourceGroupDeployment `
  -Name addnamevariable `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storagePrefix "store" `
  -storageSKU Standard_LRS

참고 항목

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

배포 확인

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

  1. Azure Portal에 로그인합니다.
  2. 왼쪽 메뉴에서 리소스 그룹을 선택합니다.
  3. 리소스 그룹을 선택합니다.
  4. 배포된 스토리지 계정 이름이 store에 임의의 문자로 된 문자열을 추가한 형태인지 확인합니다.

리소스 정리

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

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

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

다음 단계

이 자습서에서는 고유한 스토리지 계정 이름을 만드는 변수를 추가합니다. 다음 자습서에서는 배포된 스토리지 계정에서 값을 반환합니다.