다음을 통해 공유


CLI 명령 Bicep

이 문서에서는 Bicep CLI에서 사용할 수 있는 명령에 대해 설명합니다. Azure CLI 사용하거나 Bicep CLI 명령을 직접 호출하여 이러한 명령을 실행할 수 있습니다. 각 방법마다 고유한 설치 프로세스가 필요합니다. 설치에 대한 자세한 내용은 Azure CLIAzure PowerShell 참조하세요.

이 지침에서는 Azure CLI 명령을 실행하는 방법을 보여 줍니다. Azure CLI 명령을 실행할 때 az 시작합니다. Azure CLI 사용하지 않는 경우 각각의 시작 부분에 az 없이 명령을 실행합니다. 예를 들어, az bicep buildbicep build가 되고 az bicep versionbicep --version이 됩니다.

build

build 명령은 Bicep 파일을 ARM 템플릿(JSON Azure Resource Manager 템플릿)으로 변환합니다. 일반적으로 이 명령은 Bicep 파일을 배포할 때 자동으로 실행되므로 실행할 필요가 없습니다. Bicep 파일에서 만든 JSON ARM 템플릿을 보려면 수동으로 실행합니다.

다음 Bicep 기능을 사용하면 언어 버전 2.0 코드를 자동으로 생성할 수 있습니다.

다음 예제에서는 main.bicep이라는 Bicep 파일을 변환합니다.main.json이라는 ARM 템플릿에 연결합니다. 새 파일은 Bicep 파일과 동일한 디렉터리에 만들어집니다.

bicep build main.bicep

다음 예제에서는 main.json 다른 디렉터리에 저장합니다.

bicep build main.bicep --outdir c:\jsontemplates

다음 예제에서는 만들 파일의 이름과 위치를 지정합니다.

bicep build main.bicep --outfile c:\jsontemplates\azuredeploy.json

stdout에 파일을 인쇄하려면 다음을 사용합니다.

bicep build main.bicep --stdout

Bicep 파일에 외부 레지스트리를 참조하는 모듈이 포함된 경우 build 명령은 자동으로 restore 호출합니다. 이 restore 명령은 레지스트리에서 파일을 가져오고 로컬 캐시에 저장합니다.

참고 항목

restore 명령은 캐시를 새로 고치지 않습니다. 자세한 내용은 복원을 참조하세요.

자동 복원을 방지하려면 스위치를 사용합니다.--no-restore

bicep build --no-restore <bicep-file>

--no-restore 스위치를 사용하려면 Bicep CLI 버전 0.4.X 이상이 있어야 합니다.

외부 모듈 중 하나가 캐시되어 있지 않으면 --no-restore 스위치를 사용한 빌드 프로세스가 실패합니다.

The module with reference "br:exampleregistry.azurecr.io/bicep/modules/storage:v1" hasn't been restored.

이 오류가 발생하면 스위치 없이 build 명령을 실행 --no-restore 하거나 먼저 실행 bicep restore 합니다.

빌드 매개 변수

build-params 명령은 파일을 JSON 매개 변수 파일로 빌드합니다 .bicepparam .

bicep build-params params.bicepparam

이 명령은 params.bicepparam 매개 변수 파일을 params.json JSON 매개 변수 파일로 변환합니다.

콘솔

console 명령은 Bicep CLI v0.42.1 이상에서 사용할 수 있습니다. Bicep 식에 대한 대화형 REPL(읽기Eval-Print 루프) 환경을 제공합니다. 대화형 콘솔 세션에서 Bicep 함수 및 식을 실험할 수 있습니다. 특히 식, 함수 및 사용자 정의 함수와 같은 Bicep 논리를 작성하거나 테스트할 때 유용합니다. 다음 기능을 지원합니다.

  • 사용자식 계산: Bicep 식을 입력하고 평가된 결과를 즉시 확인합니다.
  • 변수 선언: 'var name = 식 구문을 사용하여 변수를 정의하고 후속 식에서 다시 사용
  • 여러 줄 입력: 자동 구조적 완성 검색을 사용하는 복잡한 여러 줄 식 지원
  • 구문 강조 표시: 입력 및 출력에 대한 실시간 구문 강조 표시

