写点什么

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

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

关注

评论

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

【译文】为什么说Rust是机器人技术的未来

袁承兴

rust 机器人 嵌入式

自定义 SpringBootStarter

子路无倦

做一个纸上谈兵的项目经理

escray

中台上线半年,我总结出了“七宗罪”

punkboy

中台 企业中台 后台开发 业务中台 后台

csapp-chapter1

卓丁

深入理解计算机系统 csapp

React之Context源码分析与实践

费马

源码分析 React useContext Context React-Router

源码分析 | 像盗墓一样分析Spring是怎么初始化xml并注册bean的

小傅哥

源码分析 小傅哥 spring源码 bean注入过程

重磅推出:第14份年度敏捷状态报告(最新2020)

Bob Jiang

敏捷 调查报告 state of agile

csapp-chapter2

卓丁

深入理解计算机系统 csapp

多来点胜利,对冲颓丧

zhoo299

成长 备忘

N皇后问题之位运算解法

孙苏勇

算法 DFS 位运算

除了公关,我还能为公司做点什么?(系列1)

邓瑞恒Ryan

学习 个人成长 自我管理 成长 职业成长

从零到部署:用 Vue 和 Express 实现迷你全栈电商应用(六)

图雀社区

node.js Vue

JUC整理笔记五之梳理Varhandle(下)

JFound

Java

SpringCloud-OpenFeign源码

云淡风轻

Spring Cloud

GitHub上10个不可错过的另类有趣项目

码农神说

GitHub 开源 程序员

愚蠢写作术(2):怎么让你的文章变得冷冰冰

史方远

学习 个人成长 写作

路径依赖 - 偶然决策导致的依赖。

石云升

思维模型 路径依赖 网络效应 沉没成本 价值网依赖

科学提升认知方法之贝叶斯公式

奈学教育

贝叶斯公式

从零到部署:用 Vue 和 Express 实现迷你全栈电商应用(四)

图雀社区

Vue Node

为什么你成不了「超级个体」?

非著名程序员

程序员 互联网 提升认知 认知提升

从零到部署:用 Vue 和 Express 实现迷你全栈电商应用(三)

图雀社区

vue.js Vue Node

从零到部署:用 Vue 和 Express 实现迷你全栈电商应用(五)

图雀社区

Vue Node

我的个人知识管理方法

lidaobing

个人成长 知识管理 PKM

大话设计模式 | 0 面向对象基础

Puran

C# 设计模式

ArrayList浅析

章小传

Java collection 原理 ArrayList

分布式事务 - 三种常见的解决方案

Java收录阁

分布式事务

架构师必备的ToB产品交付之双轮驱动思维模型

常平

产品 极客大学架构师训练营

JDK 15 都发布了,可 Java 8 依然是最爱

古时的风筝

Java Java 25 周年 Java版本

Sula - 可能是西湖区最好用的antd配置框架

开远

大前端 antd sula 配置化开发

如何让解决无法访问 GitHub 的问题?

JackTian

GitHub

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