연습 - Azure Resource Manager 템플릿에 매개 변수 및 출력 추가
이 연습에서는 배포하는 동안 Azure 스토리지 계정 이름을 정의하는 매개 변수를 추가합니다. 그런 다음 허용되는 스토리지 계정 SKU를 정의하고 이 배포에 사용할 것을 정의하는 매개 변수를 추가합니다. 또한 배포 프로세스에서 나중에 사용할 수 있는 출력을 추가하여 ARM 템플릿(Azure Resource Manager 템플릿)에 유용성을 더합니다.
ARM 템플릿의 매개 변수 만들기
여기서는 런타임에 설정할 수 있는 매개 변수를 추가하여 ARM 템플릿의 유연성을 높입니다.
storageName 값의 매개 변수를 만듭니다.
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를 누릅니다.
resources및name값에서 둘 다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": {} }파일을 저장합니다.
매개 변수가 있는 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}
배포 확인
배포가 완료되면 브라우저의 Azure Portal로 돌아갑니다. 리소스 그룹으로 이동하고 이제 세 개의 성공한 배포가 있는지 확인합니다. 해당 링크를 선택합니다.
세 개의 배포가 모두 목록에 있습니다.
앞에서 살펴본 것처럼 addnameparameter 배포를 살펴봅니다.
허용되는 값을 제한하는 다른 매개 변수 추가
여기에서 매개 변수를 사용하여 매개 변수의 허용되는 값을 제한합니다.
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 템플릿은
//및/* */주석을 지원합니다.매개 변수를 사용하도록
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": {} }파일을 저장합니다.
ARM 템플릿 배포
여기에서 허용 목록에 있는 storageSKU 매개 변수를 사용하여 성공적으로 배포합니다. 그런 다음 허용 목록에 없는 storageSKU 매개 변수를 사용하여 템플릿 배포를 시도합니다. 두 번째 배포는 예상대로 실패합니다.
다음 명령을 실행하여 템플릿을 배포합니다.
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를 제공하면 어떻게 되는지 살펴보겠습니다.
다음 명령을 실행하여 허용되지 않는 매개 변수로 템플릿을 배포합니다.
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}해당 배포가 실패합니다. 오류를 확인합니다.
다음 명령을 실행하여 템플릿을 배포합니다.
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를 제공하면 어떻게 되는지 살펴보겠습니다.
다음 명령을 실행하여 허용되지 않는 매개 변수로 템플릿을 배포합니다.
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 섹션에 추가하여 스토리지 계정 리소스의 엔드포인트를 출력합니다.
Visual Studio Code의 azuredeploy.json 파일에서 다음과 같이 업데이트
"outputs":{},합니다."outputs": { "storageEndpoint": { "type": "object", "value": "[reference(parameters('storageName')).primaryEndpoints]" } }파일을 저장합니다.
출력을 사용하여 ARM 템플릿 배포
여기서는 템플릿을 배포하고 엔드포인트 출력을 JSON으로 확인합니다.
storageName 매개 변수의 고유한 이름을 입력해야 합니다. Azure에서 전역적으로 고유해야 하며, 3~24자를 포함하며 소문자, 숫자 및 하이픈만 포함해야 합니다. 이전 단원에서 만든 고유한 이름을 다시 사용할 수 있습니다. 이 경우 Azure는 새 리소스를 만드는 대신 기존 리소스를 업데이트합니다.
다음 명령을 실행하여 템플릿을 배포합니다. {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}출력을 확인합니다.
다음 명령을 실행하여 템플릿을 배포합니다. {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출력을 확인합니다.
출력 배포 확인
Azure Portal에서 addOutputs 배포로 이동합니다. 여기에서 출력도 찾을 수 있습니다.