
Terraform 2025: HCP Terraform và OpenTofu
Thế giới Terraform đã có nhiều biến động lớn trong năm 2024-2025: HashiCorp bị Broadcom mua lại, việc đổi giấy phép BSL gây tranh cãi, và OpenTofu ra đời như một nhánh mã nguồn mở. Bài viết này cập nhật tình hình và đưa ra gợi ý cho năm 2025.
Nội dung chính
Dòng thời gian các sự kiện quan trọng
- Tháng 8/2023: HashiCorp đổi giấy phép sang BSL (không còn mã nguồn mở hoàn toàn)
- Tháng 9/2023: Cộng đồng công bố dự án OpenTofu
- Tháng 1/2024: OpenTofu phiên bản 1.6 ổn định
- Tháng 4/2024: Broadcom đàm phán mua HashiCorp
- Tháng 11/2024: Broadcom hoàn tất thương vụ
- 2025: Tương lai còn nhiều điều chưa rõ ràng
HCP Terraform (trước đây là Terraform Cloud)
HashiCorp đã đổi tên Terraform Cloud thành HCP Terraform:
// Cấu hình kết nối với HCP Terraform
terraform {
cloud {
organization = "cong-ty-cua-toi"
workspaces {
name = "moi-truong-san-pham"
}
}
}Tính năng mới
- Quản lý trạng thái tốt hơn
- Tích hợp tốt hơn với HCP Vault
- Chính sách dưới dạng mã (Sentinel)
- Kho module riêng tư
- Tích hợp với quy trình CI/CD
Lo ngại về giá cả
Sau khi Broadcom tiếp quản, nhiều người lo ngại:
- Gói miễn phí có thể bị cắt giảm
- Giá doanh nghiệp có thể tăng
- Bị phụ thuộc vào một nhà cung cấp
OpenTofu – Nhánh mã nguồn mở
OpenTofu là phiên bản do cộng đồng phát triển, giữ giấy phép MPL mã nguồn mở:
# Chuyển đổi từ Terraform sang OpenTofu
# 1. Cài đặt OpenTofu
brew install opentofu
# 2. Thay thế lệnh (cú pháp giống hệt)
tofu init # thay vì terraform init
tofu plan # thay vì terraform plan
tofu apply # thay vì terraform apply
# 3. Tệp trạng thái tương thích hoàn toàn
# terraform.tfstate hoạt động bình thường!Tính năng riêng của OpenTofu (2025)
# Mã hóa trạng thái (chỉ có ở OpenTofu)
terraform {
encryption {
key_provider "pbkdf2" "mat_khau" {
passphrase = var.mat_khau_trang_thai
}
method "aes_gcm" "mac_dinh" {
key_provider = key_provider.pbkdf2.mat_khau
}
state {
method = method.aes_gcm.mac_dinh
}
}
}So sánh hai công cụ
| Tiêu chí | Terraform | OpenTofu |
|---|---|---|
| Giấy phép | BSL 1.1 (hạn chế) | MPL 2.0 (mã nguồn mở) |
| Mã hóa trạng thái | Chỉ bản Cloud | Có sẵn |
| Kho provider | registry.terraform.io | Tương thích |
| Hỗ trợ doanh nghiệp | HashiCorp | Cộng đồng/Đối tác |
| Phát triển bởi | HashiCorp | Linux Foundation |
Chọn công cụ nào trong năm 2025?
Nên tiếp tục dùng Terraform khi:
- Cần hỗ trợ kỹ thuật từ nhà cung cấp
- Đang dùng Terraform Cloud/Enterprise
- Ưu tiên sự ổn định
- Tổ chức không muốn rủi ro
- Đã có hợp đồng với HashiCorp
Nên xem xét OpenTofu khi:
- Quan trọng việc mã nguồn mở
- Lo ngại về Broadcom làm chủ sở hữu
- Cần tính năng mã hóa trạng thái
- Muốn công cụ do cộng đồng phát triển
- Bắt đầu dự án mới
Các thực hành tốt cho năm 2025
# 1. Giới hạn phiên bản rõ ràng
terraform {
required_version = ">= 1.5.0, < 2.0.0"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.0"
}
}
}
# 2. Lưu trữ trạng thái từ xa với mã hóa
terraform {
backend "s3" {
bucket = "trang-thai-terraform"
key = "san-pham/terraform.tfstate"
region = "ap-northeast-1"
encrypt = true
dynamodb_table = "khoa-terraform"
}
}
# 3. Dùng workspace cho các môi trường
terraform workspace new staging
terraform workspace new production
# 4. Dùng module để tái sử dụng
module "vpc" {
source = "terraform-aws-modules/vpc/aws"
version = "5.0.0"
}Cách chuyển đổi
Từ Terraform sang OpenTofu
# 1. Thử nghiệm ở môi trường phát triển trước
cd moi-truong-dev
tofu init
tofu plan # Nên thấy không có thay đổi
# 2. Cập nhật quy trình CI/CD
# Thay 'terraform' bằng 'tofu'
# 3. Cập nhật tài liệu
# 4. Triển khai dần đến môi trường sản phẩmGiữ linh hoạt cho cả hai
#!/bin/bash
# Script bọc để dùng cả hai công cụ
if command -v tofu &> /dev/null; then
tofu "$@"
else
terraform "$@"
fiCác lựa chọn khác đáng theo dõi
- Pulumi: Dùng ngôn ngữ lập trình thay vì HCL
- Crossplane: Quản lý hạ tầng trên Kubernetes
- AWS CDK: CloudFormation với mã lập trình
- CDKTF: CDK cho Terraform
Lời khuyên từ Fullstack Station
Gợi ý cho năm 2025:
- Đang dùng Terraform: Tiếp tục dùng, theo dõi tiến độ OpenTofu
- Dự án mới: Xem xét OpenTofu để đảm bảo tương lai
- Doanh nghiệp: Chờ xem chiến lược của Broadcom rõ ràng hơn
- Học cả hai: Cú pháp gần như giống nhau, dễ chuyển đổi
- Tránh bị khóa: Dùng tính năng Terraform cơ bản, tránh tính năng riêng của Cloud
Năm 2025 sẽ là năm quan trọng để xem Broadcom định hướng thế nào. Hãy giữ các lựa chọn mở!
