매개 변수 파일을 사용하여 값 제공
앞 단원에서 배포를 만들 때 명령줄에 매개 변수 값을 제공했습니다. 이 방법은 Bicep 파일을 작성하고 테스트할 때 효과적이지만 매개 변수가 많거나 배포를 자동화해야 할 때는 효과적이지 않습니다. 이 단원에서는 매개 변수 값을 지정할 수 있는 다양한 방법에 대해 알아봅니다.
참고
이 단원의 명령은 개념을 설명하기 위해 표시된 것입니다. 명령을 아직 실행하지 마세요. 여기에서 학습하는 내용을 곧 연습할 예정입니다.
매개 변수 파일 만들기
매개 변수 파일을 사용하면 매개 변수 값을 하나의 집합으로 쉽게 지정할 수 있습니다. 매개 변수 파일 내에서 Bicep 파일의 매개 변수 값을 제공합니다. 매개 변수 파일은 JavaScript Object Notation(JSON) 언어를 사용하여 만듭니다. Bicep 템플릿을 배포할 때 매개 변수 파일을 제공할 수 있습니다. 매개 변수 파일은 다음과 같습니다.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"appServicePlanInstanceCount": {
"value": 3
},
"appServicePlanSku": {
"value": {
"name": "P1v3",
"tier": "PremiumV3"
}
},
"cosmosDBAccountLocations": {
"value": [
{
"locationName": "australiaeast"
},
{
"locationName": "southcentralus"
},
{
"locationName": "westeurope"
}
]
}
}
}
매개 변수 파일의 각 부분을 좀 더 자세히 살펴보겠습니다.
$schema
를 통해 Azure Resource Manager가 이 파일이 매개 변수 파일임을 이해할 수 있습니다.contentVersion
은 필요할 때 매개 변수 파일의 중요한 변경 내용을 추적하는 데 사용할 수 있는 속성입니다. 일반적으로 기본값인1.0.0.0
으로 설정됩니다.parameters
섹션에는 사용하려는 각 매개 변수와 값이 나열됩니다. 매개 변수 값을 개체로 지정해야 합니다. 개체에는 사용할 실제 매개 변수 값을 정의하는value
라는 이름의 속성이 있습니다.
일반적으로 각 환경마다 매개 변수 파일을 만듭니다. 매개 변수 파일 이름에 환경 이름을 포함하는 것이 좋습니다. 예를 들어, 개발 환경에는 main.parameters.dev.json이라는 매개 변수 파일이 있고, 프로덕션 환경에는 main.parameters.production.json이라는 이름이 지정되어 있을 수 있습니다.
참고
Bicep 템플릿에 있는 매개 변수의 값만 지정해야 합니다. 사용자가 배포를 만들면 Azure에서 매개 변수를 확인하고, Bicep 파일에 없는 매개 변수에 대한 값을 지정하려고 하면 오류를 표시합니다.
배포 시 매개 변수 파일 사용
az deployment group create
명령을 사용하여 새 배포를 만들 때 --parameters
인수에 사용할 매개 변수 파일 이름을 지정할 수 있습니다.
az deployment group create \
--template-file main.bicep \
--parameters main.parameters.json
New-AzResourceGroupDeployment
cmdlet을 사용하여 새 배포를 만들 때 -TemplateParameterFile
인수에 사용할 매개 변수 파일 이름을 지정할 수 있습니다.
New-AzResourceGroupDeployment `
-TemplateFile main.bicep `
-TemplateParameterFile main.parameters.json
매개 변수 값 재정의
지금까지 매개 변수 값을 지정하는 세 가지 방법인 기본값, 명령줄, 매개 변수 파일에 대해 배웠습니다. 다양한 방법을 사용하여 동일한 매개 변수에 다른 값을 지정하는 것이 일반적입니다. 기본값을 사용하여 작업할 때 이미 이 방식을 살펴보았습니다. 매개 변수의 기본값을 만들면서 명령줄을 사용하여 다른 값을 지정할 경우 명령줄 값이 우선 적용됩니다. 매개 변수 파일이 이 우선 순서에 어떻게 적용되는지 살펴보겠습니다.
매개 변수 파일은 기본값을 재정의하고 명령줄 매개 변수 값은 매개 변수 파일을 재정의하는 것을 알 수 있습니다.
이 방법이 어떻게 작동하는지 살펴보겠습니다. 다음은 각 기본값이 있는 세 개의 매개 변수를 정의하는 예제 Bicep 파일입니다.
param location string = resourceGroup().location
param appServicePlanInstanceCount int = 1
param appServicePlanSku object = {
name: 'F1'
tier: 'Free'
}
두 매개 변수 값은 재정의하지만 location
매개 변수의 값은 지정하지 않는 매개 변수 파일을 살펴보겠습니다.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"appServicePlanInstanceCount": {
"value": 3
},
"appServicePlanSku": {
"value": {
"name": "P1v3",
"tier": "PremiumV3"
}
}
}
}
배포를 만들 때 appServicePlanInstanceCount
값도 재정의합니다. 매개 변수 파일처럼 --parameters
인수를 사용하지만 재정의하려는 값을 고유한 값으로 추가합니다.
az deployment group create \
--template-file main.bicep \
--parameters main.parameters.json \
appServicePlanInstanceCount=5
배포를 만들 때 매개 변수 값 중 하나를 재정의합니다. 매개 변수 이름을 cmdlet에 인수인 것처럼 지정합니다.
New-AzResourceGroupDeployment `
-TemplateFile main.bicep `
-TemplateParameterFile main.parameters.json `
-appServicePlanInstanceCount 5
값이 어떻게 되는지 살펴보겠습니다.
매개 변수 | 값 | 설명 |
---|---|---|
location |
리소스 그룹의 위치 | Bicep 파일은 이 매개 변수를 기본값으로 지정하며, 재정의되지 않습니다. |
appServicePlanSku |
name 속성이 P1v3 와 PremiumV3 의 tier 로 설정된 개체 |
Bicep 파일의 기본값은 매개 변수 파일에 의해 재정의됩니다. |
appServicePlanInstanceCount |
5 |
배포 시점에 지정된 값은 매개 변수 파일의 값과 기본값을 재정의합니다. |
매개 변수 값을 지정하는 여러 방법을 혼합하여 사용하면 많은 위치에서 매개 변수 값을 중복하지 않아도 되고 필요한 위치를 재정의할 수도 있습니다.