Bicep 배포를 위한 매개 변수 파일 만들기

Bicep 매개 변수 파일을 사용하면 별도의 파일에서 매개 변수 값을 정의하고 이를 main.bicep에 전달할 수 있습니다. 구독, 환경 또는 지역에 따라 달라지는 값에 적합합니다.

주요 이점은 다음과 같습니다.

  • 유연성을 유지하면서 IaC(Infrastructure as Code) 배포에서 일관성을 유지합니다.
  • 핵심 인프라를 변경하지 않고 비프로덕션 환경의 크기를 조정하는 것과 같은 비용 최적화를 지원합니다.
  • 매개 변수 파일을 소스 제어에 유지하고 각 배포 단계에 적절한 파일을 전달하여 간소화된 CI/CD 파이프라인을 사용하도록 설정합니다.

참고

Bicep 매개 변수 파일은 Bicep CLI 버전 0.18.4 이상, Azure CLI 버전 2.47.0 이상 및 Azure PowerShell 버전 9.7.1 이상에서만 지원됩니다.

다음 중 하나를 사용할 수 있습니다.

  • 네이티브 Bicep 매개 변수 파일(.bicepparam 확장명) 또는
  • 표준 JSON 매개 변수 파일입니다.

Bicep 매개 변수 파일의 파일 확장명은 .bicepparam입니다.

여러 환경에 배포하려면 둘 이상의 매개 변수 파일을 만듭니다. 여러 개의 매개 변수 파일을 사용하는 경우 용도에 따라 레이블을 지정합니다. 예를 들어, 리소스를 배포하려면 개발에는 main.dev.bicepparam 레이블을 사용하고 프로덕션에는 main.prod.bicepparam 레이블을 사용합니다.

Bicep 매개 변수 파일을 Bicep 파일을 사용하여 배포할 수 있는 JSON 매개 변수 파일로 컴파일할 수 있습니다. 자세한 내용은 build-params를 참조하세요. JSON 매개 변수 파일을 Bicep 매개 변수 파일로 디컴파일할 수도 있습니다. 자세한 내용은 decompile-params를 참조하세요.

Warning

매개 변수 파일은 매개 변수 값을 일반 텍스트로 저장합니다. 보안상의 이유로 암호와 같은 중요한 값과 함께 이 방법을 사용하지 마세요. 민감한 값이 포함된 매개변수를 전달해야 하는 경우 해당 값을 키 볼트에 저장하세요. 매개 변수 파일에 중요한 값을 추가하는 대신 getSecret 함수를 사용하여 해당 값을 검색합니다. 자세한 내용은 Bicep 배포 중에 Azure Key Vault를 사용하여 비밀을 매개 변수로 전달을 참조하세요.

매개 변수 파일 정의

매개 변수 파일은 다음 형식을 사용합니다.

using '<path>/<file-name>.bicep' | using none
extends '<path>/<file-name>.bicepparam' 

type <user-defined-data-type-name> = <type-expression>

var <variable-name> <data-type> = <variable-value>

import {<symbol_name> [as <alias_name>], ...} from '<bicep_file_name>'

param <first-parameter-name> = <first-value>
param <second-parameter-name> = <second-value>
param <third-parameter-name> = <variable-name>

매개 변수 이름과 값을 정의하는 방법을 확인하려면 Bicep 파일을 엽니다. Bicep 파일의 매개 변수 섹션을 확인합니다. 다음 예에서는 main.bicep이라는 Bicep 파일의 매개 변수를 보여 줍니다.

@maxLength(11)
param storagePrefix string

@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_ZRS'
  'Premium_LRS'
])
param storageAccountType string = 'Standard_LRS'

매개 변수 파일에서 각 매개 변수의 이름을 사용합니다. 매개 변수 파일의 매개 변수 이름은 Bicep 파일의 매개 변수 이름과 일치해야 합니다.

using 'main.bicep'

param storagePrefix
param storageAccountType

using 문은 Bicep 매개 변수 파일을 Bicep 파일에 연결합니다. 여러 매개 변수 파일을 단일 Bicep 파일에 연결할 수 있습니다. 각 매개 변수 파일은 일반적으로 using 사용하여 특정 Bicep 파일에 연결됩니다.

매개 변수 파일을 특정 Bicep 파일에 연결하지 않으려면 using none 사용합니다. Bicep CLI 버전 0.31.0 이상에서는 using none 기능을 지원합니다.

