HashiCorp ra mắt Terraform 1.15: Nguồn Module Động và Cơ chế Lỗi thời mới

Công nghệ08 tháng 6, 2026·5 phút đọc

HashiCorp đã phát hành Terraform 1.15, giới thiệu các tính năng quan trọng như nguồn module động, cơ chế đánh dấu lỗi thời chính thức cho biến và đầu ra, cũng như hỗ trợ Windows ARM64. Bản cập nhật này giải quyết nhiều yêu cầu lâu đời của cộng đồng nhằm thu hẹp khoảng cách với đối thủ mã nguồn mở OpenTofu.

HashiCorp ra mắt Terraform 1.15: Nguồn Module Động và Cơ chế Lỗi thời mới

HashiCorp đã chính thức phát hành phiên bản Terraform 1.15, mang đến loạt cập nhật quan trọng bao gồm nguồn module động, cơ chế đánh dấu lỗi thời (deprecation) cho biến và đầu ra, cùng hỗ trợ nguyên bản cho Windows ARM64. Bản phát hành này, được công bố vào cuối tháng 4, đã giải quyết nhiều yêu cầu cấp thiết từ cộng đồng người dùng, dù một số tính năng nổi bật đã có sẵn trên nền tảng OpenTofu từ gần hai năm trước.

Thay đổi lớn nhất về ngôn ngữ trong phiên bản 1.15 là khả năng sử dụng biến trong thuộc tính nguồn (source) và phiên bản (version) của module. Trước đây, các thuộc tính này bắt buộc phải là chuỗi ký tự tĩnh (string literals), khiến các nhóm phát triển phải sao chép khối module khi cần hướng các môi trường khác nhau đến các registry hoặc các phiên bản ghim (version pins) khác nhau.

Thuộc tính mới const trong khối biến cho phép đánh dấu biến có thể được giải quyết trong quá trình terraform init, trước khi cấu hình hoàn chỉnh được đánh giá. Các chuỗi nguồn module sau đó có thể tham chiếu đến các biến này bằng cú pháp nội suy tiêu chuẩn. Tính năng này cũng mở rộng sang các module lồng nhau, miễn là các biến đầu vào của chúng cũng được khai báo với const = true.

Bổ sung ngôn ngữ chính khác là thuộc tính deprecated cho các khối biến và đầu ra. Các tác giả module giờ đây có thể đính kèm thông báo lỗi thời trực tiếp vào cấu hình. Terraform sẽ phát ra cảnh báo chẩn đoán trong quá trình xác thực bất cứ khi nào người gọi truyền giá trị cho một biến đã bị đánh dấu lỗi thời hoặc tham chiếu đến một đầu ra cũ.

Daniel Schmidt, kỹ sư cốt lõi tại HashiCorp, giải thích rằng khi giai đoạn ân hạn kết thúc, các tác giả có thể phát hành phiên bản module mới mà không chứa biến lỗi thời và thay thế tất cả các tham chiếu cũ. Tính năng này cũng hiển thị các thông báo lỗi thời do nhà cung cấp (provider) định nghĩa trên các thuộc tính và khối tài nguyên, vốn trước đây hiển thị không nhất quán.

Phiên bản 1.15 cũng giới thiệu hàm convert để chuyển đổi kiểu dữ liệu trực tiếp (inline), giải quyết các trường hợp ngoại lệ trong HCL (HashiCorp Configuration Language) nơi cơ chế suy luận kiểu của Terraform tạo ra kết quả không mong muốn. Các vấn đề thường gặp bao gồm các biểu thức điều kiện mà hai nhánh suy luận ra các kiểu khác nhau, hoặc việc tạo ra các vùng chứa rỗng có kiểu dữ liệu: {} được treated là một đối tượng rỗng thay vì một map rỗng, và [] là một tuple thay vì một danh sách (list). Hàm mới cho phép các kỹ sư chỉ định rõ ràng kiểu dữ liệu mong muốn.

Ngoài ra, các khối đầu ra (output blocks) giờ đây chấp nhận thuộc tính type, mang lại khả năng xác thực và tài liệu hóa tương tự như đã tồn tại lâu nay cho các biến đầu vào. Bản phát hành này cũng thêm các tệp nhị phân Windows ARM64 nguyên bản, và backend S3 giờ hỗ trợ thông tin đăng nhập được tạo ra lệnh aws login từ AWS CLI v2.32.0, loại bỏ nhu cầu về các khóa truy cập dài hạn trong bối cảnh này.

Tính năng nguồn module động trong Terraform 1.15 dấy lên sự so sánh với OpenTofu, bản fork mã nguồn mở của Terraform được duy trì dưới Quỹ Linux. OpenTofu đã tung ra tính năng tương tự trong phiên bản 1.8.0 vào tháng 8 năm 2024. Đội ngũ OpenTofu trước đây đã mô tả tính năng này, mà họ gọi là đánh giá biến và locals sớm (early variable and locals evaluation), cho phép sử dụng biến và locals trong các nguồn module, cấu hình backend và cài đặt mã hóa trạng thái.

Hai dự án đã đi theo những hướng khác nhau kể từ khi OpenTofu fork từ Terraform 1.5 vào tháng 8 năm 2023. Trong khi Terraform tập trung vào các giá trị nhất thời (ephemeral values) và tích hợp sâu hơn với HashiCorp Cloud Platform, thì OpenTofu lại giới thiệu mã hóa trạng thái end-to-end nguyên bản và hỗ trợ for_each trên các khối provider.

Hỗ trợ đánh dấu lỗi thời cho biến trong Terraform 1.15 cũng có một tính năng tương đương trên OpenTofu, mặc dù chi tiết triển khai khác nhau. Việc triển khai của Terraform 1.15 thêm khả năng kiểm soát chi tiết hơn, bao gồm khả năng nối các đầu ra lỗi thời thông qua nhiều lớp module với các ngưỡng cảnh báo riêng biệt.

Bản phát hành 1.15 cũng bao gồm các cải tiến cho khung kiểm thử (test framework). Các hàm giờ đây có thể được sử dụng bên trong các khối mock_dataoverride_resource, giải quyết khiếu nại thường xuyên rằng dữ liệu kiểm thử dựa trên các định dạng như GUID hoặc ID tài nguyên không thể được tạo động. Trước đây, việc cố gắng gọi một hàm như uuid() bên trong khối mock sẽ trả về lỗi.

Ashish Kasaudhan, một chuyên gia trong lĩnh vực này, nhận định trên LinkedIn rằng Terraform 1.15 "không chỉ là một bản phát hành tăng cấp đơn thuần", trích dẫn danh sách các vấn đề mà các kỹ sư muốn sửa chữa từ nhiều năm nay.

"Đây có thể là một trong những bản cập nhật Terraform tập trung vào kỹ sư nhất trong nhiều năm. HashiCorp không tung ra một tính năng hào nhoáng nào. Thay vào đó, họ đã sửa chữa loại vấn đề mà các nhóm nền tảng (platform teams) đã phàn nàn từ nhiều năm qua." -- Ashish Kasaudhan

Ngoài ra, lệnh terraform validate giờ đây xác thực khối backend, kiểm tra xem loại backend có tồn tại hay không và các thuộc tính bắt buộc có hiện diện không. Điều này được đánh giá là một thay đổi nhỏ nhưng có tác động thực tế đáng kể trong môi trường CI (Continuous Integration), vì trước đó một backend cấu hình sai chỉ thất bại tại thời điểm terraform init, sau khi các provider đã được tải xuống và làm lãng phí thời gian pipeline.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