写点什么

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

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

关注

评论

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

华为云Astro的前世今生:用7年时间革新低代码开发观念

华为云开发者联盟

低代码 华为云

计算机网络:以太网与IEEE 802.3

timerring

计算机网络 11月月更

OKR之剑·实战篇03:OKR的跟踪需要有“自己”的节奏

vivo互联网技术

团队管理 OKR 目标管理

SREWorks v1.3 版本发布 | 插件机制发布

阿里云大数据AI技术

大数据 运维 插件

Dive into TensorFlow系列(2)- 解析TF核心抽象op算子

京东科技开发者

tensorflow TF2 Tensor Op

使用 SAP Cloud Application Programming 编程模型开发一个图书管理 OData 服务

汪子熙

云原生 CAP SAP 企业级应用 11月月更

count(*)查询性能很差?用这5招轻松优化

小小怪下士

Java 程序员 后端

【LeetCode】字符串相加Java题解

Albert

算法 LeetCode 11月月更

数据库独角兽SingleStore:没有HTAP,机器学习和人工智能都是不切实际的

StoneDB

数据库 开源 HTAP StoneDB SingleStore

多视角碰撞,探索 Serverless 企业落地更多可能性丨阿里云用户组厦门站

云布道师

阿里云 云原生

阿里云产品经理刘宇:Serverless 的前世今生

云布道师

阿里云 Serverless 云原生

OceanBase 首席科学家阳振坤博士入选2022 年度“CCF王选奖”

OceanBase 数据库

直播预告|OceanBase 社区版 4.0 全解析

OceanBase 数据库

HummerRisk V0.5.1 发布:新增对象存储、优化K8s 资源态势和资源拓扑等

HummerCloud

Kubernetes 云原生 云安全 云原生安全

使用SQL加密函数实现数据列的加解密

华为云开发者联盟

大数据 后端 华为云 数据加密

最佳实践 | 用腾讯云AI人像变换给自己一次“跨越年龄的体验”

牵着蜗牛去散步

人工智能 腾讯云 腾讯 腾讯云AI

[力扣] 剑指 Offer 第二天 - 从尾到头打印链表

陈明勇

Go 数据结构与算法 力扣 11月月更

Paddle Graph Learning (PGL)图学习之图游走类node2vec模型[系列四]

汀丶人工智能

图神经网络 11月月更

测试大咖漫谈如何搞定软件质量?

测吧(北京)科技有限公司

软件测试

聊聊Vuex原理

yyds2026

Vue

软件测试 | 测试人员必须掌握的测试用例

测试人

软件测试 自动化测试 测试开发 测试用例

技术界中的虚拟机、容器和沙箱的关系

FinFish

容器 虚拟机 安全沙箱

vue的几个提效技巧

yyds2026

Vue

PLC与SCADA的什么区别和联系

2D3D前端可视化开发

物联网 PLC 工业控制 web组态 SCADA

带你了解S12直播中的“黑科技”

华为云开发者联盟

云计算 后端 音视频 华为云 实时直播

彻底搞懂Vue虚拟Dom和diff算法

yyds2026

Vue

查看、校验、归档…带你掌握openGauss账本数据库

华为云开发者联盟

数据库 后端 华为云

火山引擎 DataTester 首推A/B实验经验库,帮助企业高效优化实验设计能力

字节跳动数据平台

大数据 A/B测试

使用EasyCV Mask2Former轻松实现图像分割

阿里云大数据AI技术

深度学习 计算机视觉 图像处理 图像分割 企业号十月 PK 榜

实时云渲染vs本地渲染,哪个更好用?

Finovy Cloud

云渲染 实时云渲染

[力扣] 剑指 Offer 第二天 - 反转链表

陈明勇

Go 数据结构与算法 力扣 11月月更

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