Bicep이란?

완료됨

팀은 Azure Resource Manager가 어떻게 작동하는지 이해했으며 리소스 프로비전에 ARM 템플릿을 사용하기로 결정했습니다. JSON 또는 Bicep을 사용하는 두 가지 방법으로 ARM 템플릿을 작성할 수 있다는 것을 알고 있습니다. 사용할 언어에 대해 정보에 입각한 결정을 내릴 수 있도록 Bicep 템플릿에 대해 자세히 알아보려고 합니다.

이 단원에서는 Bicep 템플릿 언어란 무엇이고 이 언어가 템플릿 작성에 제공하는 이점은 무엇인지 알아봅니다.

Bicep 언어

Bicep은 선언적으로 Azure 리소스를 배포하는 데 사용되는 Resource Manager 템플릿 언어입니다. Bicep은 DSL(Domain-Specific Language)로, 특정 시나리오 또는 도메인을 위해 설계되었습니다. 애플리케이션을 작성하기 위한 표준 프로그래밍 언어로는 사용되지 않으며 Resource Manager 템플릿을 만드는 데만 사용됩니다. Bicep은 다른 프로그래밍 언어에 대한 경험에 관계 없이 이해하기 쉽고 배우기 쉽습니다. Bicep 템플릿에서는 모든 리소스 종류, API 버전 및 속성이 유효합니다.

참고

이미 JSON 템플릿 사용에 대해 살펴보았다면 Bicep 템플릿이 템플릿 만들기 환경을 간소화하는 것을 알 수 있을 것입니다. 이해하기 쉬운 구문을 제공하고, 모듈화 및 재사용 가능한 코드를 더 잘 지원하고, 형식 안전성을 향상시킵니다. JSON ARM 템플릿을 만들려면 복잡한 식이 필요하며 최종 결과는 자세한 정보가 될 수 있습니다.

Bicep의 이점

Bicep은 템플릿 작성 시 다음과 같이 JSON보다 향상된 다양한 기능을 제공합니다.

  • 간단한 구문: Bicep은 템플릿을 작성하는 더 간단한 구문을 제공합니다. 복잡한 함수를 사용하지 않고 매개 변수 및 변수를 직접 참조할 수 있습니다. 이름 및 기타 항목의 값을 조합하기 위해 문자열 보간이 연결 대신 사용됩니다. 복합 참조 문 대신 기호 이름을 사용하여 리소스의 속성을 직접 참조할 수 있습니다. 이러한 구문 향상은 Bicep 템플릿을 작성하고 읽는 데 모두 도움이 됩니다.

  • 모듈: 복잡한 템플릿 배포를 더 작은 모듈 파일로 분할하고 주 템플릿에서 참조할 수 있습니다. 이러한 모듈 덕분에 관리가 간편해지고 재사용 가능성이 높아집니다. 모델을 팀과 공유할 수도 있습니다.

  • 자동 종속성 관리: 대부분의 경우 Bicep은 리소스 간의 종속성을 자동으로 검색합니다. 이 프로세스는 템플릿 작성과 관련된 작업을 일부 경감합니다.

  • 형식 유효성 검사 및 intellisense: Visual Studio Code용 Bicep 확장은 모든 Azure 리소스 종류 API 정의에 대한 다양한 유효성 검사 및 IntelliSense 기능을 제공합니다. 이 기능은 보다 쉬운 작성 환경을 제공합니다.

Azure 스토리지 계정을 정의하는 다음 Bicep 템플릿 예제를 살펴보세요. 스토리지 계정의 이름은 템플릿에 의해 자동으로 생성됩니다. 배포 후 리소스 ID는 템플릿을 실행하는 사용자에게 출력으로 반환됩니다.

param location string = resourceGroup().location
param namePrefix string = 'storage'

var storageAccountName = '${namePrefix}${uniqueString(resourceGroup().id)}'
var storageAccountSku = 'Standard_RAGRS'

resource storageAccount 'Microsoft.Storage/storageAccounts@2022-05-01' = {
  name: storageAccountName
  location: location
  kind: 'StorageV2'
  sku: {
    name: storageAccountSku
  }
  properties: {
    accessTier: 'Hot'
    supportsHttpsTrafficOnly: true
  }
}

output storageAccountId string = storageAccount.id