Skip to main content

Azure Bicep: Hướng dẫn Toàn diện

1. Giới thiệu

ARM Template (Quá khứ)

Ngày xưa, để định nghĩa hạ tầng Azure dạng code (IaC Native), ta dùng JSON (ARM Template). JSON rất dài dòng, khó đọc, khó viết, không hỗ trợ comment. Là cơn ác mộng của DevOps.

Bicep (Hiện tại)

Microsoft tạo ra Bicep để thay thế JSON.

  • Ngôn ngữ sạch, gọn, dễ đọc (giống Terraform).
  • Biên dịch (Transpile) ra JSON chuẩn để gửi cho Azure.
  • Hỗ trợ tuyệt vời bởi VS Code (IntelliSense).

2. Cú pháp cơ bản

Tạo một Storage Account bằng Bicep:

// Khai báo tham số
param location string = resourceGroup().location
param namePrefix string = 'st'

// Tạo resource
resource st 'Microsoft.Storage/storageAccounts@2021-04-01' = {
name: '${namePrefix}unique123' // String interpolation
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
}

// Output kết quả
output storageId string = st.id

3. So sánh: Bicep hay Terraform?

Đặc điểmBicepTerraform
HãngMicrosoft (Native)HashiCorp (3rd Party)
State FileKhông cần (Dùng trực tiếp Azure ARM)Cần quản lý State File
Đa nền tảngChỉ AzureAzure, AWS, GCP, K8s...
Cập nhậtDay-0 (Có tính năng mới ngay lập tức)Chờ Provider update (nhanh nhưng có độ trễ)
Lời khuyên
  • Nếu công ty bạn dùng Multi-cloud (cả AWS, Azure) -> Dùng Terraform.
  • Nếu chỉ dùng 100% Azure và muốn sự đơn giản -> Dùng Bicep.