写点什么

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

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

关注

评论

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

模块八作业

黄秀明

「架构实战营」

鉴机识变,面向未来|RocketMQ Summit 2022 即将来袭

阿里巴巴云原生

阿里云 开源 RocketMQ 云原生 开源消息队列

Go 语言入门很简单:从 goroutine 出发到并发

宇宙之一粟

Go 语言 goroutine 2月月更

如何写好一个Java类?

蜜糖的代码注释

Java 整洁代码 2月月更

云原生训练营-Week02

jjn0703

云原生训练营

架构训练营模块八作业

沈益飞

架构训练营 架构师训练营 4 期

7大迹象,表明你的DevOps 做对了!

飞算JavaAI开发助手

2022重磅:增长法则-巧用数字营销 突破企业困局

博文视点Broadview

互联网人的命运,就是活到30岁都难?

码农参上

人生 互联网人 打工人

分享两个常见的搜索算法:BFS和DFS

华为云开发者联盟

算法 DFS 深度优先搜索 BFS 搜索算法

喜报!龙蜥操作系统&龙蜥社区双双荣登2021“科创中国”开源创新榜!

OpenAnolis小助手

开源 操作系统 创新

郑州轻工业大学——HarmonyOS宠物健康系统的开发分享

HarmonyOS开发者

HarmonyOS 健康检查

模块八作业

李晓笛

「架构实战营」

消息队列基于Mysql存储表设计

tony

「架构实战营」

日志管理系统,多种方式总结

架构 日志 slf4j logback

基于STM32+ESP8266+华为云IoT设计的智能门锁

DS小龙哥

2月月更

不能Hook的人生不值得 jsHook和模拟执行

奋飞安全

安全 js hook jshook

架构实战模块八作业

Anlumina

「架构实战营」

模块八作业-设计消息队列存储消息的MySQL表

CH

架构实战营 #架构实战营 「架构实战营」

编写 Kubernetes 部署脚本将 httpserver 部署到 Kubernetes 集群

tom

80 行代码实现简易 RxJS

CRMEB

史上最强代码自测方法,没有之一!

万俊峰Kevin

微服务 单元测试 go-zero 测试工具 Go 语言

java培训:Java类加载机制的理解

@零度

JAVA开发 类加载机制

2022年中国智慧医疗行业洞察

易观分析

智慧医疗

【架构实战营】模块八:命题作业

wgl

「架构实战营」

模块八作业

hunk

云原生训练营

理论+实践,带你掌握动态规划法

华为云开发者联盟

AI 算法 动态规划法 子问题

架构实战营4期-模块八作业

木几丶

「架构实战营」

模块八 - 消息队列存储数据表结构设计

圈圈gor

架构实战营 「架构实战营」

第八周作业

cqyanbo

大数据培训:Flink的提交模式

@零度

大数据 flink

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