연습 - Azure Resource Manager 템플릿에 매개 변수 및 출력 추가

완료됨

이 연습에서는 배포하는 동안 Azure 스토리지 계정 이름을 정의하는 매개 변수를 추가합니다. 그런 다음 허용되는 스토리지 계정 SKU를 정의하고 이 배포에 사용할 것을 정의하는 매개 변수를 추가합니다. 또한 배포 프로세스에서 나중에 사용할 수 있는 출력을 추가하여 ARM 템플릿(Azure Resource Manager 템플릿)에 유용성을 더합니다.

ARM 템플릿의 매개 변수 만들기

여기서는 런타임에 설정할 수 있는 매개 변수를 추가하여 ARM 템플릿의 유연성을 높입니다. storageName 값의 매개 변수를 만듭니다.

  1. Visual Studio Code의 azuredeploy.json 파일에서 다음과 같이 업데이트 "parameters":{},합니다.

    "parameters": {
      "storageName": {
        "type": "string",
        "minLength": 3,
        "maxLength": 24,
        "metadata": {
          "description": "The name of the Azure storage resource"
        }
      }
    },
    

    JSON 파일의 서식을 올바르게 지정하려면 Alt+Shift+F를 누릅니다.

  2. resourcesname 값에서 둘 다 displayName 블록에 새 매개 변수를 사용합니다. 전체 파일은 다음 코드 예제와 같이 표시됩니다.

    {
      "$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,
          "metadata": {
            "description": "The name of the Azure storage resource"
          }
        }
      },
      "functions": [],
      "variables": {},
      "resources": [
        {
          "type": "Microsoft.Storage/storageAccounts",
          "apiVersion": "2025-01-01",
          "name": "[parameters('storageName')]",
          "tags": {
            "displayName": "[parameters('storageName')]"
          },
          "location": "[resourceGroup().location]",
          "kind": "StorageV2",
          "sku": {
            "name": "Standard_LRS"
          }
        }
      ],
      "outputs": {}
    }
    
  3. 파일을 저장합니다.

매개 변수가 있는 ARM 템플릿 배포

여기에서 해당 배포가 수행하는 작업을 더 잘 반영하도록 배포 이름을 변경하고 새 매개 변수의 값을 입력합니다.

터미널에서 다음 Azure CLI 명령을 실행합니다. 이 스크립트는 배포 이름이 변경된 것을 제외하고 이전에 사용한 스크립트와 동일합니다. 매개 변수의 고유 값을 입력합니다 storageName . Azure에서 전역적으로 고유해야 하며, 3~24자를 포함하며 소문자, 숫자 및 하이픈만 포함해야 합니다. 이전 단원에서 만든 고유한 이름을 다시 사용할 수 있습니다. 이 경우 Azure는 새 리소스를 만드는 대신 기존 리소스를 업데이트합니다.

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

az deployment group create \
  --name $DeploymentName \
  --template-file $templateFile \
  --parameters storageName={your-unique-name}

터미널에서 다음 Azure PowerShell 명령을 실행합니다. 이 스크립트는 배포 이름이 변경된 것을 제외하고 이전에 사용한 스크립트와 동일합니다. 매개 변수의 고유 값을 입력합니다 storageName . Azure에서 전역적으로 고유해야 하며, 3~24자를 포함하며 소문자, 숫자 및 하이픈만 포함해야 합니다. 이전 단원에서 만든 고유한 이름을 다시 사용할 수 있습니다. 이 경우 Azure는 새 리소스를 만드는 대신 기존 리소스를 업데이트합니다.

