Logo
Featured Image

Terraform Là Gì? Xây Dựng Cấu Trúc Hạ Tầng Chuẩn Chuyên Gia.

Author
Tobi 19/03/2026 2 views

Nếu bạn đang quản lý hàng chục Container Docker, các cụm Kubernetes hay những hệ thống Cloud phức tạp, việc cấu hình bằng tay là "cơn ác mộng" về tính ổn định. Terraform ra đời để giải quyết bài toán đó thông qua tư duy Infrastructure as Code (IaC).

Terraform for beginner – Giới thiệu về IaC và Terraform | VTI Recruitment

1. Bản chất của Terraform: Khai báo (Declarative)

Khác với các script chạy lệnh tuần tự (do-this, then-do-that), Terraform sử dụng mô hình Khai báo. Bạn chỉ cần định nghĩa "Tôi muốn có 5 máy ảo", Terraform sẽ tự đối soát với hệ thống hiện tại. Nếu đang có 3 máy, nó tạo thêm 2. Nếu đang có 7 máy, nó tự xóa bớt 2.

Cơ chế này giúp hệ thống luôn ở trạng thái mong muốn (Desired State) mà không gây ra các tác dụng phụ ngoài ý muốn.


2. Kiến trúc Core của Terraform

2.1. Ngôn ngữ HCL 2.0 (HashiCorp Configuration Language)

HCL được thiết kế để con người dễ đọc nhưng máy tính dễ thực thi. Nó mạnh hơn JSON ở chỗ hỗ trợ:

  • Cấu trúc khối (Blocks): Phân chia rõ ràng giữa provider, resource, variable, và output.

  • Xử lý logic: Sử dụng các hàm nội tại (Built-in functions) để băm chuỗi, xử lý dải IP (CIDR) hay lặp qua danh sách tài nguyên với for_each.

2.2. Dependency Graph (Đồ thị phụ thuộc)

Đây là "bộ não" của Terraform. Khi bạn apply, nó sẽ vẽ ra một bản đồ mối quan hệ giữa các tài nguyên.

  • Ví dụ: Nó biết phải tạo VPC trước, rồi mới tạo Subnet, cuối cùng mới tạo Máy ảo bên trong Subnet đó. Việc này giúp tối ưu hóa thời gian triển khai bằng cách chạy song song các tài nguyên không liên quan đến nhau.


3. Quản lý trạng thái với State File

File terraform.tfstate là thứ quan trọng nhất trong một project. Nó lưu trữ ánh xạ giữa code của bạn và các ID tài nguyên thật trên Cloud/K8s.

  • Local State: Mặc định lưu trên máy cá nhân (chỉ dùng khi vọc vạch một mình).

  • Remote State: Lưu trên S3, GCS hoặc Terraform Cloud. Đây là bắt buộc khi làm dự án thực tế để hỗ trợ State Locking (ngăn chặn 2 người cùng chỉnh sửa hạ tầng một lúc dẫn đến hỏng hóc dữ liệu).


4. Khả năng mở rộng qua Provider & Module

Providers: Không giới hạn ở Cloud

Terraform không chỉ nói chuyện với AWS hay Google Cloud. Bất kỳ dịch vụ nào có API đều có thể có Provider:

  • Infrastructure: Docker, Kubernetes, VMware vSphere.

  • Network & Security: Cloudflare, Palo Alto Networks, Vault.

  • Monitoring: Datadog, New Relic, Grafana.

Modules: Đóng gói và tái sử dụng

Thay vì viết hàng nghìn dòng code trong một file, bạn nên chia nhỏ thành các Module.

  • Ví dụ: Bạn có một module chuẩn để dựng cụm Kubernetes + Nginx Ingress. Khi cần triển khai dự án mới, bạn chỉ cần gọi lại module đó với các tham số (variables) khác nhau.


5. Quy trình triển khai chuyên nghiệp (Workflow)

Để tránh sai sót, một quy trình chuẩn thường bao gồm 4 bước:

  1. terraform init: Khởi tạo môi trường, tải Provider plugins.

  2. terraform plan: Bước "soi lỗi". Terraform sẽ liệt kê mọi thay đổi sắp diễn ra. Bạn phải luôn đọc kỹ bước này trước khi nhấn nút.

  3. terraform apply: Hiện thực hóa code thành tài nguyên thật.

  4. terraform destroy: Dọn dẹp sạch sẽ hạ tầng khi không còn nhu cầu sử dụng, cực kỳ hữu ích để tiết kiệm chi phí trong môi trường Testing.


6. Các quy tắc "vàng" khi sử dụng Terraform

  • Không lưu nhạy cảm (Secrets): Tuyệt đối không hard-code mật khẩu DB hay API Key vào file .tf. Hãy dùng biến môi trường hoặc các trình quản lý bí mật như HashiCorp Vault.

  • Version Pinning: Luôn khóa phiên bản của Provider để đảm bảo code không bị lỗi khi nhà cung cấp cập nhật bản mới đột ngột.

  • Cấu trúc thư mục: Chia tách theo môi trường (dev, staging, prod) để đảm bảo các thay đổi thử nghiệm không ảnh hưởng đến hệ thống đang chạy.

Lời kết

Làm chủ Terraform không chỉ là học một công cụ, mà là thay đổi cách chúng ta vận hành công nghệ. Thay vì làm việc với những cái máy ảo đơn lẻ, bạn đang điều khiển cả một "đội quân" hạ tầng một cách tự động, chính xác và có thể kiểm soát phiên bản giống như code ứng dụng.

Bình luận (0)

+ =
Zalo