写点什么

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

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

关注

评论

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

DDD实战(9):冲刺1战术之服务设计(上)

深清秋

DDD 软件架构 生鲜电商系统

使用PIL.Image库极简生成含冬奥会元素头像

芝士味的椒盐

Python 冬奥会 5月月更

Hadoop全分布式部署

芝士味的椒盐

Java 大数据 hadoop 5月月更

软件架构的23个基本原则

俞凡

架构

Kotlin 中的泛型:协变与逆变

如浴春风

5月月更

M4: 设计千万级学生管理系统的考试试卷存储方案

Jadedev

架构实战营

[Day32-05]-[BST] BST最近公共祖先

方勇(gopher)

LeetCode 二叉树 数据结构和算法

【愚公系列】2022 年 05月 二十三种设计模式(一)-工厂方法模式(Factory Method Pattern)

愚公搬代码

5月月更

千万级学生管理系统的考试试卷存储方案

鱼恨水

今天是第几周

入门小站

工具

[Day32-04]-[二叉树]二叉树的最近公共祖先

方勇(gopher)

LeetCode 二叉树 数据结构和算法

千万级学生管理系统的考试试卷存储方案

高山觅流水

「架构实战营」

架构实战营-模块四-作业

michael

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

深入理解 Go 中的字符串

宇宙之一粟

字符串 Go 语言 5月月更

[Day32-02]-[二叉树]在二叉树中增加一行

方勇(gopher)

LeetCode 二叉树 数据结构和算法

在线Excel转XML工具

入门小站

工具

他们连夜跑路了,原因是我给数据开发的学弟学妹写了个实习生年终总结

袁袁袁袁满

模块四:学生管理系统考试试卷存储方案

jiaoxn

「架构实战营」

nginx配置系列(四)请求限制

乌龟哥哥

5月月更

设计千万级学生管理系统的考试试卷存储方案

唐诗宋词

深度学习之解构基础网络结构

AIWeker

人工智能 深度学习 基础网络

[Day32-03]-[二叉树]不同的二叉搜索树

方勇(gopher)

LeetCode 二叉树 动态规划 数据结构和算法 卡特兰数

千万级学生管理系统的考试试卷存储方案

CityAnimal

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

千万级学生管理系统的考试试卷存储方案设计

大眼喵

「架构实战营」

maven构建docker镜像三部曲之一:准备环境

程序员欣宸

Java Docker 5月月更

Kubernetes 如何将 Pod 分配给节点

玄月九

Kubernetes 污点 亲和 反亲和 容忍

linux之登录式shell和非登录式shell

入门小站

Linux

运营好公众号需要具备的能力/技能

源字节1号

软件开发

深度学习之解构卷积

AIWeker

人工智能 深度学习 卷积 convolution

如何在网站上安装 WordPress

海拥(haiyong.site)

WordPress 5月月更

这个页面效果看起来真恶心,怎么解?

石云升

团队管理 项目管理 职场经验 5月月更

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