$templateFile="azuredeploy.json"
$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="addnameparameter-"+"$today"
New-AzResourceGroupDeployment `
  -Name $deploymentName `
  -TemplateFile $templateFile `
  -storageName {your-unique-name}

배포 확인

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

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

  2. 앞에서 살펴본 것처럼 addnameparameter 배포를 살펴봅니다.

허용되는 값을 제한하는 다른 매개 변수 추가

여기에서 매개 변수를 사용하여 매개 변수의 허용되는 값을 제한합니다.

  1. storageSKU 파일의 섹션에 parameters 명명된 새 매개 변수를 추가합니다.

    // This is the allowed values for an Azure storage account
    "storageSKU": {
       "type": "string",
       "defaultValue": "Standard_LRS",
       "allowedValues": [
         "Standard_LRS",
         "Standard_GRS",
         "Standard_RAGRS",
         "Standard_ZRS",
         "Premium_LRS",
         "Premium_ZRS",
         "Standard_GZRS",
         "Standard_RAGZRS"
       ]
     }
    

    첫 번째 줄은 주석입니다. ARM 템플릿은 ///* */ 주석을 지원합니다.

  2. 매개 변수를 사용하도록 storageSKU를 업데이트합니다. Visual Studio Code에서 IntelliSense를 활용하는 경우 이 단계를 보다 쉽게 수행할 수 있습니다.

    "sku": {
         "name": "[parameters('storageSKU')]"
       }
    

    전체 파일은 다음 코드 예제와 같이 표시됩니다.

    {
      "$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,
          "metadata": {
            "description": "The name of the Azure storage resource"
          }
        },
        "storageSKU": {
          "type": "string",
          "defaultValue": "Standard_LRS",
          "allowedValues": [
            "Standard_LRS",
            "Standard_GRS",
            "Standard_RAGRS",
            "Standard_ZRS",
            "Premium_LRS",
            "Premium_ZRS",
            "Standard_GZRS",
            "Standard_RAGZRS"
          ]
        }
      },
      "functions": [],
      "variables": {},
      "resources": [
        {
          "type": "Microsoft.Storage/storageAccounts",
          "apiVersion": "2025-01-01",
          "name": "[parameters('storageName')]",
          "tags": {
            "displayName": "[parameters('storageName')]"
          },
          "location": "[resourceGroup().location]",
          "kind": "StorageV2",
          "sku": {
            "name": "[parameters('storageSKU')]"
          }
        }
      ],
      "outputs": {}
    }
    
  3. 파일을 저장합니다.

ARM 템플릿 배포

여기에서 허용 목록에 있는 storageSKU 매개 변수를 사용하여 성공적으로 배포합니다. 그런 다음 허용 목록에 없는 storageSKU 매개 변수를 사용하여 템플릿 배포를 시도합니다. 두 번째 배포는 예상대로 실패합니다.

  1. 다음 명령을 실행하여 템플릿을 배포합니다. storageName 매개 변수의 고유한 이름을 입력합니다. Azure에서 전역적으로 고유해야 하며, 3~24자를 포함하며 소문자, 숫자 및 하이픈만 포함해야 합니다. 이전 단원에서 만든 고유한 이름을 다시 사용할 수 있습니다. 이 경우 Azure는 새 리소스를 만드는 대신 기존 리소스를 업데이트합니다.

    templateFile="azuredeploy.json"
    today=$(date +"%d-%b-%Y")
    DeploymentName="addSkuParameter-"$today
    
    az deployment group create \
      --name $DeploymentName \
      --template-file $templateFile \
      --parameters storageSKU=Standard_GRS storageName={your-unique-name}
    

    해당 배포를 완료합니다. 배포가 예상대로 성공합니다. 허용되는 값 목록으로 인해 템플릿의 사용자가 리소스에서 작동하지 않는 매개 변수 값을 전달할 수 없습니다. 잘못된 SKU를 제공하면 어떻게 되는지 살펴보겠습니다.

  2. 다음 명령을 실행하여 허용되지 않는 매개 변수로 템플릿을 배포합니다. storageSKU 매개 변수를 Basic으로 변경했습니다. storageName 매개 변수의 고유한 이름을 입력합니다. Azure에서 전역적으로 고유해야 하며, 3~24자를 포함하며 소문자, 숫자 및 하이픈만 포함해야 합니다. 이전 단원에서 만든 고유한 이름을 다시 사용할 수 있습니다. 이 경우 Azure는 새 리소스를 만드는 대신 기존 리소스를 업데이트합니다.

    templateFile="azuredeploy.json"
    today=$(date +"%d-%b-%Y")
    DeploymentName="addSkuParameter-"$today
    
    az deployment group create \
      --name $DeploymentName \
      --template-file $templateFile \
      --parameters storageSKU=Basic storageName={your-unique-name}
    

    해당 배포가 실패합니다. 오류를 확인합니다.

    배포 유효성 검사 오류를 보여 주는 터미널 창의 스크린샷.

  1. 다음 명령을 실행하여 템플릿을 배포합니다. storageName 매개 변수의 고유한 이름을 입력합니다. Azure에서 전역적으로 고유해야 하며, 3~24자를 포함하며 소문자, 숫자 및 하이픈만 포함해야 합니다. 이전 단원에서 만든 고유한 이름을 다시 사용할 수 있습니다. 이 경우 Azure는 새 리소스를 만드는 대신 기존 리소스를 업데이트합니다.

    $today=Get-Date -Format "MM-dd-yyyy"
    $deploymentName="addSkuParameter-"+"$today"
    New-AzResourceGroupDeployment `
      -Name $deploymentName `
      -TemplateFile $templateFile `
      -storageName {your-unique-name} `
      -storageSKU Standard_GRS
    

    해당 배포를 완료합니다. 배포가 예상대로 성공합니다. 허용되는 값 목록으로 인해 템플릿의 사용자가 리소스에서 작동하지 않는 매개 변수 값을 전달할 수 없습니다. 잘못된 SKU를 제공하면 어떻게 되는지 살펴보겠습니다.

  2. 다음 명령을 실행하여 허용되지 않는 매개 변수로 템플릿을 배포합니다. storageSKU 매개 변수를 Basic으로 변경했습니다. storageName 매개 변수의 고유한 이름을 입력합니다. Azure에서 전역적으로 고유해야 하며, 3~24자를 포함하며 소문자, 숫자 및 하이픈만 포함해야 합니다. 이전 단원에서 만든 고유한 이름을 다시 사용할 수 있습니다. 이 경우 Azure는 새 리소스를 만드는 대신 기존 리소스를 업데이트합니다.

    $today=Get-Date -Format "MM-dd-yyyy"
    $deploymentName="addSkuParameter-"+"$today"
    New-AzResourceGroupDeployment `
      -Name $deploymentName `
      -TemplateFile $templateFile `
      -storageName {your-unique-name} `
      -storageSKU Basic
    

    해당 배포가 실패합니다. 오류를 확인합니다.

    배포 유효성 검사 오류를 보여 주는 터미널 창의 스크린샷.

ARM 템플릿에 출력 추가

여기서는 ARM 템플릿의 outputs 섹션에 추가하여 스토리지 계정 리소스의 엔드포인트를 출력합니다.

  1. Visual Studio Code의 azuredeploy.json 파일에서 다음과 같이 업데이트 "outputs":{}, 합니다.

    "outputs": {
      "storageEndpoint": {
        "type": "object",
        "value": "[reference(parameters('storageName')).primaryEndpoints]"
      }
    }
    
  2. 파일을 저장합니다.

출력을 사용하여 ARM 템플릿 배포

여기서는 템플릿을 배포하고 엔드포인트 출력을 JSON으로 확인합니다. storageName 매개 변수의 고유한 이름을 입력해야 합니다. Azure에서 전역적으로 고유해야 하며, 3~24자를 포함하며 소문자, 숫자 및 하이픈만 포함해야 합니다. 이전 단원에서 만든 고유한 이름을 다시 사용할 수 있습니다. 이 경우 Azure는 새 리소스를 만드는 대신 기존 리소스를 업데이트합니다.

  1. 다음 명령을 실행하여 템플릿을 배포합니다. {your-unique-name}을 고유한 문자열로 바꿔야 합니다.

    templateFile="azuredeploy.json"
    today=$(date +"%d-%b-%Y")
    DeploymentName="addoutputs-"$today
    
    az deployment group create \
      --name $DeploymentName \
      --template-file $templateFile \
      --parameters storageSKU=Standard_LRS storageName={your-unique-name}
    

    출력을 확인합니다.

    기본 엔드포인트 출력을 JSON으로 보여 주는 터미널 창의 스크린샷.

  1. 다음 명령을 실행하여 템플릿을 배포합니다. {your-unique-name}을 고유한 문자열로 바꿔야 합니다.

    $today=Get-Date -Format "MM-dd-yyyy"
    $deploymentName="addOutputs-"+"$today"
    New-AzResourceGroupDeployment `
      -Name $deploymentName `
      -TemplateFile $templateFile `
      -storageName {your-unique-name} `
      -storageSKU Standard_LRS
    

    출력을 확인합니다.

    기본 엔드포인트 출력을 JSON으로 보여 주는 터미널 창의 스크린샷.

출력 배포 확인

Azure Portal에서 addOutputs 배포로 이동합니다. 여기에서 출력도 찾을 수 있습니다.

왼쪽 메뉴에 출력 선택 항목이 표시된 Azure Portal의 스크린샷.