명령에 console 는 다음과 같은 제한 사항이 있습니다.

  • Azure 컨텍스트가 필요한 식에 대한 지원 없음(예: resourceGroup()
  • for-loop 식에 대한 지원 없음(예: [for i in range(0, x): i]
  • 콘솔 세션 간의 영구 상태 없음
  • 완료 지원 없음

다음 명령을 사용하여 Bicep 콘솔 세션을 시작합니다.

bicep console

콘솔을 종료하려면 명령을 누르 ESC 거나 사용합니다 exit .

예제

단순 식

> 1 + 2
3

> 'Hello, ${'World!'}'
'Hello, World!'

> length(['a', 'b', 'c'])
3

변수 선언

> var myName = 'John'
> var greeting = 'Hello, ${myName}!'
> greeting
'Hello, John!'

여러 줄 식

콘솔은 식이 구조적으로 완료되는 시기를 자동으로 감지합니다.

> var config = {
  name: 'myApp'
  version: '1.0.0'
  settings: {
    debug: true
    timeout: 30
  }
}
> config.settings.debug
true

복합 식

람다
> var users = [
  { name: 'Alice', age: 30 }
  { name: 'Bob', age: 25 }
]
> map(users, user => user.name)
['Alice', 'Bob']

> filter(users, user => user.age > 26)
[
  {
    age: 30
    name: 'Alice'
  }
]
사용자 정의 형식 및 함수
> type PersonType = {
  name: string
  age: int
}
> func sayHi(person PersonType) string => 'Hello ${person.name}, you are ${person.age} years old!'
> var alice = {
  name: 'Alice'
  age: 30
}
> [ sayHi(alice), sayHi({ name: 'Bob', age: 25 })]
[
  'Hello Alice, you are 30 years old!'
  'Hello Bob, you are 25 years old!'
]

파일에서 콘텐츠 로드

또한 Bicep 콘솔은 load*() 함수 지원합니다. 함수를 평가할 load*() 때 명령이 bicep console 실행되는 디렉터리가 현재 디렉터리로 사용됩니다.

다음 예제에서는 loadDirectoryFileInfo() 사용하여 디렉터리의 모든 Bicep 파일에 대한 정보를 로드하는 방법을 보여줍니다.

> loadDirectoryFileInfo('./modules/', '*.bicep')
[
  {
    relativePath: 'C:/Bicep/modules/appService.bicep'
    baseName: 'appService.bicep'
    extension: '.bicep'
  }
]

파이핑 및 표준 입력/출력 리디렉션

콘솔 명령은 파이프 또는 리디렉션된 표준 입력을 통해 제공되는 식을 평가하여 다음과 같은 시나리오를 사용하도록 설정합니다.

  • 에코를 통해 식 텍스트 전달
  • 콘솔에 식을 공급하는 스크립트 작성
  • 생성되거나 변환된 Bicep 조각의 신속한 테스트

Powershell:

# piped input
"parseCidr('10.144.0.0/20')" | bicep console

Bash:

# piped input
echo "parseCidr('10.144.0.0/20')" | bicep console
# stdin redirection from file content
bicep console < test.txt

여러 줄 입력도 지원됩니다.

"{
> foo: 'bar'
> }.foo" | bicep console

'bar'가 출력됩니다.

출력 리디렉션도 지원됩니다.

"toObject([{name:'Evie', age:4},{name:'Casper', age:3}], x => x.name)" | bicep console > output.json
more output.json

출력은 다음과 같습니다.

{
  Evie: {
    name: 'Evie'
    age: 4
  }
  Casper: {
    name: 'Casper'
    age: 3
  }
}

디컴파일

decompile 명령은 JSON ARM 템플릿을 Bicep 파일로 변환합니다.

bicep decompile main.json

이 명령은 main.json 동일한 디렉터리에 main.bicep이라는 파일을 만듭니다. 인 경우 bicep 동일한 디렉터리에 있으므로 --force 스위치를 사용하여 기존 Bicep 파일을 덮어씁니다.

이 명령을 사용하는 방법에 대한 자세한 내용은 JSON ARM 템플릿을 Bicep 참조하세요.

디컴파일 매개 변수

decompile-params 명령은 JSON 매개 변수 파일을 매개 변수 파일로 .bicepparam 디컴파일합니다.

bicep decompile-params azuredeploy.parameters.json --bicep-file ./dir/main.bicep

이 명령은 azuredeploy.parameters.json 매개 변수 파일을 azuredeploy.parameters.bicepparam 파일로 디컴파일합니다. --bicep-file 사용하여 using 선언에서 참조되는 Bicep 파일의 경로(.bicepparam 파일 기준)를 지정합니다.

format

format 명령은 권장 스타일 규칙을 따르도록 Bicep 파일의 형식을 지정합니다. Bicep 파일의 코드 포맷터 또는 "예쁜"으로 간주합니다. Visual Studio Code SHIFT+ALT+F 바로 가기와 동일한 함수가 있습니다.

bicep format main.bicep

generate-params

generate-params 명령은 지정된 Bicep 파일에서 매개 변수 파일을 빌드하고 기존 매개 변수 파일이 있는 경우 업데이트합니다.

bicep generate-params main.bicep --output-format bicepparam --include-params all

이 명령은 main.bicepparam이라는 Bicep 매개 변수 파일을 만듭니다. 매개 변수 파일에는 기본값으로 구성되었는지 여부에 관계없이 Bicep 파일의 모든 매개 변수가 포함됩니다.

bicep generate-params main.bicep --outfile main.parameters.json

이 명령은 main.parameters.json 매개 변수 파일을 만듭니다. 매개 변수 파일에는 Bicep 파일에 기본값이 구성되어 있지 않은 매개 변수만 포함됩니다.

설치

install 명령은 Bicep CLI를 로컬 환경에 추가하며 Azure CLI 통해서만 사용할 수 있습니다. 자세한 내용은 Bicep 도구 제거 참조하세요.

최신 버전을 설치하려면 다음을 사용하세요.

N/A

특정 버전을 설치하려면 다음 명령을 사용합니다.

N/A

jsonrpc

jsonrpc 명령은 JSON-RPC 인터페이스를 사용하여 Bicep CLI를 시작하여 Bicep 파일과 프로그래밍 방식으로 빠르게 상호 작용할 수 있도록 합니다. 자세한 사용, 유선 형식, 사용 가능한 메서드 및 연결 옵션은 Bicep CLI jsonrpc 명령 참조하세요.

린트

lint 명령은 Bicep 파일의 오류 및 linter 규칙 위반을 반환합니다.

bicep lint main.bicep

Bicep 파일에 외부 레지스트리를 참조하는 모듈이 포함된 경우 lint 명령은 자동으로 restore 호출합니다. 이 restore 명령은 레지스트리에서 파일을 가져오고 로컬 캐시에 저장합니다.

참고 항목

restore 명령은 캐시를 새로 고치지 않습니다. 자세한 내용은 복원을 참조하세요.

자동 복원을 방지하려면 스위치를 사용합니다.--no-restore

bicep lint --no-restore <bicep-file>

외부 모듈 중 하나가 캐시되어 있지 않으면 --no-restore 스위치를 사용한 lint 프로세스가 실패합니다.

The module with reference "br:exampleregistry.azurecr.io/bicep/modules/storage:v1" has not been restored.

이 오류가 발생하면 lint 스위치 없이 --no-restore 명령을 실행하거나, 먼저 bicep restore를 실행합니다.

list-versions

list-versions 명령은 사용 가능한 모든 버전의 Bicep CLI를 반환합니다. 이 명령을 사용하여 새 버전을 업그레이드하거나 설치할 것인지 확인합니다. 이 명령은 Azure CLI 통해서만 사용할 수 있습니다.

N/A

publish

publish 명령은 레지스트리에 모듈을 추가합니다. Azure 컨테이너 레지스트리가 있어야 하며 레지스트리에 게시하는 계정에 올바른 권한이 있어야 합니다. 모듈 레지스트리 설정에 대한 자세한 내용은 Bicep 모듈에 프라이빗 레지스트리 사용 참조하세요. 모듈을 게시하려면 계정에 레지스트리에 액세스할 수 있는 올바른 프로필과 사용 권한이 있어야 합니다. Bicep 구성 파일 레지스트리에 인증하기 위한 프로필 및 자격 증명 우선 순위를 구성할 수 있습니다.

레지스트리에 파일을 게시한 후 모듈에서 참조할 수 있습니다.

publish 명령과 --documentationUri/-d 매개 변수를 사용하려면 Bicep CLI 버전 0.14.X 이상이 있어야 합니다.

레지스트리에 모듈을 게시하려면 다음을 사용합니다.

bicep publish <bicep-file> --target br:<registry-name>.azurecr.io/<module-path>:<tag> --documentationUri <documentation-uri>

예시:

bicep publish storage.bicep --target br:exampleregistry.azurecr.io/bicep/modules/storage:v1 --documentationUri https://www.contoso.com/exampleregistry.html

명령은 publish bicepconfig.json 파일에 지정된 별칭을 인식하지 않습니다. 전체 모듈 경로를 제공합니다.

Warning

동일한 대상에 게시하면 이전 모듈을 덮어씁니다. 업데이트할 때 버전을 증분합니다.

복원

Bicep 파일에서 레지스트리에 게시하는 모듈을 사용하는 경우 restore 명령은 레지스트리에서 필요한 모든 모듈의 복사본을 가져옵니다. 해당 복사본을 로컬 캐시에 저장합니다. Bicep 파일은 외부 파일을 로컬 캐시에서 사용할 수 있는 경우에만 빌드할 수 있습니다. 일반적으로 빌드 프로세스에 의해 복원이 자동으로 트리거되므로 복원을 실행할 필요가 없습니다.

외부 모듈을 로컬 캐시로 복원하려면 계정에 레지스트리에 액세스할 수 있는 올바른 프로필과 사용 권한이 있어야 합니다. Bicep 구성 파일의 레지스트리에 인증하기 위해 프로파일 및 자격 증명 우선 순위 구성할 수 있습니다.

restore 명령을 사용하려면 Bicep CLI 버전 0.14.X 이상이 있어야 합니다.

파일에 대한 외부 모듈을 수동으로 복원하려면 다음을 사용합니다.

bicep restore <bicep-file>

제공하는 Bicep 파일은 배포하려는 파일입니다. 레지스트리에 연결되는 모듈이 포함되어야 합니다. 예를 들어, 다음 파일을 복원할 수 있습니다.

module stgModule 'br:exampleregistry.azurecr.io/bicep/modules/storage:v1' = {
  name: 'storageDeploy'
  params: {
    storagePrefix: 'examplestg1'
  }
}

로컬 캐시는 다음에서 찾을 수 있습니다.

  • Windows

    %USERPROFILE%\.bicep\br\<registry-name>.azurecr.io\<module-path\<tag>
    
  • Linux

    /home/<username>/.bicep
    
  • Mac에서

    ~/.bicep
    

restore 명령은 모듈이 이미 캐시된 경우 캐시를 새로 고치지 않습니다. 캐시를 새로 고치려면 캐시에서 모듈 경로를 삭제하거나 명령과 함께 스위치를 --forcerestore 사용할 수 있습니다.

snapshot

Bicep CLI v0.41.2 이상에서는 snapshot 명령을 사용하여 .bicepparam 파일에서 Bicep 배포의 정규화된 결정적 표현을 만들 수 있습니다. 이 스냅샷을 이후 스냅샷과 비교하여 Azure 배포하지 않고도 리팩터링으로 인해 발생하는 변경 내용을 이해할 수 있습니다. 이 명령은 다음 작업에 특히 유용합니다.

  • 시각적 차이: 리팩터링(예: 코드를 모듈로 이동)이 기본 리소스 정의를 변경하는 방법을 정확하게 확인합니다.
  • 복합 식: 배포 전에 실제로 계산되는 복잡한 문자열 또는 변수를 이해합니다.
  • CI/CD 유효성 검사: 끌어오기 요청 중에 인프라 논리의 의도하지 않은 변경 내용을 자동으로 catch합니다.

스냅샷 만들기

이 명령은 파일을 생성합니다 .snapshot.json . 이 파일은 "정규화"되므로 모듈 경계와 같은 노이즈를 제거하므로 리소스 자체에 집중할 수 있습니다.

bicep snapshot --mode overwrite <bicep-param-file>

다음 JSON 파일은 스냅샷 예제를 보여줍니다.

{
  "predictedResources": [
    {
      "id": "[format('/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Storage/storageAccounts/stmyappstorage001', subscription().subscriptionId, resourceGroup().name)]",
      "type": "Microsoft.Storage/storageAccounts",
      "name": "stmyappstorage001",
      "apiVersion": "2025-01-01",
      "location": "eastus",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2"
    }
  ],
  "diagnostics": []
}

변경 내용 유효성 검사

스냅샷을 만든 후 유효성 검사 모드에서 명령을 실행합니다. 현재 Bicep 코드를 저장된 스냅샷과 비교하고 what-if 명령과 비슷하지만 완전히 로컬인 시각적 차이도 표시합니다.

bicep snapshot --mode validate <bicep-param-file>

샘플 출력은 다음과 같습니다.

PS C:\bicep> bicep snapshot --mode validate main.bicepparam
Snapshot validation failed. Expected no changes, but found the following:

Scope: <unknown>

  ~ [format('/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Storage/storageAccounts/stmyappstorage001', subscription().subscriptionId, resourceGroup().name)]
    ~ apiVersion: "2025-01-01" => "2025-06-01"
    ~ sku.name:   "Standard_LRS" => "Standard_GRS"

"스냅샷 유효성 검사 실패"는 두 스냅샷 간의 차이를 나타냅니다.

BICEP CLI 스냅샷 및 다음과 같은 차이점이 있는 경우:

특징 bicep snapshot az deployment group what-if
실행 로컬 전용 (오프라인) 클라우드 기반 (온라인)
비교 코드와 저장된 파일 비교 코드와 라이브 Azure 상태 비교
속도 매우 빠름 느리기(API 호출 필요)
사용 사례 리팩터링 및 논리 테스트 최종 배포 전 검사

컨텍스트 제공

Bicep 스냅샷을 실행할 때 CLI는 코드의 로컬 평가를 수행합니다. Azure 통신하지 않으므로 클라우드에 구독 ID 또는 현재 리소스 그룹 이름을 "요청"할 수 없습니다.

코드에서 환경 함수(예: subscription().id)를 사용하는 경우 CLI 인수를 통해 특정 컨텍스트를 제공하지 않는 한 스냅샷이 실패하거나 자리 표시자를 반환합니다.

실제 배포 환경을 시뮬레이션하려면 다음 플래그를 전달할 수 있습니다.

Argument 목적 예제 값
--subscription-id 반환된 값을 바꿉니다. subscription().subscriptionId 00000000-1111-2222-3333-444444444444
--resource-group 반환된 값을 바꿉니다. resourceGroup().name my-production-rg
--location 에 대한 기본 위치를 설정합니다. deployment().location westeurope
--tenant-id 반환된 값을 바꿉니다. tenant().tenantId 72f988bf-86f1-41af-91ab-2d7cd011db47
--management-group 반환된 값을 바꿉니다. managementGroup().name my-corp-mg
bicep snapshot main.bicepparam \
  --subscription-id 00000000-0000-0000-0000-000000000000 \
  --resource-group my-temp-rg \
  --location eastus \
  --mode overwrite

Upgrade(업그레이드)

upgrade 명령은 설치된 버전을 최신 버전으로 업데이트합니다. 이 명령은 Azure CLI 통해서만 사용할 수 있습니다.

N/A

version

version 명령은 설치된 버전을 반환합니다.

bicep --version

Bicep CLI를 설치하지 않은 경우 Bicep CLI를 찾을 수 없다는 오류 메시지가 표시됩니다.

이 명령은 버전 번호를 표시합니다.

Bicep CLI version 0.29.45 (57a44c0230)

다음 단계

Bicep 파일 배포에 대한 자세한 내용은 다음을 참조하세요.