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

Terraform là gì? Bắt đầu với Hạ tầng như Mã (Infrastructure as Code)

Đọc hướng dẫn từng bước dành cho người mới bắt đầu sử dụng Terraform và tìm hiểu cách tự động hóa, quản lý hạ tầng Azure, AWS và Google Cloud của bạn một cách hiệu quả.
Đã cập nhật 5 thg 6, 2026  · 10 phút đọc

Infrastructure as Code (IaC) là một quy trình tự động hóa việc cung cấp và quản lý hạ tầng thông qua mã. Mặc dù có thể sử dụng cấu hình phần cứng vật lý và các công cụ cấu hình tương tác để cung cấp hạ tầng, IaC mang lại nhiều lợi ích như kiểm soát phiên bản, khả năng lặp lại và khả năng mở rộng. Một trong những công cụ IaC hàng đầu là Terraform, giải pháp do HashiCorp phát triển vào năm 2014 và được hơn 500.000 tổ chức trên toàn thế giới sử dụng. Hãy cùng tìm hiểu cách Terraform hoạt động và cách sử dụng nó cho vận hành CNTT hiện đại.

Khi bắt đầu tìm hiểu về Terraform, bạn cần quen thuộc với ít nhất một nhà cung cấp đám mây lớn (AWS, Azure, Google Cloud, v.v.) vì Terraform được dùng để quản lý hạ tầng đám mây. Khóa học Hiểu biết về Điện toán Đám mây của chúng tôi sẽ cung cấp nền tảng vững chắc nếu bạn còn mới với lĩnh vực này.

Terraform là gì?

Terraform là công cụ mã nguồn mở cho phép bạn định nghĩa các thành phần hạ tầng và mối quan hệ giữa chúng bằng một ngôn ngữ cấu hình cấp cao.

Trong các tệp cấu hình dễ đọc của Terraform, bạn có thể chỉ định trạng thái mong muốn của hạ tầng và Terraform sẽ tự động tìm cách để đạt tới trạng thái đó. Những tệp này có thể được quản lý phiên bản, chia sẻ và tái sử dụng để cung cấp một cách quản lý hạ tầng nhất quán, từ tài nguyên tính toán và lưu trữ, đến DNS và các tính năng SaaS.

Terraform có thể sử dụng với nhiều nhà cung cấp đám mây, trong các hạ tầng đa đám mây và cả môi trường tại chỗ (on‑premises).

Các tính năng chính của Terraform

Hãy xem kỹ hơn những điểm cốt lõi tạo nên sự khác biệt của Terraform: 

HashiCorp Configuration Language

Terraform sử dụng ngôn ngữ cấp cao có tên HashiCorp’s Configuration Language (HCL), được thiết kế riêng cho việc định nghĩa hạ tầng như mã. Các ngôn ngữ cấu hình cấp cao sử dụng cú pháp khai báo (declarative) mang tính trừu tượng và thân thiện hơn so với kịch bản cấp thấp và cấu hình thủ công. Bạn có thể đã từng gặp các ngôn ngữ cấp cao trong các tệp YAML hoặc JSON. 

HCL tuân theo cấu trúc dạng khối, trong đó mỗi khối lồng nhau đại diện cho các tài nguyên và cấu hình của chúng. Tài nguyên được định nghĩa tường minh với tên và thuộc tính.

resource "aws_instance" "example" {
  ami           = "ami-123456"
  instance_type = "t2.micro"
}

Kế hoạch thực thi

Sau khi bạn định nghĩa trạng thái mong muốn của hạ tầng, Terraform sẽ tạo một kế hoạch thực thi. Kế hoạch này liệt kê các bước Terraform cần thực hiện để đạt được trạng thái đó, giúp bạn xem xét các thay đổi trước khi áp dụng. Kiểm tra kế hoạch trước khi áp dụng sẽ tránh được các chỉnh sửa ngoài ý muốn, như xóa tài nguyên.

Quản lý trạng thái

Terraform duy trì một tệp trạng thái tự động theo dõi trạng thái hiện tại của hạ tầng của bạn và đóng vai trò là nguồn sự thật khi xác định những thay đổi cần thực hiện. Theo mặc định, tệp này được lưu cục bộ và có tên terraform.tfstate. 

