OpenTofu 1.12 vs Terraform: Cuộc Chiến IaC Sau Khi IBM Mua HashiCorp

Tháng 8/2023, HashiCorp lặng lẽ đổi license của Terraform từ MPL 2.0 sang BSL v1.1. Cộng đồng open-source phẫn nộ. Chỉ vài tuần sau, OpenTofu ra đời như một fork community-driven, với cam kết giữ nguyên license open-source.
Gần 3 năm sau, tháng 5/2026, OpenTofu v1.12.0 chính thức ra mắt. Và lần này, nó không chỉ là "một bản copy của Terraform nữa" — nó ship những tính năng mà Terraform chưa bao giờ có.
Đây là câu chuyện thực sự đằng sau cuộc chiến IaC lớn nhất thập kỷ.
Từ Fork Đến Đối Thủ
Khi OpenTofu mới ra đời, nhiều người hoài nghi. "Chỉ là Terraform đổi tên," họ nói. Nhưng thực tế đã chứng minh ngược lại.
Sau khi IBM mua lại HashiCorp vào năm 2024, tương lai của Terraform trở nên bất định. Trong khi đó, OpenTofu — dưới sự bảo trợ của Linux Foundation — liên tục ship feature mới.
Hiện tại, trên Spacelift — nền tảng quản lý IaC phổ biến, nơi các team vận hành Terraform và OpenTofu song song — cứ 100 lần chạy IaC stack thì hơn 58 lần là OpenTofu. Nói cách khác, OpenTofu đã vượt Terraform về tần suất sử dụng thực tế trên nền tảng này.
OpenTofu 1.12: Có Gì Mới?
OpenTofu v1.12.0 ra mắt ngày 14/5/2026, mang theo 5 tính năng đáng chú ý. Đây không phải cập nhật nhỏ — đây là những feature mà developer đã request suốt nhiều năm.
1. Dynamic prevent_destroy
Đây có lẽ là feature được chờ đợi nhất.
Trước đây, prevent_destroy là một boolean hardcode trong config. Bạn muốn bảo vệ database production khỏi bị xóa? Phải set true ở mọi nơi — kể cả dev environment, nơi bạn muốn có thể destroy và recreate thoải mái.
Giờ đây, bạn có thể dùng biến:
variable "prevent_destroy_database" {
type = bool
default = true
}
resource "example_database" "example" {
# ...
lifecycle {
prevent_destroy = var.prevent_destroy_database
}
}
Production giữ true, dev set false. Cùng một module, khác hành vi. Đơn giản nhưng giải quyết vấn đề lớn.
Đây mới chỉ là bước đầu. Đội ngũ OpenTofu đã ám chỉ rằng create_before_destroy và ignore_changes sẽ là những lifecycle argument tiếp theo được làm dynamic.
2. destroy = false — Xóa Khỏi State Mà Không Phá Hạ Tầng
Tính năng này giải quyết bài toán refactor mà ai từng chia monolith thành nhiều stack đều gặp phải.
Trước đây, muốn chuyển resource từ stack này sang stack khác, cần phải:
state rmở stack cũ (resource biến mất khỏi state)importở stack mới- Cầu nguyện trong khoảng trống giữa hai bước
Với destroy = false trong lifecycle block, chỉ cần:
lifecycle {
destroy = false
}
OpenTofu sẽ xóa resource khỏi state mà không gọi API destroy. Hạ tầng thật vẫn nguyên vẹn. Stack mới nhận resource qua import như bình thường.
Đây là feature mà Terraform chưa bao giờ ship.
3. Lock File Hoàn Chỉnh Ngay Lần Init Đầu Tiên
Nỗi đau kinh điển: developer commit lock file từ macOS, CI chạy trên Linux → checksum mismatch → lỗi khó hiểu → phải chạy tofu providers lock thủ công.
OpenTofu 1.12 tự động populate cả zh: và h1: hashes cho tất cả platform ngay lần init đầu tiên. Không cần thêm bước thủ công nào.
# Trước: phải chạy thêm lệnh này sau init
tofu providers lock -platform=linux_amd64 -platform=darwin_arm64
# Bây giờ: init xong là lock file hoàn chỉnh
tofu init
4. Song Song Human-Readable và Machine-Readable Output
Platform team xây tool trên OpenTofu từ trước đến nay phải chọn một trong hai: terminal output (cho developer) hoặc JSON output (cho automation).
OpenTofu 1.12 giới thiệu -json-into=FILENAME:
# Terminal vẫn hiện output bình thường
# JSON stream ghi riêng ra file
tofu plan -json-into=plan-output.json
Từ đó, có thể build real-time progress UI, Slack notification, cost estimate extraction — tất cả song song mà không làm mất trải nghiệm terminal.
5. Parallel Provider Installation
tofu init giờ fetch providers đồng thời. Với stack dùng 10-20 providers (multi-cloud config), thời gian init giảm đáng kể.
So Sánh Trực Tiếp: OpenTofu 1.12 vs Terraform
| Tiêu chí | OpenTofu 1.12 | Terraform (2026) |
|---|---|---|
| License | MPL 2.0 (open-source) | BSL v1.1 (restrictive) |
| Governance | Linux Foundation | IBM/HashiCorp |
Dynamic prevent_destroy |
✅ Có | ❌ Không |
destroy = false lifecycle |
✅ Có | ❌ Không |
| Parallel provider install | ✅ Có | ❌ Chưa |
-json-into output |
✅ Có | ❌ Không |
| Lock file auto-complete | ✅ Có | ❌ Không |
| HCL syntax | Giống hệt | Giống hệt |
| Provider ecosystem | 10,000+ (tương thích) | 10,000+ |
| State file format | Tương thích | Tương thích |
Điểm mấu chốt: OpenTofu là drop-in replacement cho Terraform. Cùng HCL syntax, cùng provider, cùng state format. Migration gần như không có trở ngại.
Vậy Nên Chọn Cái Nào?
Câu trả lời phụ thuộc vào context cụ thể.
Chọn OpenTofu nếu:
- Cần tính năng mới nhanh hơn (dynamic lifecycle, parallel init)
- License open-source là quan trọng với tổ chức
- Không muốn phụ thuộc vào quyết định kinh doanh của IBM
- Đang dùng Spacelift hoặc platform tương tự (hỗ trợ gốc)
Chọn Terraform nếu:
- Tổ chức đã invest vào Terraform Cloud/Enterprise
- Cần support chính thức từ HashiCorp/IBM
- Đội chưa sẵn sàng migrate (dù trở ngại rất thấp)
Đánh giá: Nếu bắt đầu project mới năm 2026, không có lý do gì để chọn Terraform thay vì OpenTofu. Đang dùng Terraform, migration sang OpenTofu là rủi ro thấp và có thể thực hiện bất cứ lúc nào.
Tác Động Đến Workflow DevOps
OpenTofu 1.12 không chỉ là tool update — nó phản ánh xu hướng lớn hơn:
-
Community-driven innovation thắng thế. Khi công ty đổi license để "bảo vệ business model", community sẽ tạo lựa chọn thay thế. Và community thường ship nhanh hơn.
-
IaC là chiến trường. Terraform từng thống trị tuyệt đối. Giờ có đối thủ thực sự. Cạnh tranh tốt cho developer.
-
Platform engineering thúc đẩy tỷ lệ sử dụng. Internal Developer Platforms cần IaC đáng tin cậy, open-source, không vendor lock-in. OpenTofu phù hợp hoàn hảo.
Kết Luận
Cuộc chiến IaC năm 2026 không còn là "Terraform vs những kẻ thách thức nhỏ bé." OpenTofu đã trưởng thành, được Linux Foundation bảo trợ, và đang ship feature mà Terraform chưa có.
Với hơn 25,000 GitHub stars, 58% tỷ lệ sử dụng trên Spacelift, và v1.12 đầy ấn tượng, OpenTofu không còn là lựa chọn thay thế — nó là sự lựa chọn mặc định cho nhiều team.
Câu hỏi không còn là "có nên dùng OpenTofu không?" mà là "khi nào bạn sẽ switch?"
Bài viết được hỗ trợ bởi AI (Amy 🌸). Nội dung đã được kiểm duyệt bởi tác giả.
Related Posts
Crossplane: Khi IaC Gặp Kubernetes — Liệu Có Thay Thế Được Terraform?
Crossplane vừa chính thức CNCF graduation, đánh dấu sự trưởng thành của công cụ IaC Kubernetes-native. Liệu đây có phải là hồi chuông báo tử cho Terraform trong kỷ nguyên platform engineering?
AI Bot Spam Đang Giết Chết Open Source: Câu Chuyện Từ Archestra
Một startup Y Combinator nhận 253 comment rác từ AI bot chỉ trong 1 issue, 27 PR không qua test cho 1 feature duy nhất. Đây là vấn đề thực sự mà mọi maintainer đang phải đối mặt.
Terraform Cho Developer: IaC Không Khó Như Nghĩ
Đã bao giờ click-click trên AWS Console rồi quên mất đã tạo gì? Terraform giải quyết chính xác vấn đề đó. Hướng dẫn từ zero cho developer.