자세한 내용은 using 문을 참조하세요.

extends 문은 기본 .bicepparam 파일에서 매개변수를 상속하므로 현재 매개변수 파일에서 매개변수 값을 재사용하고 선택적으로 재정의할 수 있습니다. 자세한 내용은 Extendable 매개 변수 파일을 참조하세요.

Visual Studio Code param 키워드를 입력하면 연결된 Bicep 파일에서 사용 가능한 매개 변수 및 해당 설명을 입력하라는 메시지가 표시됩니다.

사용 가능한 매개변수 프롬프트의 스크린샷.

param 이름 위에 마우스를 올리면 매개 변수 데이터 형식과 설명을 볼 수 있습니다.

매개변수 데이터 형식 및 설명의 스크린샷.

매개 변수 형식을 검토합니다. 매개 변수 파일의 매개 변수 형식은 Bicep 파일과 동일한 형식을 사용해야 합니다. 이 예에서 두 매개 변수 형식은 모두 문자열입니다.

using 'main.bicep'

param storagePrefix = ''
param storageAccountType = ''

기본값을 포함하는 매개 변수가 있는지 Bicep 파일을 확인합니다. 매개 변수에 기본값이 있는 경우 매개 변수 파일에 값을 제공할 수 있지만 필요하지는 않습니다. 매개 변수 파일 값은 Bicep 파일의 기본값을 재정의합니다.

using 'main.bicep'

param storagePrefix = '' // This value must be provided.
param storageAccountType = '' // This value is optional. Bicep uses default value if not provided.

최대 길이 등의 제한 사항이 있는지 알아보려면 Bicep 파일의 허용 값을 확인합니다. 허용되는 값은 매개 변수에 제공할 수 있는 값의 범위를 지정합니다. 이 예에서 storagePrefix는 최대 11자일 수 있으며 storageAccountType은 허용된 값을 지정해야 합니다.

using 'main.bicep'

param storagePrefix = 'storage'
param storageAccountType = 'Standard_ZRS'

다음 예에서는 문자열, 정수, 부울, 배열, 개체 등 다양한 매개 변수 형식의 형식을 보여 줍니다.

using './main.bicep'

param exampleString = 'test string'
param exampleInt = 2 + 2
param exampleBool = true
param exampleArray = [
  'value 1'
  'value 2'
]
param exampleObject = {
  property1: 'value 1'
  property2: 'value 2'
}

Bicep 구문을 사용하여 개체배열을 선언합니다.

식을 매개 변수 값으로 사용할 수 있습니다. 예를 들면 다음과 같습니다.

using './main.bicep'

param storageName = toLower('MyStorageAccount')
param intValue = 2 + 2

환경 변수를 매개 변수 값으로 참조할 수 있습니다. 예를 들면 다음과 같습니다.

using './main.bicep'

param intFromEnvironmentVariables = int(readEnvironmentVariable('intEnvVariableName'))

변수를 정의하고 사용할 수 있습니다. 파일에서 변수를 사용하려면 .bicepparam 버전 0.21.X 이상을 사용해야 합니다. 다음 예제를 참조하세요.

using './main.bicep'

var storagePrefix = 'myStorage'
param primaryStorageName = '${storagePrefix}Primary'
param secondaryStorageName = '${storagePrefix}Secondary'
using './main.bicep'

var testSettings = {
  instanceSize: 'Small'
  instanceCount: 1
}

var prodSettings = {
  instanceSize: 'Large'
  instanceCount: 4
}

param environmentSettings = {
  test: testSettings
  prod: prodSettings
}

사용자 정의 데이터 형식을 정의할 수 있습니다. 예를 들면 다음과 같습니다.

using './main.bicep'

// Define a reusable type for tags with optional properties
type TagValues = {
  environment: 'dev' | 'test' | 'production'
  project: string
}

var tagsExample TagValues = {
  environment: 'dev'
  project: 'bicep-sample'
}

param tags = tagsExample

Bicep 파일에서 변수, 사용자 정의 데이터 형식 및 사용자 정의 함수를 가져올 수도 있습니다. 자세한 내용은 가져오기를 참조하세요.

확장 가능한 매개 변수 파일

자세한 내용은 매개 변수 파일 확장을 참조하세요.

매개 변수 파일 생성 및 빌드

