Máy chủ web Cloud
figonkingx  

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íTerraformOpenTofu
Giấy phépBSL 1.1 (hạn chế)MPL 2.0 (mã nguồn mở)
Mã hóa trạng tháiChỉ bản CloudCó sẵn
Kho providerregistry.terraform.ioTương thích
Hỗ trợ doanh nghiệpHashiCorpCộng đồng/Đối tác
Phát triển bởiHashiCorpLinux 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ẩm

Giữ 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 "$@"
fi

Cá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ở!

Tham khảo

Comments

Leave A Comment