Terraform 1.6 使测试框架正式可用

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 博客、升级指南和变更日志中找到。

参考资料

阅读 28
0 条评论