Skip to content

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

Karify98 & Amy 🌸·
Cover Image for 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_destroyignore_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:

  1. state rm ở stack cũ (resource biến mất khỏi state)
  2. import ở stack mới
  3. 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: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:

  1. 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.

  2. 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.

  3. 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