Hồi mới vào nghề DevOps, mình từng ám ảnh với việc setup server bằng tay, mỗi lần deploy là một lần “run for your life” vì không chắc mọi thứ có chạy ổn định không. Việc áp dụng Terraform infrastructure as code cơ bản đã thay đổi hoàn toàn cục diện. Nó giúp mình biến toàn bộ hạ tầng đám mây phức tạp thành những file code đơn giản, dễ đọc và dễ quản lý. Quên đi việc click chuột thủ công đầy rủi ro, giờ đây bạn có thể tự động hóa mọi thứ một cách an toàn và nhất quán nhất.
Thoát khỏi kiếp “click-ops”: Tại sao Infrastructure as Code (IaC) và Terraform là chân ái?
Infrastructure as Code (IaC) và Terraform giúp thay thế việc cấu hình thủ công (click-ops) bằng các đoạn mã lập trình, mang lại sự nhất quán, tốc độ và khả năng kiểm soát phiên bản tuyệt đối cho hạ tầng đám mây.
Trước đây, để dựng một môi trường chạy ứng dụng, chúng ta phải đăng nhập vào giao diện web của nhà cung cấp, click tạo mạng, tạo máy chủ, mở port bảo mật… Cực kỳ tốn thời gian. Nếu bạn đã từng phải Quản trị Linux server cơ bản cho developer, bạn sẽ hiểu việc cấu hình thủ công từng máy chủ dễ dẫn đến sai sót (human error) như thế nào. Khi hệ thống lớn lên, việc không nhớ nổi mình đã cấu hình những gì ở server nào là “cơn ác mộng” thực sự.
Infrastructure as Code (IaC) là gì? Cứu tinh cho những đêm mất ngủ.
Infrastructure as Code (IaC) là phương pháp quản lý và cung cấp tài nguyên máy tính thông qua các tệp định nghĩa có thể đọc được bằng máy, thay vì cấu hình phần cứng vật lý hay công cụ tương tác thủ công.
Thay vì thao tác tay, bạn viết code. Mã nguồn này sử dụng phương pháp Declarative (khai báo), tức là bạn chỉ cần mô tả “kết quả cuối cùng” bạn muốn (ví dụ: tôi cần 3 máy chủ), công cụ IaC sẽ tự tìm cách thực hiện điều đó. Hơn nữa, vì hạ tầng giờ đây là code, bạn có thể lưu trữ nó trên hệ thống Version Control (kiểm soát phiên bản). Nếu bạn chưa rành về mảng này, việc tham khảo Học Git GitHub từ đầu cho developer là bước đệm tuyệt vời để quản lý lịch sử thay đổi của hạ tầng.
Terraform là gì? “Cuốn cẩm nang” cho hạ tầng của bạn.
Terraform là một công cụ mã nguồn mở do HashiCorp phát triển, cho phép bạn định nghĩa và cung cấp cơ sở hạ tầng trung tâm dữ liệu bằng ngôn ngữ cấu hình khai báo.
Tính đến tháng 3 năm 2026, với các phiên bản ổn định như 1.14.x và bản beta 1.15, Terraform đã trở thành tiêu chuẩn công nghiệp không thể tranh cãi. Khác với các công cụ chỉ chạy trên một nền tảng, Terraform nổi bật nhờ khả năng Cloud-agnostic (không phụ thuộc nền tảng). Bạn có thể dùng chung một luồng công việc để quản lý tài nguyên trên AWS, Azure, Google Cloud, và hàng ngàn dịch vụ khác.
5 Lợi ích của Terraform mà sếp và cả team bạn sẽ yêu thích (kèm ví dụ thực tế).
Lợi ích của Terraform bao gồm khả năng tự động hóa hạ tầng, hỗ trợ Multi-cloud, quản lý trạng thái thông minh, tái sử dụng mã nguồn và dễ dàng tích hợp vào quy trình CI/CD.
Tại Phạm Hải, mình luôn khuyến khích các team áp dụng Terraform vì những lý do thực tế sau:
- Tốc độ triển khai hạ tầng: Thay vì mất nửa ngày tạo môi trường staging, bạn chỉ cần chạy một lệnh và chờ 5 phút.
- Multi-cloud linh hoạt: Bạn không bị “khóa” vào một nhà cung cấp. Bạn có thể dùng AWS cho database và Cloudflare cho DNS trong cùng một dự án.
- Quản lý tài nguyên an toàn: Terraform biết chính xác những gì đang chạy nhờ file trạng thái Terraform.
- Tích hợp CI/CD mượt mà: Hạ tầng có thể được test và deploy tự động. Việc kết hợp Terraform với GitHub Actions tự động deploy test CI/CD giúp mọi thay đổi đều được kiểm duyệt chặt chẽ trước khi lên Production.
- Tái sử dụng code: Viết code một lần cho môi trường Dev, và dùng lại y hệt cho môi trường Prod chỉ bằng cách đổi vài tham số.
Hướng dẫn cài đặt và “Hello World” với Terraform trong 15 phút