Nhà cung cấp (Providers)

Providers là các plugin tương tác với API của các nền tảng đám mây và dịch vụ khác, cho phép Terraform quản lý nhiều loại tài nguyên. Các provider chính thức được phát triển và duy trì bởi HashiCorp và các đối tác tin cậy như AWS, Azure, Google Cloud, Github, Datadog, v.v. Ngoài ra còn có các plugin do cộng đồng phát triển, có thể tìm thấy trên Terraform Registry hoặc Github.

Biểu đồ tài nguyên

Terraform xây dựng một biểu đồ tài nguyên thể hiện các tài nguyên trong hạ tầng và mối quan hệ giữa chúng. Biểu đồ này giúp Terraform tạo kế hoạch hiệu quả, xử lý các phụ thuộc giữa tài nguyên và đảm bảo tài nguyên được tạo, cập nhật, xóa theo đúng thứ tự. Đây cũng là cách tuyệt vời để trực quan hóa hạ tầng và hiểu tác động của các thay đổi bạn muốn thực hiện. 

Example Terraform Resource Graph, showing AWS resources and the dependency relationships between them

Ví dụ biểu đồ tài nguyên. Nguồn: tài liệu HashiCorp

Bắt đầu với Terraform

Hãy cùng đi qua quy trình làm việc Terraform đầu tiên. Nếu bạn còn mới với DevOps hoặc điện toán đám mây nói chung, tôi khuyên bạn nên học các khóa Hiểu biết về Điện toán Đám mâyGiới thiệu về DevOps trước khi đi tiếp.

Cài đặt và thiết lập

Trong hướng dẫn Terraform này, chúng ta sẽ tạo tài nguyên trên AWS. Nếu bạn muốn thực hành theo và chưa có tài khoản, hãy truy cập AWS để đăng ký.

  1. Tải Terraform từ trang chính thức. Chọn tệp nhị phân phù hợp với hệ điều hành của bạn và làm theo hướng dẫn cài đặt.
  2. Sau khi cài đặt Terraform, mở cửa sổ Terminal mới và chạy terraform -version để đảm bảo phần mềm đã được cài đặt đúng. 
  3. Cài đặt AWS CLI
  4. Thiết lập AWS CLI bằng cách chạy aws configure trong terminal. Bạn sẽ được yêu cầu nhập Access Key ID, Secret Access Key, tên vùng mặc định và định dạng đầu ra mặc định. Terraform sẽ tự động truy cập được các thông tin này.

Cấu hình Terraform đầu tiên

Tạo một thư mục mới và tệp cấu hình đầu tiên của bạn. Hãy đặt tên là main.tf và cho Terraform biết chúng ta muốn tạo một phiên bản AWS EC2. Mã viết bằng HCL sẽ như sau:

provider "aws" {
  region = "us-west-2"
}

resource "aws_instance" "example" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = "t2.micro"
}

Khởi tạo dự án

Bây giờ hãy khởi tạo dự án Terraform của chúng ta bằng cách chạy lệnh sau:

$ terraform init

Đây là lệnh chạy một lần để tải về các plugin provider cần thiết. Bạn sẽ không cần chạy lại cho các thay đổi tiếp theo. 

Lập kế hoạch

Giờ chúng ta muốn tạo kế hoạch thực thi. Hãy nhớ, kế hoạch sẽ nêu bật các thay đổi Terraform cần thực hiện để đạt trạng thái mong muốn (trong trường hợp này là một phiên bản EC2 đang chạy). Chạy:

$ terraform plan

Bạn sẽ thấy kết quả tương tự như sau:

Terraform will perform the following actions:

  # aws_instance.example will be created
  + resource "aws_instance" "example" {
      + ami                           = "ami-0c55b159cbfafe1f0"
      + instance_type                 = "t2.micro"
      ...
    }

Plan: 1 to add, 0 to change, 0 to destroy.

Áp dụng (Apply)

Chúng ta đã xem lại kế hoạch và quyết định thực thi để cung cấp tài nguyên. Trong terminal của bạn, chạy:

