Terraform 1.4 发布:改进 CLI 体验与新增功能
HashiCorp 发布了 Terraform 1.4 版本,主要针对 Terraform Cloud 环境进行了多项改进,包括 CLI 对结构化运行输出和 OPA 策略结果的支持。此外,新版本还引入了 terraform_data 资源,作为 Null 工具提供者的原生替代品。
terraform_data 资源的引入
terraform_data 资源是内置的 null 资源替代品,两者本身不执行任何操作,但在资源替换不适用的情况下非常有用。terraform_data 实现了标准的资源生命周期,无需配置提供者即可使用。
主要用例包括:
- 存储需要管理资源生命周期的值。
- 在缺乏逻辑管理资源的情况下触发配置器。
例如,replace_triggered_by 可以在引用的项目发生变化时替换资源。以下示例展示了当 aws_ecs_service 实例被替换时,aws_appautoscaling_target 也会被替换:
resource "aws_appautoscaling_target" "ecs_target" {
lifecycle {
replace_triggered_by = [
aws_ecs_service.svc.id
]
}
}在没有合适属性强制替换的情况下,terraform_data 可以与本地值或输入变量一起使用。以下示例中,每当 revision 变量值发生变化时,example_database 资源将被替换:
variable "revision" {
default = 1
}
resource "terraform_data" "replacement" {
input = var.revision
}
resource "example_database" "test" {
lifecycle {
replace_triggered_by = [terraform_data.replacement]
}
}CLI 驱动的结构化运行输出
Terraform 1.4 扩展了 Terraform Cloud 中的结构化运行输出,使其也支持 CLI 运行。这一改进提供了更友好的运行结果表示,此前仅支持通过 UI、版本控制集成或 API 发起的运行。
OPA 策略支持
Terraform Cloud 此前已支持 Open Policy Agent (OPA),Terraform 1.4 进一步在 CLI 驱动的运行中添加了对 OPA 策略结果的支持。现在,OPA 策略和 Sentinel 策略在运行中具有同等地位。此外,如果策略失败且允许覆盖,CLI 还支持手动覆盖。
其他改进
- 错误处理:
terraform plan在遇到错误时仍会保存计划文件,便于排查问题。 - 工作空间创建:新增
-or-create标志,简化了自动创建工作空间的过程。
更多关于 Terraform 1.4 的详细信息,请参阅文档或更新日志。Terraform 1.4 可从 HashiCorp 网站下载,也可在 Terraform Cloud 中使用。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。