Chuyển đến nội dung chính

Azure Bicep

Bicep là gì?

Azure Bicep là một ngôn ngữ triển khai Infrastructure as Code (IaC) dành cho Azure. Được thiết kế để thay thế cho JSON, Bicep giúp đơn giản hóa quá trình viết và duy trì các file mô tả cấu hình hạ tầng Azure. Nó cung cấp cú pháp đơn giản, đọc hiểu dễ dàng và hỗ trợ tính tái sử dụng mã nguồn.

Tại sao phải sử dụng Bicep

Bicep được thiết kế để thay thế cho ngôn ngữ ARM template, giúp giảm độ phức tạp của mã nguồn và cung cấp trải nghiệm phát triển tốt hơn. 

Tham khảo thêm https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/overview?tabs=bicep#benefits-of-bicep

Bicep deployment comparison

Cú pháp cơ bản

Azure Bicep cung cấp cú pháp đơn giản và hiệu quả để triển khai cấu hình hạ tầng trên Azure. Dưới đây là một số điểm quan trọng về cú pháp cơ bản, bao gồm khai báo biến, sử dụng vòng lặp, và ví dụ minh họa.

var location = 'East US'
var resourceGroupName = 'MyResourceGroup'
Vòng lặp param storageAccountNames array = ['storage1', 'storage2', 'storage3']
resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = [for name in storageAccountNames: {
  name: name
  location: 'East US'
  sku: {
    name: 'Standard_LRS'
  }
}]
Ví dụ: Trong ví dụ này, chúng ta đã kết hợp cả khai báo biến, sử dụng vòng lặp để tạo storage account, và kết quả đầu ra để hiển thị các ID của tài khoản lưu trữ đã tạo.
var location = 'East US'
var resourceGroupName = 'MyResourceGroup'

param storageAccountNames array = ['storage1', 'storage2', 'storage3']

resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = [for name in storageAccountNames: {
  name: name
  location: location
  sku: {
    name: 'Standard_LRS'
  }
}]

output storageAccountIds array = [for account in storageAccount: account.id]

Bạn có thể thử thực hành deploy sử dụng Bicep ở link sau: Quickstart: Deploy a container instance in Azure using Bicep

Dưới đây là quickstart nếu bạn muốn sử dụng Bash

Bạn chuẩn bị file main.bicep

Mở Bash Shell trên Azure, gõ lệnh như sau:

az deployment group create \
--resource-group <resource-group-name> \
--template-file <path-to-template-file> \
--parameters name=<container-name>

Bạn thay thế resource-group-name: 

<resource-group-name>: tên resource group mà bạn muốn chứa resource 

<path-to-template>: đường dẫn tới file json vừa được upload 

<container-name>: tên container mà bạn muốn tạo

VD:

az deployment group create \
--resource-group rg_eastus_123456 \
--template-file main.bicep \
--parameters name=abc

Kiểm tra kết quả bằng cách vào View all resource

Ví dụ 2

Trong ví dụ này, chúng ta sẽ tạo Azure Management APIs bằng bicep (tạo file main.bicep)

@description('The name of the API Management service instance')
param apiManagementServiceName string = 'apiservice${uniqueString(resourceGroup().id)}'

@description('The email address of the owner of the service')
@minLength(1)
param publisherEmail string

@description('The name of the owner of the service')
@minLength(1)
param publisherName string

@description('The pricing tier of this API Management service')
@allowed([
  'Consumption' // Update the allowed SKUs to only include 'Consumption'
])
param sku string = 'Consumption' // Set the default SKU to 'Consumption'

@description('The instance size of this API Management service.')
// Set capacity to 0 for Consumption SKU
param skuCount int = sku == 'Consumption' ? 0 : 1

@description('Location for all resources.')
param location string = resourceGroup().location

resource apiManagementService 'Microsoft.ApiManagement/service@2021-08-01' = {
  name: apiManagementServiceName
  location: location
  sku: {
    name: sku
    capacity: skuCount
  }
  properties: {
    publisherEmail: publisherEmail
    publisherName: publisherName
  }
}

Giải thích

@description: cung cấp mô tả cho tham số

uniqueString(resourceGroup().id): tạo ra chuỗi duy nhất dựa trên resource group ID.

resource apiManagementService: Khai báo resource apiManagementService, loại resource: 'Microsoft.ApiManagement/service@2021-08-01' xác định đây là một dịch vụ API Management phiên bản API 2021-08-01.

Tham khảo

 

 

Nhận xét

Bài đăng phổ biến từ blog này

[ASP.NET MVC] Authentication và Authorize

Một trong những vấn đề bảo mật cơ bản nhất là đảm bảo những người dùng hợp lệ truy cập vào hệ thống. ASP.NET đưa ra 2 khái niệm: Authentication và Authorize Authentication xác nhận bạn là ai. Ví dụ: Bạn có thể đăng nhập vào hệ thống bằng username và password hoặc bằng ssh. Authorization xác nhận những gì bạn có thể làm. Ví dụ: Bạn được phép truy cập vào website, đăng thông tin lên diễn đàn nhưng bạn không được phép truy cập vào trang mod và admin.

ASP.NET MVC: Cơ bản về Validation

Validation (chứng thực) là một tính năng quan trọng trong ASP.NET MVC và được phát triển trong một thời gian dài. Validation vắng mặt trong phiên bản đầu tiên của asp.net mvc và thật khó để tích hợp 1 framework validation của một bên thứ 3 vì không có khả năng mở rộng. ASP.NET MVC2 đã hỗ trợ framework validation do Microsoft phát triển, tên là Data Annotations. Và trong phiên bản 3, framework validation đã hỗ trợ tốt hơn việc xác thực phía máy khách, và đây là một xu hướng của việc phát triển ứng dụng web ngày nay.

Tổng hợp một số kiến thức lập trình về Amibroker

Giới thiệu về Amibroker Amibroker theo developer Tomasz Janeczko được xây dựng dựa trên ngôn ngữ C. Vì vậy bộ code Amibroker Formula Language sử dụng có syntax khá tương đồng với C, ví dụ như câu lệnh #include để import hay cách gói các object, hàm trong các block {} và kết thúc câu lệnh bằng dấu “;”. AFL trong Amibroker là ngôn ngữ xử lý mảng (an array processing language). Nó hoạt động dựa trên các mảng (các dòng/vector) số liệu, khá giống với cách hoạt động của spreadsheet trên excel.