이번 포스팅에서는 bicep을 리뷰하도록 한다. 이두박근(헬스) 키워드로 검색해 오셨다면 다른 글을 보시길 바랍니다.

 

Bicep - Azure 클라우드 리소스 배포를 위한 언어

 

 

Bicep이란 무엇인가?

DSL(Domain-specific language)으로 Azure 리소스를 배포할때 사용되는 선언적 문법(declarative syntax).

간략히, 재활용하기 쉽고, 읽기 쉬운 코드를 제공해 IaC(Infrastructure as Code)를 더 간결하게 구성 가능하다.

개인적으로, 훌륭한 vscode와 연동되는 tooling에도 높은 점수를 주고 싶다.

 

코드로 예를 들어,

// 파라미터 처리
// bicep
param demoParam string = 'Contoso'

// JSON
"parameters": {
  "demoParam": {
    "type": "string",
    "defaultValue": "Contoso"
  }
}


// 일반적인 변수 선언
// bicep
var demoVar = 'example value'

// JSON
"variables": {
  "demoVar": "example value"
},

Compare syntax for Azure Resource Manager templates in JSON and Bicep - Azure Resource Manager | Microsoft Docs

 

Bicep 코드 먼저 보고 실행

az cli로 설치

Bicep cli 설치 과정은 az cli 2.20.0 이상을 이용한다. bicep 설치 문서 링크

az bicep install

 

vscode extension 설치

vscode extension에서 bicep으로 검색해 설치한다.

bicep-vscode.png

 

vscode에서 main.bicep 코드 생성

storage account를 하나 생성하는 bicep 코드

resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = {
  name: 'dwteststor09'
  location: 'koreacentral'
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
  }
}

 

bicep 코드 실행 / 결과

# Resouce group을 cli로 생성
az group create --name rg-bicep --location koreacentral

# bicep 코드 실행
az deployment group create --resource-group rg-bicep --template-file main.bicep

 

bicep-cli.png

여기까지 보면 terraform과의 관계와 기존 JSON 방식으로 처리되던 ARM template과의 관계가 궁금해진다.

 

Terraform과의 관계 및 비교

공식 FAQ 문서에서 관련 내용을 다루고 있다.

Why not focus your energy on Terraform or other third-party Infrastructure as Code offerings?

Different users prefer different configuration languages and tools. We want to make sure all of these tools provide a great experience on Azure. Bicep is part of that effort.

If you're happy using Terraform, there's no reason to switch. Microsoft is committed to making sure Terraform on Azure is the best it can be.

For customers who have selected ARM templates, we believe Bicep improves the authoring experience. Bicep also helps with the transition for customers who haven't adopted infrastructure as code.

Bicep language for deploying Azure resources - Azure Resource Manager | Microsoft Docs

Terraform에 익숙하고 잘 쓰고 있다면, 계속 잘 쓰도록 하자.

추가적인 비교 관련 상세 정보를 원한다면 아래 링크도 참조해 보자.

Bicep and Terraform compared · Thorsten Hans' blog (thorsten-hans.com)

 

JSON으로 처리되던 ARM template의 미래는?

질문에 대해 공식 FAQ에서 제공하고 있다.

Why create a new language instead of using an existing one?

You can think of Bicep as a revision to the existing ARM template language rather than a new language. The syntax has changed, but the core functionality and runtime remain the same.

Before developing Bicep, we considered using an existing programming language. We decided our target audience would find it easier to learn Bicep rather than getting started with another language.

Bicep language for deploying Azure resources - Azure Resource Manager | Microsoft Docs

결국 JSON ARM template에서 core는 변하지 않고 DSL만 변경될 뿐이다. 취사선택하여 사용하자.

 

기존 JSON으로 생성한 ARM template을 bicep으로 decompile 하는 방법

ARM template 파일을 bicep으로 decompile 가능하다.

Decompile ARM template JSON to Bicep - Azure Resource Manager | Microsoft Docs

 

az bicep decompile --file main.json

이렇게 수행해 decompile하여, main.json에서 main.bicep을 생성 가능하다.

 

참고자료

Bicep language for deploying Azure resources - Azure Resource Manager | Microsoft Docs

Compare syntax for Azure Resource Manager templates in JSON and Bicep - Azure Resource Manager | Microsoft Docs

Decompile ARM template JSON to Bicep - Azure Resource Manager | Microsoft Docs

Bicep and Terraform compared · Thorsten Hans' blog (thorsten-hans.com)

 

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 36262
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 18862
338 Azure Data Explorer - SELECT INTO(CTAS) 또는 INSERT SELECT 쿼리 수행 코난(김대우) 2021.10.26 336
337 Azure Data Explorer에서 Trigger 기능 구현 - update policy file 코난(김대우) 2021.10.22 286
336 vscode에서 일관된 팀 단위 개발 환경 구성 - devcontainer file 코난(김대우) 2021.10.19 579
» Bicep - Azure 클라우드 리소스 배포를 위한 언어 file 코난(김대우) 2021.10.19 149
334 Azure Data Explorer - Event Hub 스트리밍 ingest 중 컬럼추가 file 코난(김대우) 2021.10.18 150
333 SonarQube 리뷰 및 Azure DevOps 연결 file 코난(김대우) 2021.10.01 235
332 PySpark, koalas와 pandas dataframe file 코난(김대우) 2021.09.29 259
331 Apache Spark, pyspark 설치 후 jupyter notebook 실행 file 코난(김대우) 2021.09.29 393
330 Azure Data Explorer의 데이터를 Python Pandas Dataframe과 CSV로 변환 코난(김대우) 2021.09.28 178
329 Azure Blob Storage SAS token 생성 코난(김대우) 2021.09.17 227
328 Azure Data Factory를 이용해 ADX에서 SQL로 900만건의 데이터 전송 file 코난(김대우) 2021.09.16 276
327 Azure Data Explorer에서 SQL서버 데이터베이스 테이블 조회/삽입 - sql_request plugin file 코난(김대우) 2021.09.16 169
326 Azure Data Explorer에 대량 CSV 파일 ingest 코난(김대우) 2021.09.15 163
325 Azure Event Hubs의 데이터를 Azure Data Explorer로 전송 file 코난(김대우) 2021.09.15 219
324 Azure Event Hubs로 kafka message 전송 처리 file 코난(김대우) 2021.09.15 268
323 Service Principal과 Azure 리소스 접근/사용을 위한 인증 방법 3+1가지 file 코난(김대우) 2020.12.26 636
322 Azure storage 관리 도구 - storage explorer 설치와 사용 방법 코난(김대우) 2020.12.25 420
321 Azure cli - command line interface 명령줄 인터페이스 도구를 쓰는 이유와 방법 코난(김대우) 2020.12.25 361
320 클라우드 오픈소스 개발환경 - WSL [1] file 코난(김대우) 2020.12.20 1246
319 Cloud RoadShow 세션 발표 자료 코난(김대우) 2016.05.04 11424





XE Login