Bạn có thể dễ dàng tải và cài đặt Terraform CLI trực tiếp từ trang chủ HashiCorp cho các hệ điều hành Windows, macOS hoặc Linux chỉ với vài dòng lệnh cơ bản.
Cài đặt Terraform CLI trên Windows, macOS, và Linux: Dễ như ăn kẹo.
Cách cài đặt Terraform đơn giản nhất là sử dụng các trình quản lý gói như Homebrew cho macOS, Chocolatey cho Windows hoặc apt/yum cho Linux để tải Terraform CLI bản mới nhất.
- macOS: Mở terminal và gõ
brew tap hashicorp/tapsau đóbrew install hashicorp/tap/terraform. - Windows: Nếu dùng Chocolatey, bạn chỉ cần chạy
choco install terraform. (Lưu ý: Từ năm 2026, Terraform đã hỗ trợ cả bản build cho Windows ARM64). - Linux (Ubuntu): Sử dụng
apt-getđể cài đặt khóa GPG của HashiCorp và tải góiterraformchính thức.
Sau khi cài xong, hãy gõ terraform -version để kiểm tra. Nếu màn hình in ra phiên bản (ví dụ v1.14.7), chúc mừng bạn đã thành công!
Cấu trúc một file Terraform cơ bản: Làm quen với HCL (HashiCorp Configuration Language).
HCL (HashiCorp Configuration Language) là ngôn ngữ khai báo trực quan được thiết kế riêng cho Terraform, giúp định nghĩa cấu trúc hạ tầng một cách dễ đọc cho cả người và máy.
Một file code Terraform (thường có đuôi .tf) được cấu tạo từ các “block”. Mỗi block có một loại (type), nhãn (labels) và thân (body) chứa các đối số (arguments). Ngôn ngữ này rất thân thiện, không cần ngoặc kép phức tạp như JSON, hỗ trợ comment rõ ràng, giúp team DevOps đọc vào là hiểu ngay hệ thống đang có những gì.
Ví dụ Terraform cơ bản: Tạo một máy ảo EC2 trên AWS.
Để tạo máy ảo EC2, bạn chỉ cần khai báo provider AWS và block resource “aws_instance” kèm theo AMI và loại instance mong muốn trong file main.tf.
Dưới đây là đoạn code “Hello World” kinh điển. Lưu ý, để chạy được ví dụ này, bạn nên tham khảo cách tạo tài khoản AWS cho người mới bắt đầu free tier để không phát sinh chi phí:
provider "aws" {
region = "ap-southeast-1"
}
resource "aws_instance" "my_first_server" {
ami = "ami-0c55b159cbfafe1f0" # Amazon Linux 2 AMI
instance_type = "t2.micro"
tags = {
Name = "HelloWorld-Terraform"
}
}
Chỉ với 11 dòng code trên, bạn đã định nghĩa xong một máy ảo EC2 nằm tại khu vực Singapore.
Nắm vững các khái niệm cốt lõi của Terraform để tự tin “code” hạ tầng
Để làm chủ Terraform, bạn cần hiểu rõ 4 khái niệm cốt lõi: Providers, State, Resources/Data Sources và Modules. Nắm chắc phần này, bạn sẽ không bao giờ bị bỡ ngỡ khi đọc code của người khác.
Terraform Providers: Cầu nối tới thế giới Cloud (AWS, Azure, Google Cloud).
Terraform Providers là các plugin cho phép Terraform tương tác với API của các nền tảng đám mây (như AWS, Azure) hoặc các dịch vụ SaaS khác.
Hiện tại có hơn 3,000 providers trên Terraform Registry. Không chỉ giới hạn ở các gã khổng lồ, nếu công ty bạn đang theo hướng đa nền tảng, bạn hoàn toàn có thể tìm hiểu Google Cloud Platform hướng dẫn cơ bản và sử dụng provider google cùng lúc với aws.
Thậm chí, Terraform không chỉ quản lý máy ảo. Nếu bạn đang làm việc với container, việc sử dụng Terraform để cấu hình Docker cho developer hướng dẫn thực tế là hoàn toàn khả thi. Ở cấp độ cao hơn, Terraform provider cho Kubernetes cũng giúp bạn tự động hóa việc cấp phát tài nguyên cluster một cách đồng bộ. Nếu team bạn đang hướng tới microservices, việc nắm vững Kubernetes cơ bản cho người mới bắt đầu kết hợp với Terraform sẽ là một “vũ khí” cực kỳ lợi hại.
Terraform State là gì? “Cuốn sổ nhật ký” theo dõi mọi thay đổi của hạ tầng.
Terraform State là một file (thường là terraform.tfstate) lưu trữ trạng thái hiện tại của hạ tầng thực tế để so sánh với cấu hình code, giúp Terraform biết cần phải thay đổi những gì.
Đây là “trái tim” của Terraform. Khi bạn đổi instance type từ t2.micro sang t3.micro, Terraform đọc file State, nhận ra sự khác biệt và chỉ cập nhật máy chủ đó thay vì tạo lại từ đầu. Với các dự án thực tế, chúng ta không bao giờ lưu file này ở máy cá nhân mà sẽ lưu trên Remote Backend (như AWS S3) để cả team cùng làm việc mà không bị xung đột (State locking).
Resource & Data Source: Hai mảnh ghép không thể thiếu.
Resource (tài nguyên) dùng để tạo mới các thành phần hạ tầng (như VPC, EC2), trong khi Data Source (nguồn dữ liệu) dùng để truy vấn thông tin của các tài nguyên đã tồn tại.
- Resource: Là những thứ bạn chủ động yêu cầu Terraform tạo ra. Ví dụ:
resource "aws_vpc" "main" {...}. - Data Source: Là cách bạn “đọc” thông tin từ Cloud mang về dùng trong code. Ví dụ bạn muốn lấy ID của một AMI Ubuntu mới nhất do AWS cung cấp mà không cần copy/paste thủ công, bạn sẽ dùng
data "aws_ami" "ubuntu" {...}.
Terraform Modules là gì? Nghệ thuật đóng gói và tái sử dụng code hạ tầng.
Terraform Modules là các tập hợp file cấu hình Terraform được nhóm lại trong một thư mục, giúp đóng gói, tái sử dụng và chia sẻ code hạ tầng một cách khoa học.
Thay vì viết đi viết lại đoạn code tạo VPC dài 200 dòng cho 5 dự án khác nhau, bạn đóng gói nó thành một Module my-vpc. Ở các dự án sau, bạn chỉ cần gọi lại module đó và truyền vào tham số (như dải IP). Nó hoạt động giống hệt như việc bạn viết các hàm (functions) trong lập trình phần mềm vậy.
Các lệnh Terraform cơ bản mà bạn sẽ dùng mỗi ngày

