Azure, AWS, GCP 클라우드 활용 Tip과 강좌 게시판

이곳은 개발자를 위한 Azure, AWS, GCP등 클라우드 활용 Tip과 강좌 게시판 입니다. 클라우드 환경을 개발하면서 알아내신 Tip이나 강좌, 새로운 소식을 적어 주시면 다른 클라우드를 공부하는 개발자 분들에게 큰 도움이 됩니다. 감사합니다. SQLER.com은 개발자와 IT전문가의 지식 나눔을 실천하기 위해 노력하고 있습니다.

 

이번 포스팅에서는 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
353 애저 쿠버네티스 오픈소스로 설계하는 나만의 인프라 | ep9. 클로징 | 애저 듣고보는 잡학지식 코난(김대우) 2022.11.11 23
352 애저 쿠버네티스 오픈소스로 설계하는 나만의 인프라 | ep8. 에필로그 | 애저 듣고보는 잡학지식 코난(김대우) 2022.11.09 11
351 애저 쿠버네티스 오픈소스로 설계하는 나만의 인프라 | ep7. 쿠버네티스 클러스터를 모니터링하는 방법 | 애저 듣고보는 잡학지식 코난(김대우) 2022.11.05 9
350 애저 쿠버네티스 오픈소스로 설계하는 나만의 인프라 | ep6. 리눅스와 윈도우 컨테이너 같이 쓰기 | 애저 듣고보는 잡학지식 코난(김대우) 2022.11.02 13
349 애저 쿠버네티스 오픈소스로 설계하는 나만의 인프라 | ep5. 가성비 좋은 스팟 인스턴스로 비용 아끼기 | 애저 듣고보는 잡학지식 코난(김대우) 2022.11.01 16
348 애저 쿠버네티스 오픈소스로 설계하는 나만의 인프라 | ep4. 장애에 강한 멀티 마스터 노드 쉽게 만들기 | 애저 듣고보는 잡학지식 코난(김대우) 2022.10.31 9
347 애저 쿠버네티스 오픈소스로 설계하는 나만의 인프라 | ep3. 머신 러닝용 GPU 클러스터 쉽게 만들기 | 애저 듣고보는 잡학지식 코난(김대우) 2022.10.30 7
346 애저 쿠버네티스 오픈소스로 설계하는 나만의 인프라 | ep2. 대규모 클러스터 쉽게 만들기 | 애저듣보잡 코난(김대우) 2022.10.28 9
345 애저 쿠버네티스 오픈소스로 설계하는 나만의 인프라 | ep1. AKS 엔진 소개 | 애저 듣고보는 잡학지식 코난(김대우) 2022.10.27 10
344 애저 쿠버네티스 오픈소스로 설계하는 나만의 인프라 | ep0. 인트로 | 애저 듣고보는 잡학지식 코난(김대우) 2022.10.24 22
343 {MondayAzure}Azure를 처음 공부한다구요? 기초공부 & 자격증까지!!! 코난(김대우) 2022.10.21 13
342 인공지능이 자연어로 비즈니스 앱을 제작 - OpenAI GPT-3 file 코난(김대우) 2022.10.20 35
341 클라우드 Azure 자격증 추가 소개 - AZ-900 Azure Fundamentals 코난(김대우) 2022.10.20 20
340 Azure 자격증 시험 준비 - 애저한발짝 유승호님 코난(김대우) 2022.10.19 24
339 Azure Event hubs - Apache Avro 데이터 처리 file 코난(김대우) 2021.10.28 262
338 Azure Data Explorer - SELECT INTO(CTAS) 또는 INSERT SELECT 쿼리 수행 코난(김대우) 2021.10.26 239
337 Azure Data Explorer에서 Trigger 기능 구현 - update policy file 코난(김대우) 2021.10.22 204
336 vscode에서 일관된 팀 단위 개발 환경 구성 - devcontainer file 코난(김대우) 2021.10.19 276
» Bicep - Azure 클라우드 리소스 배포를 위한 언어 file 코난(김대우) 2021.10.19 71
334 Azure Data Explorer - Event Hub 스트리밍 ingest 중 컬럼추가 file 코난(김대우) 2021.10.18 66





XE Login