매개 변수 파일을 사용하여 값 제공

완료됨

앞 단원에서 배포를 만들 때 명령줄에 매개 변수 값을 제공했습니다. 이 방법은 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 속성이 P1v3PremiumV3tier로 설정된 개체 Bicep 파일의 기본값은 매개 변수 파일에 의해 재정의됩니다.
appServicePlanInstanceCount 5 배포 시점에 지정된 값은 매개 변수 파일의 값과 기본값을 재정의합니다.

매개 변수 값을 지정하는 여러 방법을 혼합하여 사용하면 많은 위치에서 매개 변수 값을 중복하지 않아도 되고 필요한 위치를 재정의할 수도 있습니다.