写点什么

今夏发布的 Terraform 0.12 将提供 for 循环和第一类表达式

  • 2018-08-03
  • 本文字数:972 字

    阅读完需:约 3 分钟

HashiCorp 将于今年夏末发布 Terraform 0.12 。该版本根据社区输入和反馈中一些广受关注的问题,对 Terraform 做了一系列新的改进。其中的主要改进包括第一类表达式(first-class expressions)、for 表达式和条件语句。对一些 Terraform 用户而言,升级到新版本会导致重大更改。

第一类表达式将简化 Terraform 脚本编写,并为语言额外添加一些优点。在当前的版本中,表达式作为插值序列(interpolation sequences)区别对待,以双引号包裹。在 0.12 版中,表达式将成为语言的原生部分,可如下直接编写:

复制代码
variable "ami" {}
# Terraform 0.11 及早期版本
resource "aws_instance" "example" {
ami = "${var.ami}"
}
# Terraform 0.12
resource "aws_instance" "example" {
ami = var.ami
}

该改进也将支持在表达式中通过[...]{...}直接使用 List 和 Map,并可与新的 for 表达式一并使用支持动态过滤,以及配置中 List 和 Map 的相互转换。在对结果做过滤时,可选择使用 if 语句。例如:

复制代码
# Terraform 0.12
output "instance_public_ip_addresses" {
value = {
for instance in aws_instance.example:
instance.id => instance.public
if instance.associate_public_ip_address
}
}

尽管条件运算符(“… ? … : …”)已加入 Terraform 中有一段时间了,但它的两部分返回值总是需要求值,因此使用受限。这个问题在即将推出的 0.12 版中得到了修正,条件运算符的运行符合用户的期望。条件运算符的另一个主要改进是它将可应用于任何类型。例如:

复制代码
# Terraform 0.12
locals {
first_id = length(azurerm_virtual_machine.example) > 0 ? azurerm_virtual_machine.example[0].id : ""
}

在当前版本的 Terraform 中,该例子将会产生失败。因为无论表达式解析为什么,两部分的返回值都需要做求值。 要在 Terraform 中引入这些改进,需重新实现底层的配置语言。Terraform 核心团队正努力实现更改的最小化,并为迁移到 0.12 版提供了“升级指南”。在版本发布前,推荐用户在脚本中对Terraform 的版本进行限定。团队认为,聚焦于该版本的配置改进,可使重大改进最小化,并可更快地转向使用未来特性。团队将继续在技术博客上介绍即将推出的改进,并针对当前和未来的改进寻求社区的反馈

查看英文原文: Terraform 0.12 Releasing This Summer With for Loops and First-Class Expressions

2018-08-03 10:451213
用户头像

发布了 391 篇内容, 共 135.1 次阅读, 收获喜欢 256 次。

关注

评论

发布
暂无评论
发现更多内容

想学习大数据怎么选择培训机构

小谷哥

通过TiOperator部署 TiDB

TiDB 社区干货传送门

实践案例 集群管理 管理与运维 扩/缩容 6.x 实践

TiDB Operator部署TiDB集群的监控与告警

TiDB 社区干货传送门

监控 实践案例 集群管理 管理与运维 扩/缩容

CorelDRAW2023永久和谐版本下载安装教程

茶色酒

CorelDraw2023

文盘Rust -- r2d2 实现redis 连接池

TiDB 社区干货传送门

开发语言

BI智慧仓储,带你体验数字化仓储物流管理

葡萄城技术团队

2022最新版SpringCloudAlibaba笔记,把微服务玩的出神入化

架构师之道

Java 微服务 架构师

“零代码”的瓴羊Quick BI即席分析,业务人员也能轻松上手

夏日星河

java程序员培训好就业吗

小谷哥

RTS超低延时直播技术:保障大型赛事直播零时差互动

阿里云视频云

云计算 阿里云 世界杯

【12.02-12.09】写作社区优秀技术博文回顾

InfoQ写作社区官方

热门活动

Zebec获BNB Chain生态大力支持,ZBC通证将陆续登录一线平台

西柚子

大厂10年经验,我对Java高并发问题方案的总结,堪称教科书级

钟奕礼

Java 程序员 java面试 java编程

多样化功能助力企业精准决策,瓴羊Quick BI数据看板解析

对不起该用户已成仙‖

cleanmymac2023免费绿色版下载安装教程

茶色酒

CleanMyMac2023

远程CG动画制作的神器:RayLink远程控制软件

RayLink远程工具

远程控制软件 远程办公软件 远控软件 远程桌面连接 RayLink

如何使用记事本编写 java 程序(从零开始学 Java 系列课程)

千锋IT教育

linux高可用小知识点汇总-行云管家

行云管家

高可用 ha 双机热备

TiDB 走进东软集团,共建医疗数字化基石

TiDB 社区干货传送门

开发任务都完不成,哪有空搞稳定性?先看看这13条建议|TakinTalks论道

TakinTalks稳定性社区

技术管理

你需要知道的 14 个常用的 JavaScript 函数

千锋IT教育

《程序员修炼手册》,这521道阿里Java面试真题!真的不来看看?

钟奕礼

Java 程序员 java面试 java编程

武汉大数据培训机构怎么样

小谷哥

TiDB集群安装TiDB Dashboard

TiDB 社区干货传送门

集群管理 管理与运维 故障排查/诊断

携手荣耀,出海正当时

荣耀开发者服务平台

开发者 App 出海 荣耀 honor

【分布式技术专题】「架构设计方案」盘点和总结秒杀服务的功能设计及注意事项技术体系

洛神灬殇

分布式架构 秒杀架构 12月日更

Web前端培训机构有哪些?

小谷哥

阿里三面,这200道面试题免费发放,赶紧拿去收藏

钟奕礼

Java 程序员 java面试 java编程

SpringBoot内置tomcat启动过程及原理

京东科技开发者

tomcat 后端 tomcat源码解读 编程‘ spring-boot

前端培训学习就业前景怎么样?

小谷哥

FL Studio正式推出全新21版首发新版DAW(数字音乐工作站)工具

茶色酒

FL STUDIO20.9 FL Studio 21 FL Studio21

今夏发布的Terraform 0.12将提供for循环和第一类表达式_DevOps & 平台工程_Matt Campbell_InfoQ精选文章