Quy trình làm việc chuẩn của Terraform xoay quanh 4 lệnh cốt lõi: init, plan, apply và destroy, giúp kiểm soát toàn bộ vòng đời của hạ tầng đám mây.
terraform init: Bước khởi đầu cho mọi dự án.
Lệnh Terraform init có chức năng khởi tạo thư mục làm việc, tải xuống các Providers cần thiết và cấu hình backend lưu trữ State.
Mỗi khi bạn clone một project mới về hoặc thêm một provider mới vào code, đây là lệnh đầu tiên bạn bắt buộc phải chạy. Nó tạo ra thư mục ẩn .terraform để chứa các plugin.
terraform plan: Xem trước thay đổi, không lo “sập” server.
Lệnh Terraform plan tạo ra một bản kế hoạch thực thi, cho phép bạn xem trước chính xác những tài nguyên nào sẽ được tạo, sửa hoặc xóa mà chưa áp dụng thực tế.
Đây là tính năng “cứu mạng” của Terraform. Nó in ra màn hình một danh sách với các dấu + (tạo mới), - (xóa), và ~ (cập nhật). Bạn phải kiểm tra thật kỹ kết quả của lệnh này trước khi đi tiếp.
terraform apply: “Chấp thuận” và triển khai hạ tầng.
Lệnh Terraform apply sẽ thực thi các thay đổi đã được lên kế hoạch trong bước plan để chính thức tạo hoặc cập nhật tài nguyên trên môi trường Cloud.
Khi chạy lệnh này, Terraform sẽ hỏi bạn gõ yes để xác nhận lần cuối. Sau đó, nó sẽ gọi các API của nhà cung cấp đám mây để hiện thực hóa các dòng code của bạn.
terraform destroy: Dọn dẹp tài nguyên khi không cần nữa.
Lệnh Terraform destroy được sử dụng để xóa toàn bộ các tài nguyên hạ tầng đã được định nghĩa trong cấu hình, giúp tiết kiệm chi phí khi không còn sử dụng.
Rất hữu ích cho các môi trường Test/Dev. Dùng xong trong ngày, cuối ngày chạy lệnh này để dọn dẹp, tránh việc quên tắt server dẫn đến hóa đơn tiền điện toán đám mây khổng lồ vào cuối tháng.
So sánh nhanh: Terraform vs. CloudFormation – Khi nào nên chọn ai?

