HashiCorp Terraform 1.9 现已正式发布,可供下载,并可以在HCP Terraform中使用。Terraform 1.9 包括了Terraform社区高度请求的多项新功能,以及对现有功能的多项改进,以提高开发者的生产力。
特性一:跨对象引用输入变量验证
Terraform 0.13 首次引入的输入变量验证确保在执行前输入变量值满足特定要求。这减少了由于无效或意外的用户输入导致的配置错误和配置错误的可能性,并允许Terraform作者创建更可靠的代码,并通过自定义错误消息向用户提供清晰的反馈。
以前,输入验证的条件块只能引用变量本身。使用Terraform 1.9,条件现在可以引用其他输入变量,甚至可以引用其他对象,如数据源和局部值,大大扩展了开发者可以验证的场景类型。
以下示例演示了一个引用不同变量值的变量验证条件。以前,这种情况需要在配置后面的数据源或资源上使用前提条件块,可能导致部分完成的部署:

如果用户尝试使用 create_cluster = false 执行此Terraform配置,并且没有为 cluster_endpoint 提供值,他们将遇到验证错误:

在下一个示例中,使用数据源动态验证用户提供的实例类型:

这项强大的新功能为Terraform作者解锁了许多新的和动态的输入验证可能性,使配置工作流程更加可靠。
特性二:新的模板字符串函数
Terraform 1.9 还带来了一个新的内置 templatestring 函数。与现有的 templatefile 函数类似,templatestring 旨在渲染动态获取的模板,如来自数据源的结果,而无需将其保存到本地磁盘上的文件。该函数接受两个参数:对当前模块中命名字符串对象的直接引用,以及表示要插值的模板变量的对象。
这个函数最常见的用例是使用数据源从外部位置检索模板,进行转换,然后将其传递给另一个资源。此示例从HTTP位置检索Kubernetes资源清单模板,注入一些输入变量和资源引用,并在 kubernetes_manifest 资源中引用它:

其他改进和下一步
Terraform 1.9 还带来了对现有功能的改进:
在Terraform 1.8中引入的跨类型重构特性的基础上,hashicorp/null提供程序中已弃用的 null_resource 类型现在可以直接使用 moved 块重构为新的 terraform_data 资源类型,允许开发者无缝现代化他们的代码。
removed 块现在可以声明将在关联资源实例销毁时执行的提供程序。这在您想要从配置中删除资源声明,但仍然执行销毁时提供程序的情况下非常有用。有关示例用法,请参阅删除资源文档。
要了解Terraform 1.9中的所有增强功能,请查看完整的 Terraform 1.9 更改日志。要开始使用 HashiCorp Terraform:
点击关注本公众号,了解更多Terraform相关知识!