Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • ARM Template và JSON: Nền tảng Infrastructure as Code trên Azure

    ARM Template và JSON: Nền tảng Infrastructure as Code trên Azure


    Nếu thường xuyên tạo VM, Storage Account hay Virtual Network trên Azure bằng Azure Portal, bạn sẽ nhanh chóng gặp một vấn đề: làm thủ công thì dễ, nhưng làm lại chính xác hàng chục lần thì rất khó.

    Đó là lý do Azure Resource Manager Template – ARM Template ra đời. Đây là một hình thức Infrastructure as Code (IaC), cho phép mô tả hạ tầng Azure bằng code và triển khai tự động.

    1. ARM Template là gì?


    ARM Template là file khai báo các Azure Resource cần được triển khai, chẳng hạn:

    VM, Virtual Network, NIC, Public IP, Storage Account, NSG...

    ARM Template truyền thống được viết bằng JSON (JavaScript Object Notation).

    Thay vì vào Azure Portal và click:

    Create VM → chọn Size → Network → Disk → Security → Create

    chúng ta có thể mô tả toàn bộ cấu hình đó trong một template và yêu cầu Azure Resource Manager triển khai.

    Điểm quan trọng của IaC nằm ở khả năng repeatable và consistent: cùng một template có thể được sử dụng nhiều lần để tạo ra các môi trường có cấu hình nhất quán.

    2. JSON trong ARM Template hoạt động như thế nào?


    JSON tổ chức dữ liệu chủ yếu dưới dạng key-value pair:
    "name": "Server01"

    Trong đó name là key, còn Server01 là value.

    Value không nhất thiết chỉ là text. Nó có thể là string, number, Boolean, array hoặc một object khác.

    Một ARM Template cơ bản thường có cấu trúc:
    {
    "$schema": "...",
    "contentVersion": "1.0.0.0",
    "parameters": {},
    "variables": {},
    "functions": [],
    "resources": [],
    "outputs": {}
    }

    Có thể hiểu đơn giản:

    $schema xác định schema của template.

    contentVersion quản lý phiên bản.

    parameters nhận dữ liệu đầu vào.

    variables lưu các giá trị dùng lại trong template.

    resources là phần quan trọng nhất, mô tả những tài nguyên Azure cần tạo.

    outputs trả về thông tin sau khi deployment hoàn tất.

    3. Parameters – làm cho template có thể tái sử dụng


    Giả sử chúng ta tạo VM. Nếu viết cố định username và password vào template thì mỗi lần triển khai lại phải sửa code.

    Thay vào đó, ARM Template sử dụng parameters:
    "parameters": {
    "adminUsername": {
    "type": "string"
    },
    "adminPassword": {
    "type": "securestring"
    }
    }

    Khi chạy deployment, người triển khai cung cấp giá trị cho:

    adminUsername → tài khoản Administrator của VM.

    adminPassword → mật khẩu.

    Đặc biệt, password sử dụng kiểu secureString thay vì string thông thường để tránh làm lộ dữ liệu nhạy cảm trong quá trình deployment.

    4. Hãy hình dung ARM Template như một bản thiết kế Data Center


    Một cách dễ hiểu cho người làm System:

    ARM Template = bản thiết kế hạ tầng

    Parameters = những thông số có thể thay đổi

    Resources = VM, Network, Disk, IP... cần xây dựng

    Azure Resource Manager = hệ thống đọc bản thiết kế và triển khai hạ tầng

    Ví dụ cùng một template có thể triển khai:

    Dev → VM nhỏ, ít tài nguyên.

    Test → VM trung bình.

    Production → VM lớn hơn.

    Kiến trúc gần như giữ nguyên, chỉ cần thay đổi parameters.

    5. Từ ARM Template đến DevOps


    Đây chính là bước chuyển quan trọng từ:

    ClickOps → Infrastructure as Code → Automation → CI/CD.

    Khi hạ tầng đã được mô tả bằng code, chúng ta có thể lưu template trong Git, review thay đổi, quản lý version và đưa việc triển khai Azure Infrastructure vào CI/CD Pipeline.

    Ngày nay Microsoft cũng cung cấp Bicep, một ngôn ngữ có cú pháp gọn hơn để triển khai tài nguyên Azure và được biên dịch thành ARM JSON khi deployment.

    Với người mới học Azure, hiểu ARM Template vẫn rất hữu ích vì nó giúp chúng ta hiểu cách Azure Resource Manager, JSON, Parameters, Resources và Infrastructure as Code liên kết với nhau.

    Đây cũng là lúc người System Administrator bắt đầu chuyển từ tư duy "cấu hình từng server" sang tư duy "lập trình và tự động hóa cả hạ tầng".
    Attached Files
    Đặng Quang Minh, CCIE#11897 (Enterprise Infrastructure, Wireless, Automation, AI), CCSI#31417

    Email : dangquangminh@vnpro.org
    https://www.facebook.com/groups/vietprofessional/
Working...
X