$ terraform apply

Bạn sẽ được yêu cầu xác nhận hành động. Gõ “yes” để tiếp tục.

Do you want to perform these actions? 
Terraform will perform the actions described above. 
Only 'yes' will be accepted to approve. 
Enter a value: yes 

 Bạn sẽ thấy như sau:

aws_instance.example: Creating... 
aws_instance.example: Still creating... [10s elapsed] aws_instance.example: 
Creation complete after 15s [id=i-0abcdef1234567890] 

Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

 Chúc mừng bạn, bạn đã cung cấp phiên bản EC2 đầu tiên trên AWS bằng Terraform!

Lợi ích khi sử dụng Terraform

Chúng tôi đã đề cập rằng sử dụng Terraform mang lại nhiều lợi ích, như tính nhất quán và khả năng lặp lại, cũng như giảm lỗi do con người nhờ có kế hoạch thực thi. 

Các lợi ích khác bao gồm:

  • Cung cấp nhanh chóng: Terraform có thể tạo và cập nhật tài nguyên song song, đặc biệt hữu ích để nhanh chóng thiết lập môi trường phát triển, kiểm thử và staging.
  • Tăng cường cộng tác: Kết hợp với hệ thống quản lý phiên bản như Git, Terraform là cách tuyệt vời để tăng tính cộng tác và minh bạch đối với hạ tầng của bạn. Các thay đổi có thể được rà soát, phê duyệt và theo dõi tương tự như mã ứng dụng.
  • Khôi phục thảm họa hiệu quả: Nếu có sự cố, Terraform có thể nhanh chóng tạo lại toàn bộ hạ tầng từ đầu bằng cùng các tệp cấu hình.
  • Cộng đồng hỗ trợ: Terraform khuyến khích sử dụng module, tức các cấu hình có thể tái sử dụng, có thể chia sẻ và thúc đẩy các thực tiễn tốt nhất khi quản lý hạ tầng. Terraform cũng có cộng đồng năng động và hệ sinh thái provider, module phong phú, nghĩa là bạn rất có thể tìm được thứ phù hợp với ngăn xếp công nghệ của mình dù có chuyên biệt đến đâu.

Các trường hợp sử dụng phổ biến của Terraform

Dù bạn là Kỹ sư Dữ liệu xây dựng pipeline hay Nhà khoa học Dữ liệu muốn triển khai giải pháp vào môi trường sản xuất, Terraform là công cụ tuyệt vời để quản lý nhu cầu hạ tầng của bạn. Dưới đây là một số trường hợp sử dụng phổ biến:

Quản lý đa đám mây

Không phải lúc nào cũng dễ để quản lý hạ tầng trải rộng trên nhiều nhà cung cấp đám mây. Terraform cho phép bạn làm điều đó chỉ với một công cụ. Ngoài ra, Terraform còn có thể quản lý tài nguyên tại chỗ, khiến nó trở thành giải pháp lý tưởng cho các tổ chức vận hành trong môi trường lai (hybrid).

Quy trình CI/CD

Terraform tích hợp tốt với quy trình CI/CD, nghĩa là bạn có thể triển khai hạ tầng như một phần của quá trình bàn giao phần mềm. Bạn cũng có thể tự động tạo và hủy môi trường preview, dev, testing hoặc staging khi cần.

Cụm Kubernetes

Terraform có thể quản lý các cụm Kubernetes trên các nhà cung cấp đám mây khác nhau như AWS (EKS), Azure (AKS) hoặc GCP (GKE). Điều này bao gồm thiết lập hạ tầng cần thiết, quản lý tài nguyên Kubernetes trong cụm và mở rộng cụm dựa trên nhu cầu tải công việc.

Terraform so với các công cụ IaC khác

Các công cụ IaC phổ biến khác gồm Ansible, Chef, Puppet và AWS CloudFormation. Mỗi công cụ đều có điểm mạnh, điểm yếu. Hãy xem:

