腾讯亿级用户规模自研业务的上云实践解读,立即报名 了解详情
写点什么

Terraform 1.3,简化重构体验

  • 2022-10-05
    北京
  • 本文字数:1071 字

    阅读完需:约 4 分钟

Terraform 1.3,简化重构体验

HashiCorp宣布了Terraform 1.3版本发布,该版本引入带有默认值的可选对象类型属性,并扩展了moved 模块的功能。


Terraform 的类型约束让模块作者能够对输入变量的值进行验证。为处理复杂情况,开发者常用object 类型以允许命名属性集合拥有各自的类型。然而,这也就意味着模块使用者需要为所有属性赋值,甚至包括那些与当前任务无关的。


在 1.3 版本中可以为对象属性赋默认值,这个功能最初是在 Terraform 0.14 版本中实验性质加入支持。下面的例子中展示了定义变量时如何设置默认值:

variable "buckets" {  type = list(object({    name    = string    enabled = optional(bool, true)    website = optional(object({      index_document = optional(string, "index.html")      error_document = optional(string, "error.html")      routing_rules  = optional(string)    }), {})  }))}
复制代码

 

默认参数是可选的,如果不进行指定,Terraform 将使用类型中对应的null 值为默认值。如果指定了非空值为默认值,那么这个属性在接收模块中永远非空。当调用者没有设置默认值或调用者明确将属性值设置为null时,Terraform 都会设置默认值。


在 1.1 版本中引入了moved 移动块,为重构配置文件中的资源提供了程序化的手段。Terraform 会通过每个模块或资源的地址对比新配置与先前状态,移动或重命名对象都会导致 Terraform 销毁旧地址的对象并在新地址创建新的对象。而借助配置文件的移动块可以让 Terraform 将旧地址的已有对象视为是当前属于新地址的对象。


这种行为与terraform state mv 命令相同,但移动块允许直接在配置文件内追踪资源的移动。在最初的版本中,移动块只支持在同一本地路径内的模块间重构。1.3 版本中通过新增在第三方及不同来源模块中重构资源的功能,取消了这层限制。这也包括了从Terraform云端托管的私有注册中心,Terraform注册中心,或者任何source 参数中的选项。


1.3 版本的发布与Terraform v1.0的兼容性承诺相符,该承诺表示,1.x 的任何版本更新都不会对工作流产生影响,也不需要升级任何工具。虽然大多用户都不会受这次版本升级的影响,但部分行为可能会需要额外的升级步骤。比如在 1.3 版本中,一些未维护的状态存储后端将被废弃,包括:artifactoryetcdmanta ,以及swift


更多关于 1.3 版本发布的细节可以参考文档版本说明。Terraform 1.3 目前可从HashiCorp官网下载,也可以在 Terraform 云端使用。


原文链接

Terraform 1.3 Release Introduces Simplified Refactoring Experience


相关阅读:


基础设施即代码:只是漂移管理还不够

Docker 之父:Go、Rust 为什么会成为云原生的主导语言?

2022-10-05 10:464833

评论

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

Redis 实现限流的三种方式

大数据技术指南

11月日更

复习第二天

IT蜗壳-Tango

11月日更

dart系列之:dart中的异步编程

程序那些事

flutter dart 程序那些事 11月日更

Android C++系列:Linux文件系统(二)

轻口味

c++ android jni 11月日更

自定义View:如何手写ViewGroup实现ListView效果

Changing Lin

11月日更

requests-html库初识 + 无资料解BUG之 I/O error : encoder error,Python爬虫第30例

梦想橡皮擦

11月日更

Prometheus Exporter (三)容器信息监控

耳东@Erdong

container Prometheus exporter 11月日更 cAdvisor

Go 的 Panics 处理

baiyutang

golang 11月日更

Prometheus 都可以采集那些指标?-- 常用 Exporter 合集

耳东@Erdong

内容合集

Go语言学习查缺补漏ing Day2

Regan Yue

Go 语言 11月日更

数据库版本控制中间件flyway企业落地

小鲍侃java

11月日更

【Redis集群原理专题】(1)介绍一下常用的Redis集群机制方案的原理和分析

洛神灬殇

集群 redis cluster redis sentinel 11月日更

模块四作业:千万级学生管理系统的考试试卷存储方案

dean

架构实战营

[Pulsar] ChunkMessageID介绍及其原理

Zike Yang

Apache Pulsar 11月日更

搞定大厂算法面试之leetcode精讲1.开篇介绍

全栈潇晨

算法面经

CSS架构揭秘之Ant design

Augus

CSS 11月日更

kafka常用命令

williamcai

kafka

【Flutter 专题】03 图解第一个程序 Hello World!

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 11月日更

自动驾驶 传感器和计算硬件 易筋 ARTS 打卡 Week 76

John(易筋)

ARTS 打卡计划 arts

十分钟搞懂WebAssembly

俞凡

Wasm

【架构实战营】模块四

Henry | 衣谷

架构实战营

通过USB接入双目UVC协议外接人脸比对相机实现1:1比对开发

Todd Wong

数字化办公

Hive数据抽样与存储格式详解

五分钟学大数据

11月日更

前端开发:VS Code编辑器新建Vue文件自定义模板的方法

三掌柜

11月日更

网络安全—如何从IP源地址角度,预防DDoS攻击?

郑州埃文科技

基于海思Hi3559A或者Atlas_200模块,Hi3559A(主)+Atlas_200(从)开发AI加速边缘计算主板的三种模式

Todd Wong

人工智能 深度学习

一些关于原宇宙的思考

Simon

元宇宙 Metaverse

CentOS环境下Redis的安装和配置

Empty

redis

别被你的框架框住了

Teobler

angular.js 大前端 React 框架 编程范式

【LeetCode】最长和谐子序列Java题解

Albert

算法 LeetCode 11月日更

面试必备(背)--Go语言八股文系列!

微客鸟窝

Go 语言 八股文 11月日更

Terraform 1.3,简化重构体验_云原生_Matt Campbell_InfoQ精选文章