Visual Studio Code나 Bicep CLI를 사용하여 매개 변수 파일을 만들 수 있습니다. 두 도구 모두 Bicep 파일을 사용하여 매개 변수 파일을 생성할 수 있습니다. Visual Studio Code 메서드의 경우 매개 변수 파일 생성을 참조하고 Bicep CLI 메서드의 경우 매개 변수 파일 생성을 참조하세요.

Bicep CLI에서 Bicep 매개 변수 파일을 JSON 매개 변수 파일로 빌드할 수 있습니다. 자세한 내용은 빌드 매개 변수 파일을 참조하세요.

매개 변수 파일을 사용하여 Bicep 파일 배포

동일한 배포 작업에서 인라인 매개 변수 및 로컬 매개 변수 파일을 사용할 수 있습니다. 예를 들어 로컬 매개 변수 파일에서 일부 값을 지정하고 배포하는 동안 인라인으로 다른 값을 추가할 수 있습니다. 로컬 매개 변수 파일 및 인라인에서 매개 변수에 대한 값을 제공하는 경우 인라인 값이 우선합니다.

현재 외부 Bicep 매개 변수 파일은 지원되지 않지만, 파일에 URI를 제공하여 외부 JSON 매개 변수 파일을 사용할 수 있습니다. 외부 매개 변수 파일을 사용하는 경우 모든 매개 변수 값을 외부 파일에 제공합니다. 외부 파일을 사용하는 경우 다른 값을 인라인이나 로컬 파일에서 전달할 수 없으며 모든 인라인 매개 변수는 무시됩니다.

다음 예제에서는 외부 JSON 매개 변수 파일을 사용하는 Azure CLI 예제를 보여줍니다.

az deployment group create \
  --resource-group my-rg \
  --template-file main.bicep \
  --parameters https://storageaccount.blob.core.windows.net/templates/main.parameters.json

Azure CLI

Azure CLI에서 Bicep 파일 배포와 함께 매개 변수 파일을 전달할 수 있습니다.

Azure CLI 버전 2.53.0 이상 및 Bicep CLI 버전 0.22.X 이상을 사용하여 Bicep 매개 변수 파일을 배포할 수 있습니다. Bicep 매개 변수 파일 내에서 using 문을 사용하면 --template-file 스위치에 Bicep 매개 변수 파일을 지정할 때 --parameters 스위치를 제공할 필요가 없습니다.

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --parameters storage.bicepparam

동일한 배포 작업에서 인라인 매개 변수 및 위치 매개 변수 파일을 사용할 수 있습니다. 예를 들면 다음과 같습니다.

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --parameters storage.bicepparam \
  --parameters storageAccountType=Standard_LRS

자세한 내용은 Azure CLI를 사용하여 Bicep 파일 배포를 참조하세요.

Azure PowerShell

Azure PowerShell에서 TemplateParameterFile 매개 변수를 사용하여 로컬 매개 변수 파일을 전달합니다.

New-AzResourceGroupDeployment `
  -Name ExampleDeployment `
  -ResourceGroupName ExampleResourceGroup `
  -TemplateFile C:\MyTemplates\storage.bicep `
  -TemplateParameterFile C:\MyTemplates\storage.bicepparam

동일한 배포 작업에서 인라인 매개 변수 및 위치 매개 변수 파일을 사용할 수 있습니다. 예를 들면 다음과 같습니다.

New-AzResourceGroupDeployment `
  -Name ExampleDeployment `
  -ResourceGroupName ExampleResourceGroup `
  -TemplateFile C:\MyTemplates\storage.bicep `
  -TemplateParameterFile C:\MyTemplates\storage.bicepparam `
  -storageAccountType Standard_LRS

자세한 내용은 Azure PowerShell을 사용하여 Bicep 파일 배포를 참조하세요. .bicep 파일을 배포하려면 Azure PowerShell 버전 5.6.0 이상이 필요합니다.

Bicep 파일에 Azure PowerShell 명령의 매개 변수 중 하나와 동일한 이름의 매개 변수가 포함되어 있는 경우 Azure PowerShell은 Bicep 파일의 매개 변수를 FromTemplate 접미사로 표시합니다. 예를 들어, Bicep 파일의 ResourceGroupName이라는 매개 변수가 ResourceGroupNameNew-AzResourceGroupDeployment 매개 변수와 충돌하는 경우 에 대한 값을 제공하라는 메시지가 표시됩니다. 이와 같은 혼동을 방지하려면 배포 명령에 사용되지 않은 매개 변수 이름을 사용합니다.