Tính năng Terraform Ansible Chef Puppet CloudFormation
Mã nguồn mở Không
Cú pháp khai báo Không Không
Hỗ trợ đa đám mây Không, chỉ AWS
Quản lý trạng thái Không Không
Kế hoạch thực thi Không Không Không Không
Quản lý phụ thuộc Hạn chế Hạn chế

Như chúng ta thấy, dù tất cả các công cụ này đều mạnh mẽ theo cách riêng, Terraform nổi bật nhờ bộ tính năng toàn diện. Tuy nhiên, danh sách này không đầy đủ, và mỗi công cụ phục vụ các trường hợp sử dụng hơi khác nhau tùy yêu cầu. Ví dụ, Ansible với tính chất thủ tục rất phù hợp cho quản lý cấu hình và các tác vụ ad‑hoc.

Kết luận

Trong 10 năm qua, Terraform đã giúp hàng nghìn tổ chức quản lý hạ tầng CNTT. Với cách tiếp cận khai báo, khả năng tự động hóa và hỗ trợ môi trường đa đám mây, Terraform đã trở thành một trong những công cụ IaC phổ biến nhất và chắc chắn sẽ tiếp tục là nhân tố quan trọng trong lĩnh vực quản lý hạ tầng khi việc áp dụng đám mây ngày càng tăng. 

Giờ bạn đã hiểu những điều cơ bản về Terraform, hãy tiếp tục khám phá các cấu hình nâng cao và tình huống thực tế. Xem các hướng dẫn Terraform của HashiCorp để học cách dùng Terraform cho các tác vụ và trường hợp sử dụng phổ biến, hoặc đọc bài blog 14 Công cụ Kỹ thuật Dữ liệu thiết yếu nên dùng trong năm 2024 để hiểu Terraform phù hợp thế nào trong bộ công cụ của một Kỹ sư Dữ liệu.


Marie Fayard's photo
Author
Marie Fayard

Tôi là một trưởng nhóm kỹ thuật định hướng sản phẩm, chuyên giúp các startup giai đoạn đầu phát triển từ nguyên mẫu đầu tiên đến khi đạt được sự phù hợp sản phẩm - thị trường và xa hơn nữa. Tôi luôn tò mò về cách con người sử dụng công nghệ, và tôi thích làm việc sát sao với nhà sáng lập và các nhóm liên chức năng để biến những ý tưởng táo bạo thành hiện thực. Khi không xây dựng sản phẩm, tôi tìm cảm hứng ở những miền đất mới hoặc xả căng thẳng tại phòng tập yoga.

Câu hỏi thường gặp

Terraform có phù hợp cho các dự án nhỏ, hay chủ yếu dành cho doanh nghiệp lớn?

Terraform là công cụ hữu ích cho dù quy mô dự án của bạn thế nào! Dù bạn chỉ có 5 tài nguyên cần quản lý hay 1000, bạn chắc chắn sẽ thấy lợi ích.

Terraform có giá bao nhiêu?

Terraform là mã nguồn mở và miễn phí sử dụng, nhưng lưu ý rằng nhà cung cấp đám mây của bạn sẽ tính phí đối với các tài nguyên được cung cấp và quản lý thông qua Terraform.

Terraform có thể quản lý cơ sở dữ liệu và các dịch vụ có trạng thái khác không?

Có, Terraform có thể quản lý cơ sở dữ liệu và các dịch vụ có trạng thái khác. Bạn có thể định nghĩa instance, cụm và cấu hình trong các tệp IaC của mình.

Terraform xử lý bí mật và thông tin nhạy cảm trong tệp cấu hình như thế nào?

Terraform khuyến khích các thực tiễn tốt nhất khi xử lý secret bằng cách hỗ trợ biến môi trường, biến được mã hóa và tích hợp với các dịch vụ quản lý secret như HashiCorp Vault hoặc AWS Secrets Manager.

Chủ đề

Học với DataCamp

Courses

Nhập môn Python

4 giờ
6.9M
Nắm vững phân tích dữ liệu với Python chỉ trong 4 giờ. Khóa học online này giúp bạn làm quen với giao diện Python và các thư viện phổ biến.
Xem chi tiếtRight Arrow
Bắt đầu khóa học
Xem thêmRight Arrow