写点什么

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

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

关注

评论

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

趁着课余时间学点python(二)缩进 标识符 保留字 注释 输入输出的理解

ベ布小禅

8月日更

Linux之watch命令

入门小站

Linux

在线网页快捷方式创建工具

入门小站

工具

DDD领域驱动设计·学习应用·一

小诚信驿站

领域驱动设计 领域驱动模型DDD 中台架构 领域驱动

12年高级工程师的“飞升之路”

Geek_f90455

Java 程序员 后端

一个好的产品需要一个好的产品

刘宇

产品经理

弱口令到底是什么牛马?

网络安全学海

黑客 网络安全 信息安全 渗透测试 漏洞挖掘

第一次凡尔赛,字节跳动3面+腾讯6面一次过,谈谈我的大厂面经

编程菌

Java 编程 程序员 面试 计算机

为什么需要数据库连接池

赖猫

MySQL 数据库 后端 连接池

Vue组件通信之ref

Augus

8月日更

【最不佳实践】函数计算的函数是什么意思

刘宇

Serverless

各种消息队列设计要点与对比

海明菌

消息队列 消息队列对比 消息队列系统设计

2020-2021京东Java面试真题解析

Geek_f90455

Java 程序员 后端

2020-2021阿里巴巴Java面试真题解析

Geek_f90455

Java 程序员 后端

从未如此简单:基于Serverless架构的博客

刘宇

Serverless Hexo 博客

黄金圈法则解读数据中台(1):为什么需要数据中台

水滴

数据中台 黄金圈法则 8月日更

【最不佳实践】文件上传并不简单

刘宇

Python Serverless 文件上传

网络攻防学习笔记 Day94

穿过生命散发芬芳

网络攻防 8月日更

SpringBoot 中的事务处理

xcbeyond

事务 springboot 8月日更

2020-2021华为Java面试真题

Geek_f90455

Java 程序员 后端

Elasticsearch VS ClickHouse

Se7en

奥运“哮喘”运动员为什么越来越多?

脑极体

Windows10下JDK8下载及java环境配置

Bob

8月日更

我测了啊,我真测了!

QualityFocus

测试 质量保障 线上问题 缺陷

「SQL数据分析系列」15. 元数据

Databri_AI

sql 脚本 元数据

再见 Jenkins!几行脚本搞定自动化部署,这款神器有点厉害

编程菌

Java 编程 程序员 计算机 技术宅

Hbase 入门详解

Se7en

王者并发课-钻石2:分而治之-如何从原理深入理解ForkJoinPool的快与慢

MetaThoughts

Java 多线程 并发

缓存数据历险记(一)--被缓存警察上课一天

卢卡多多

redis 缓存 8月日更

NLP随笔(三)

毛显新

人工智能 自然语言处理 神经网络 深度学习

JDK 从8升级到11,使用 G1 GC,HBase 性能下降近20%。JDK 到底干了什么?

毕昇JDK社区

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