이번 포스팅에서는 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" },
Bicep 코드 먼저 보고 실행
az cli로 설치
Bicep cli 설치 과정은 az cli 2.20.0 이상을 이용한다. bicep 설치 문서 링크
az bicep install
vscode extension 설치
vscode extension에서 bicep으로 검색해 설치한다.
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
여기까지 보면 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
Decompile ARM template JSON to Bicep - Azure Resource Manager | Microsoft Docs
Bicep and Terraform compared · Thorsten Hans' blog (thorsten-hans.com)