Terraform 1.6 发布概述
HashiCorp 发布了 Terraform 1.6,带来了多项新改进,包括全新的测试框架。此外,还改进了配置驱动的导入功能、Terraform Cloud CLI 工作流以及 Amazon S3 后端。这是 Terraform 首次在 Business Source License v1.1 (BSL 1.1) 下发布的版本。
主要新特性
测试框架
Terraform 1.6 引入了测试框架,允许创建和运行测试以验证 Terraform 配置的功能。这些测试同样使用 Terraform 的 HashiCorp 配置语言 (HCL) 语法编写。通过 run 块,可以编写单元测试和集成测试,并对各种输入和提供者配置进行断言。
示例:
# main.tf
provider "aws" {
region = "eu-central-1"
}
variable "bucket_prefix" {
type = string
}
resource "aws_s3_bucket" "bucket" {
bucket = "${var.bucket_prefix}-bucket"
}
output "bucket_name" {
value = aws_s3_bucket.bucket.bucket
}
# valid_string_concat.tftest.hcl
variables {
bucket_prefix = "test"
}
run "valid_string_concat" {
command = plan
assert {
condition = aws_s3_bucket.bucket.bucket == "test-bucket"
error_message = "S3 bucket name did not match expected"
}
}配置驱动的导入改进
Terraform 1.6 扩展了 Terraform 1.5 中引入的配置驱动导入功能。现在,id 属性支持表达式,包括字符串插值。
示例:
import {
id = var.bucket_name
to = aws_s3_bucket.example
}
import {
id = "${var.bucket_name},${data.aws_caller_identity.current.account_id}"
to = aws_s3_bucket_versioning.example
}Amazon S3 后端改进
Amazon S3 远程状态后端与 AWS SDK 和 Terraform AWS 提供者更好地对齐,包括将一些属性移动到嵌套块中,支持环境变量,并提供了定制 AWS 服务端点的新选项。
Terraform Cloud 功能增强
Terraform Cloud 用户可以保存云计划以便稍后应用。此新运行模式适用于 Terraform 1.6 CLI 或 Terraform Cloud API。
社区反应
社区对此次发布反应不一。许多用户对新增的测试框架表示赞赏,但也有用户对此次发布与 BSL 1.1 许可证变更同时进行感到失望。
获取方式
Terraform 1.6 现已可从 GitHub 获取。更多详细信息可在 HashiCorp 博客、升级指南和变更日志中找到。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。