写点什么

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

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

关注

评论

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

信息的表示与存储-浮点数的运算

引花眠

计算机基础

架构第四周 - 学习总结

J.Smile

极客大学架构师训练营

通过Python来获取北京市乡镇、街道行政区划数据

Puran

Python GIS geopandas QGIS 天地图

【源码系列】Spring Cloud Eureka

Alex🐒

源码 Spring Cloud Eureka

消息队列(二)如何保证消息队列的高可用?

奈何花开

Java MQ 消息队列

消息队列(一)为什么要使用消息队列?

奈何花开

Java MQ 消息队列

一文搞懂 Redis高性能之IO多路复用

架构精进之路

redis io 多路复用 高性能

Go:gsignal,信号大师

陈思敏捷

signal gsignal os.Signal Go 语言

架构师课程第四周 作业

杉松壁

架构师训练营 - 第四周 - 学习总结

stardust20

使用数据卷管理数据 | Docker 系列

AlwaysBeta

Docker 容器 数据

每周学习总结 - 架构师培训 4 期

Damon

大型互联网公司技术方案与手段浅析

俊俊哥

分布式 高可用 大型软件 高并发 解决方案

互联网架构作业

qihuajun

架构师培训营第四周总结

王锟

Week4 学习总结

wyzwlj

极客大学架构师训练营

架构师训练营 - 第四课作业 -20200701- 架构演化

👑👑merlan

极客大学架构师训练营

互联网架构学习总结

qihuajun

ARTS|Week 5 有效的括号、API和地图

Puran

LeetCode ARTS 打卡计划

极客时间 - 架构师培训 - 4 期作业

Damon

ARTS打卡 第5周

引花眠

ARTS 打卡计划

第四周作业

andy

LeetCode | 6. Valid Parentheses 有效的括号

Puran

算法 LeetCode

第4周总结

andy

架构师训练营 - 第 4 课总结 -20200627- 互联网架构设计

👑👑merlan

架构设计 互联网架构

架构师训练营 -- 第四周作业

stardust20

SQL运行内幕:从执行原理看调优的本质

帅旋

MySQL 数据库

架构师训练营 -week4 命题作业

J.Smile

极客大学架构师训练营

架构师面试题(3)

满山李子

分布式系统设计 - 第四周作业

孙志平

阿里巴巴的发展史(组织变革+技术变革)

王锟

阿里巴巴

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