写点什么

今夏发布的 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:451329
用户头像

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

关注

评论

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

能源数字化:云厂商的角逐与竞争焦点

脑极体

小程序页面介绍

小恺

7月月更

计算机操作系统之进程与线程

未见花闻

7月月更

如果设计业务微服务架构 - 作业

阿拉阿拉幽幽

图解网络:什么是DHCP动态主机配置协议?

wljslmz

网络协议 DHCP 网络技术 7月月更

《看完就懂系列》项目中的权限管理复杂吗?

南极一块修炼千年的大冰块

7月月更

模块六作业 - 拆分电商系统为微服务

Elvis FAN

Spring IOC

武师叔

7月月更

闭包

Jason199

js 闭包要点 闭包函数 7月月更

什么时候会触发fullGC

技术小生

JVM GC 7月月更

OKALEIDO:我们为何如此看好多媒体NFT板块?

西柚子

IoT物联网安全架构设计方案

明亮安全观

网络安全 IoT IoT安全

Python 入门指南之输入和输出

海拥(haiyong.site)

7月月更

拆分电商系统为微服务

joak

leetcode 932. Beautiful Array 漂亮数组(中等)

okokabcd

LeetCode 分治 算法与数据结构

Python Asyncio 初探:基本概念和模式

宇宙之一粟

Python asyncio 7月月更

想要治好水,龙王也要拜拜这朵云

脑极体

应用上容器云的准入条件和最佳实践

穿过生命散发芬芳

7月月更 应用上云

初始Envoy项目

阿泽🧸

envoy 7月月更

电商微服务

intelamd

【Python技能树共建】python selectolax 模块 & Python爬虫模拟登录

梦想橡皮擦

Python 爬虫 7月月更

【刷题记录】5. 最长回文子串

WangNing

7月月更

【C#】System.Linq,万能的查询语句

萧然🐳

C# 7月月更 Linq

浅尝了一下TypeScript,上头了!

为自己带盐

typescript 7月月更

Binder驱动

北洋

Andriod 7月月更

怎样的工作要辞职呢?

KEY.L

7月月更

5G NR RRC协议总体介绍

柒号华仔

5G 7月月更

康威定律如何解释微服务的合理性

源字节1号

程序员 软件开发

Qt | 定时器的使用 QTimer

YOLO.

定时器 qt 7月月更

【愚公系列】2022年07月 Java教学课程 02-Java语言JRE和JDK

愚公搬代码

7月月更

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