写点什么

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

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

关注

评论

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

区块链+数字资产,未来财富的新起点

易观分析

区块链 数字经济

2021年最新基于Spring Cloud的微服务架构分析

爱好编程进阶

Java 面试 后端开发

2021银四特惠:分享字节跳动(提前批

爱好编程进阶

Java 面试 后端开发

Java-String-对象,你真的了解了吗?

爱好编程进阶

Java 面试 后端开发

5 款最棒的 Vue 移动端 UI 组件库 - 特别针对国内使用场景推荐

蒋川

Vue

gRPC学习之六:gRPC-Gateway集成swagger

爱好编程进阶

Java 面试 后端开发

HCIE云计算--灾备

爱好编程进阶

Java 面试 后端开发

流程图太大? 来个流程收缩展开功能

相续心

前端 工作流 流程图 SOP

10年Java开发经验,超过500人面试阿里的同学,总结出这108道面试题

爱好编程进阶

Java 面试 后端开发

985应届进大厂,后端开发两年被裁,对前路迷茫的我

爱好编程进阶

Java 面试 后端开发

Alibaba最新出品Java面试手册,号称金九银十面试“完美日记

爱好编程进阶

Java 面试 后端开发

Dubbo如何处理业务异常,这个一定要知道哦!

爱好编程进阶

Java 面试 后端开发

TASKCTL 消息订阅参数设置说明

敏捷调度TASKCTL

DevOps 分布式 敏捷开发 ETL任务 自动化运维

叮咚!请查收来自一线数据科学家和大数据工程师的实战经验| IDP Meetup No.02 回顾

Baihai IDP

Python 大数据 AI 算法 数据科学

2021阿里技术官重磅推出“Java进阶必备宝典” 5大专题 6000字解析

爱好编程进阶

Java 面试 后端开发

Elasticsearch7

爱好编程进阶

Java 面试 后端开发

Github神作!2021Java秋招高级面试指南,吃透至少阿里P6

爱好编程进阶

Java 面试 后端开发

Docker下,两分钟极速体验Nacos配置中心

爱好编程进阶

Java 面试 后端开发

Elasticsearch7(1)

爱好编程进阶

Java 面试 后端开发

Java 线程池原理分析

爱好编程进阶

Java 面试 后端开发

Java-8新特性:学习如何使用Lambda表达式(二

爱好编程进阶

Java 面试 后端开发

玩转LiteOS组件:玩转Librws

华为云开发者联盟

TCP websocket LiteOS LiteOS组件 Librws

显卡是什么?显卡和Graphics的区别在哪里?

Finovy Cloud

人工智能 算法 云服务器 GPU服务器 显卡、gpu

报告解读下载 | 首份《中国数据库行业分析报告》重磅发布!

墨天轮

数据库 国产数据库 达梦 polarDB gbase8a

BS-GX-016基于SSM实现教材管理系统

爱好编程进阶

Java 面试 后端开发

CDH+Kylin三部曲之三:Kylin官方demo

爱好编程进阶

Java 面试 后端开发

OceanBase 参编金科联盟标准发布,推动数据库产业规范化发展

OceanBase 数据库

oceanbase

Envoy熔断限流实践(二)Rainbond基于RLS服务全局限流

北京好雨科技有限公司

TiDB 6.0 的「元功能」:Placement Rules in SQL 是什么?

PingCAP

CAT客户端如何从Apollo中读取配置?

爱好编程进阶

Java 面试 后端开发

ForkJoin实现分而治之

爱好编程进阶

Java 面试 后端开发

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