Chuyển tới nội dung

Giới thiệu về Infrastructure as Code (IaC) và Terraform

1. Infrastructure as Code (IaC) là gì?

Infrastructure as Code (IaC) là phương pháp quản lý và triển khai hạ tầng CNTT (server, network, storage, cloud services…) bằng mã nguồn, thay vì cấu hình thủ công thông qua giao diện đồ họa hoặc thao tác tay.

Với IaC, toàn bộ hạ tầng được mô tả bằng các file cấu hình (code) có thể:

  • Lưu trữ trong Git
  • Version control
  • Review, audit
  • Tự động triển khai thông qua CI/CD

Ví dụ:

Thay vì tạo 10 máy ảo trên AWS bằng tay, bạn chỉ cần viết vài dòng code và chạy một lệnh để tạo chính xác 10 máy ảo giống nhau.

Lợi ích chính của IaC:

  • Tính nhất quán: Tránh sai sót do cấu hình thủ công
  • Tự động hóa: Triển khai nhanh, lặp lại được
  • Khả năng mở rộng: Scale hạ tầng dễ dàng
  • Audit & rollback: Theo dõi thay đổi và quay về trạng thái cũ
  • Chuẩn DevOps / GitOps: Hạ tầng được quản lý như code

2. Terraform là gì?

Terraform là một công cụ Infrastructure as Code mã nguồn mở do HashiCorp phát triển, cho phép bạn định nghĩa, triển khai và quản lý hạ tầng đa nền tảng bằng một ngôn ngữ khai báo duy nhất gọi là HCL (HashiCorp Configuration Language).

Terraform hỗ trợ hàng trăm nhà cung cấp (provider) như:

  • AWS, Azure, Google Cloud
  • VMware, OpenStack
  • Kubernetes
  • Cloudflare, GitHub, GitLab
  • Và nhiều hệ thống on-premise khác

3. Terraform hoạt động như thế nào?

Terraform hoạt động theo mô hình Declarative (khai báo trạng thái mong muốn).

Quy trình cơ bản:

  1. Viết code mô tả hạ tầng mong muốn
  2. Chạy terraform init để khởi tạo provider
  3. Chạy terraform plan để xem trước thay đổi
  4. Chạy terraform apply để triển khai
  5. Terraform lưu trạng thái hạ tầng vào state file

Terraform sẽ tự động:

  • Tạo mới tài nguyên
  • Cập nhật tài nguyên thay đổi
  • Xóa tài nguyên không còn trong cấu hình

4. Ví dụ Terraform đơn giản

provider "aws" {
  region = "ap-southeast-1"
}

resource "aws_instance" "web_server" {
  ami           = "ami-0abcdef123456"
  instance_type = "t2.micro"

  tags = {
    Name = "WebServer"
  }
}

Chỉ với vài dòng code, Terraform sẽ tạo một EC2 instance trên AWS.

5. Terraform trong DevOps & CI/CD

Terraform thường được tích hợp trong pipeline:

  • GitLab CI / GitHub Actions
  • Azure DevOps
  • Jenkins

Luồng phổ biến:

  • Pull Request → terraform plan
  • Merge → terraform apply
  • Kiểm soát quyền và audit thay đổi

6. Khi nào nên sử dụng Terraform?

Terraform phù hợp khi bạn:

  • Muốn quản lý hạ tầng như code
  • Có nhiều môi trường (dev / staging / prod)
  • Cần triển khai hạ tầng nhanh và chuẩn hóa
  • Vận hành cloud hoặc hybrid infrastructure

7. Kết luận

Infrastructure as Code là nền tảng quan trọng của hệ thống hiện đại, giúp doanh nghiệp vận hành hạ tầng một cách tự động, ổn định và có thể mở rộng.

Terraform là một trong những công cụ IaC mạnh mẽ và phổ biến nhất hiện nay, giúp đội ngũ DevOps kiểm soát hạ tầng một cách khoa học, minh bạch và hiệu quả.

Liên hệ