HashiCorp宣布了Terraform 1.3版本发布,该版本引入带有默认值的可选对象类型属性,并扩展了moved
模块的功能。
Terraform 的类型约束让模块作者能够对输入变量的值进行验证。为处理复杂情况,开发者常用object
类型以允许命名属性集合拥有各自的类型。然而,这也就意味着模块使用者需要为所有属性赋值,甚至包括那些与当前任务无关的。
在 1.3 版本中可以为对象属性赋默认值,这个功能最初是在 Terraform 0.14 版本中实验性质加入支持。下面的例子中展示了定义变量时如何设置默认值:
默认参数是可选的,如果不进行指定,Terraform 将使用类型中对应的null
值为默认值。如果指定了非空值为默认值,那么这个属性在接收模块中永远非空。当调用者没有设置默认值或调用者明确将属性值设置为null
时,Terraform 都会设置默认值。
在 1.1 版本中引入了moved
移动块,为重构配置文件中的资源提供了程序化的手段。Terraform 会通过每个模块或资源的地址对比新配置与先前状态,移动或重命名对象都会导致 Terraform 销毁旧地址的对象并在新地址创建新的对象。而借助配置文件的移动块可以让 Terraform 将旧地址的已有对象视为是当前属于新地址的对象。
这种行为与terraform state mv
命令相同,但移动块允许直接在配置文件内追踪资源的移动。在最初的版本中,移动块只支持在同一本地路径内的模块间重构。1.3 版本中通过新增在第三方及不同来源模块中重构资源的功能,取消了这层限制。这也包括了从Terraform云端托管的私有注册中心,Terraform注册中心,或者任何source
参数中的选项。
1.3 版本的发布与Terraform v1.0的兼容性承诺相符,该承诺表示,1.x 的任何版本更新都不会对工作流产生影响,也不需要升级任何工具。虽然大多用户都不会受这次版本升级的影响,但部分行为可能会需要额外的升级步骤。比如在 1.3 版本中,一些未维护的状态存储后端将被废弃,包括:artifactory
、etcd
、manta
,以及swift
。
更多关于 1.3 版本发布的细节可以参考文档和版本说明。Terraform 1.3 目前可从HashiCorp官网下载,也可以在 Terraform 云端使用。
原文链接:
Terraform 1.3 Release Introduces Simplified Refactoring Experience
相关阅读:
评论