Những điều cần biết về Infrastructure as Code (IaC) & Terraform & Hướng dẫn cài đặt Terraform

Bạn có bao giờ gặp cảnh phải thiết lập lại toàn bộ server chỉ vì một lỗi cấu hình nhỏ? Hoặc từng loay hoay giữa hàng tá tài liệu hướng dẫn thủ công, trong khi deadline dự án cận kề? Đó là lúc bạn nhận ra: Quản lý hạ tầng bằng tay vừa tốn thời gian, vừa tiềm ẩn nhiều rủi ro khó lường.
Trong kỷ nguyên của DevOps và Cloud, Infrastructure as Code (IaC) đã trở thành “bảo bối” giúp đội ngũ kỹ sư không chỉ tự động hóa việc dựng hạ tầng mà còn biến mọi thao tác lặp lại thành một dòng code duy nhất. Chỉ với vài cú gõ phím, bạn có thể tạo mới, mở rộng, thu nhỏ hoặc phá huỷ toàn bộ hệ thống – dễ dàng như deploy một ứng dụng.
Infrastructure as Code (IaC) là phương pháp “lập trình hóa” hạ tầng: biến các bước thiết lập phức tạp thành code, để mọi thứ đều có thể tự động hoá, kiểm soát phiên bản và áp dụng lại dễ dàng.
Và trong số các công cụ IaC, Terraform nổi bật nhờ tính đa năng, mạnh mẽ và đơn giản. Bài viết này sẽ giúp bạn nắm vững bản chất của IaC, lý do nên chọn Terraform và cách bắt đầu ứng dụng thực tế – dù bạn là DevOps, Cloud Engineer hay chỉ mới nhập môn Cloud.
1 Những điều cần biết về IaC
IaC là gì?
IaC (Infrastructure as Code) là phương pháp quản lý và cung cấp cơ sở hạ tầng bằng code, thay vì cấu hình thủ công. Bạn định nghĩa hạ tầng (máy chủ, network, storage, …) bằng các file code (JSON, YAML, HCL…). Sau đó, chỉ với một lệnh thực thi, toàn bộ hạ tầng được tự động dựng lên hoặc cập nhật theo mong muốn của bạn.
1.1 Lợi ích chính
- Tự động hóa: Giảm thiểu thao tác tay, hạn chế lỗi cấu hình thủ công.
- Đồng nhất & lặp lại: Dễ dàng tái sử dụng và kiểm soát phiên bản.
- Dễ scale: Phù hợp với môi trường cloud/hybrid cloud, khi nhu cầu tài nguyên biến động.
- Review & kiểm thử: Hạ tầng cũng là code, dễ dàng review, kiểm tra trước khi deploy.
2 Hình thành ý tưởng về IaC
Hạ tầng là nền tảng cho mọi ứng dụng hiện đại. Để đảm bảo sự ổn định, mở rộng, và giảm rủi ro, doanh nghiệp cần tự động hóa quản lý hạ tầng. IaC giúp chuyển đổi cơ sở hạ tầng từ quy trình thủ công sang tự động hoá.
Quy trình hình thành ý tưởng:
- Nhận diện vấn đề: Quản lý hạ tầng thủ công khó kiểm soát, dễ lỗi.
- Đưa ra giải pháp: Sử dụng code để định nghĩa, tạo, cập nhật và xóa hạ tầng một cách tự động.
- Chọn công cụ phù hợp với nhu cầu và quy mô doanh nghiệp.
3 Các công cụ IaC phổ biến
- Terraform (HashiCorp): Hỗ trợ đa nền tảng cloud (AWS, Azure, GCP, …), open-source, cộng đồng mạnh.
- AWS CloudFormation: Dành riêng cho AWS, tích hợp sâu với dịch vụ AWS.
- Ansible: Mạnh về automation, cấu hình và deployment.
- Pulumi: Dùng các ngôn ngữ lập trình phổ biến để viết IaC.
- Chef, Puppet: Tập trung vào cấu hình hệ thống.
Tóm tắt ưu nhược điểm của các công cụ IaC:
Công cụ | Ưu điểm | Nhược điểm |
---|---|---|
Terraform | Đa nền tảng, open-source | Không mạnh về config |
CloudFormation | Native AWS, tích hợp tốt | Chỉ dùng AWS |
Ansible | Dễ học, mạnh về config | Yếu về provisioning |
4 Terraform là gì? Tại sao lại chọn Terraform?
Terraform là công cụ mã nguồn mở của HashiCorp, giúp bạn định nghĩa, provisioning và quản lý hạ tầng trên nhiều cloud khác nhau bằng cú pháp khai báo đơn giản (HCL).
4.1 Điểm mạnh của Terraform
- Open-source & miễn phí.
- Khai báo (Declarative): Bạn chỉ cần “diễn tả điều bạn muốn”, Terraform tự động tính toán các bước thực thi.
- Multi-cloud: Quản lý nhiều nhà cung cấp cloud khác nhau (AWS, Azure, GCP, Alibaba Cloud, …) chỉ với một bộ code duy nhất.
- Modular: Dễ dàng chia nhỏ cấu hình, tái sử dụng module cho từng phần hạ tầng.
4.2 Quy trình hoạt động cơ bản
- Viết code (file
.tf
) mô tả hạ tầng mong muốn. terraform plan
: Xem trước các thay đổi sẽ được thực thi.terraform apply
: Thực thi, dựng hạ tầng tự động.terraform destroy
: Xóa toàn bộ hạ tầng khi không còn cần thiết.
4.3 Ví dụ cơ bản với Terraform (AWS)
Tạo 1 AWS EC2:
provider "aws" {
region = "ap-southeast-1"
}
resource "aws_instance" "web" {
ami = "ami-0c55b159cbfafe1f0"
instance_type = "t2.micro"
}
5 Hướng dẫn cài đặt Terraform
Để bắt đầu với IaC cùng Terraform, bạn cần cài đặt công cụ này trên máy tính cá nhân. Ngoài ra, việc sử dụng một trình soạn thảo code mạnh mẽ như Visual Studio Code sẽ giúp quá trình viết và quản lý file Terraform hiệu quả hơn.
6 Cài đặt Terraform
6.1 Trên Linux (Ubuntu 18.04, 20.04, 22.04)
# 1. Cài đặt HashiCorp GPG key
wget -O- https://apt.releases.hashicorp.com/gpg | \
gpg --dearmor | \
sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg
# 2. Thêm repository chính thức của HashiCorp
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] \
https://apt.releases.hashicorp.com $(lsb_release -cs) main" | \
sudo tee /etc/apt/sources.list.d/hashicorp.list
# 3. Cập nhật và cài đặt Terraform
sudo apt update
sudo apt install terraform
6.2 Trên Windows 7, 10, 11
- Truy cập trang chủ Terraform: https://developer.hashicorp.com/terraform/install#windows
- Tải về file
.zip
cho Windows. - Giải nén, copy file
terraform.exe
vào thư mục mong muốn (nên đặt ởC:\terraform
). - Thêm thư mục này vào biến môi trường PATH:
- Tìm “Environment Variables” → “Path” → Edit → Add đường dẫn vừa giải nén.
- Kiểm tra bằng lệnh
terraform version
trong CMD hoặc PowerShell.
6.3 Trên macOS
6.3.1 Qua Homebrew (Khuyến nghị)
brew tap hashicorp/tap
brew install hashicorp/tap/terraform
6.3.2 Hoặc tải file nén từ trang chủ
- Tải file
.zip
tại https://developer.hashicorp.com/terraform/install#darwin - Giải nén và di chuyển vào
/usr/local/bin
hoặc thư mục bất kỳ đã có trong PATH.
7 Cài đặt Visual Studio Code (VSCode) & Extension cho Terraform
7.1 Cài đặt VSCode
- Tải về từ https://code.visualstudio.com/
- Cài đặt như các phần mềm thông thường.
7.2 Cài Extension hỗ trợ Terraform
-
Mở VSCode, vào phần Extensions (Ctrl+Shift+X).
-
Tìm và cài đặt các extension sau:
- HashiCorp Terraform (by HashiCorp)
- Prettier - Code formatter (khuyến nghị để format code đẹp hơn)
- YAML, Bracket Pair Colorizer (tuỳ chọn)
-
(Khuyến nghị) Bật tính năng format on save để code luôn đẹp, chuẩn.
Tip: Sau khi cài đặt xong, kiểm tra phiên bản Terraform bằng lệnh:
terraform version
Sau đó tạo thử một file main.tf
để xác thực VSCode nhận diện cú pháp Terraform.