Tính đến năm 2026, Terraform nổi bật với khả năng Multi-cloud và hệ sinh thái khổng lồ, trong khi CloudFormation là lựa chọn tối ưu nếu bạn chỉ sử dụng duy nhất hệ sinh thái AWS.
Cả hai đều là những công cụ tuyệt vời để triển khai IaC. Tuy nhiên, việc lựa chọn phụ thuộc rất nhiều vào chiến lược dài hạn của công ty bạn.
Tính linh hoạt: Cloud-agnostic và Multi-cloud là gì?
Cloud-agnostic nghĩa là không bị phụ thuộc vào một nhà cung cấp duy nhất. Terraform hỗ trợ Multi-cloud xuất sắc với hơn 3000 providers, trong khi CloudFormation bị “khóa” (vendor lock-in) với AWS.
Nếu công ty bạn dự định dùng AWS cho backend, nhưng lại dùng Azure cho Active Directory, Terraform là con đường duy nhất. CloudFormation không thể quản lý tài nguyên ngoài AWS một cách dễ dàng và tự nhiên như Terraform.
Cộng đồng và hệ sinh thái: Ai đông vui hơn?
Terraform sở hữu cộng đồng mã nguồn mở khổng lồ cùng Terraform Registry chứa hàng ngàn Modules sẵn có, vượt trội hơn so với hệ sinh thái đóng của CloudFormation.
Khi gặp lỗi với Terraform, bạn chỉ cần copy lỗi lên Google là ra hàng tá bài giải quyết trên StackOverflow hoặc GitHub. Sự phổ biến của Terraform trong giới DevOps hiện nay là không thể phủ nhận.
Bắt đầu với Terraform infrastructure as code cơ bản không hề đáng sợ như bạn nghĩ. Nó là một kỹ năng cực kỳ giá trị trong thế giới DevOps và Cloud hiện đại. Tại Phạm Hải, mình luôn khuyên các bạn trẻ đừng chỉ coi nó là một công cụ, hãy xem nó như một tư duy mới về việc quản lý hạ tầng: tự động, an toàn và có thể kiểm soát. Với những kiến thức cơ bản này, mình tin bạn đã sẵn sàng để tự tay “code” nên hạ tầng đầu tiên của mình và tạm biệt mãi mãi những công việc thủ công nhàm chán.
Bạn đã sẵn sàng tự động hóa hạ tầng của mình chưa? Hãy thử ngay ví dụ tạo máy ảo EC2 ở trên và chia sẻ kết quả của bạn ở phần bình luận nhé!
Lưu ý: Các thông tin trong bài viết này chỉ mang tính chất tham khảo. Để có được lời khuyên tốt nhất, vui lòng liên hệ trực tiếp với chúng tôi để được tư vấn cụ thể dựa trên nhu cầu thực tế của bạn.