阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

HashiCorp 发布了 Terraform 0.9,提供状态锁定、状态环境和销毁供应者

  • 2017-03-31
  • 本文字数:1965 字

    阅读完需:约 6 分钟

HashiCorp 发布了 Terraform 0.9 ,对远程状态的管理方式做了显著的改进,其中包括:状态锁定(State Locking)、状态环境(State Environments)、新的集中式初始化命令“terraform init”、可配置先于资源销毁运行的“销毁供应者”(Destroy Provisioner),以及“资源中断”(Resource Intereupt)方式,允许使用自定义逻辑对选定资源即刻处理操作符的中断。

Terraform 0.9 显著地改进了对远程“状态”(State)的管理方式。虽然新版本确保了对当前状态的向后兼容问题,但是还应指出,在Terraform 0.11 中,将移除对远程状态遗留配置的支持。首个主要改进是可以对受支持的后端做原生状态锁定,这是为了防止多重并行写入。在Terraform 0.9 中,支持状态锁定的后端包括本地 AWS S3 Consul

在HashiCorp 的博客中,介绍了状态锁定是如何通过降低某个团队成员意外覆盖其它成员工作的风险,使Terraform 可更安全地用于团队环境。状态锁定在所有具有写入状态的操作上自动执行,在状态锁定失败时,Terraform 停止继续运行。对大多数命令而言,可以使用“-lock”标志禁用状态锁定,但是这种做法是不推荐的。Terraform 在解锁失败时会给出一个锁ID 和元数据,使用这些信息可在必要时实现“强制解锁”。关于状态锁定的更多信息,请参考Terraform 文档。

现在远程状态是“后端”(Backend)的一个组成部分。后端是一种Terraform 新提出的抽象,它封装了“状态环境(state environments)”等可插拔功能。状态环境是一种状态命名空间,允许一个Terraform 配置文件夹管理多个不同的架构资源集合。状态环境类似于版本控制系统中的分支,只是状态环境不能被合并(merge)。按HashiCirp 博客的建议,状态环境最有用之处在于隔离一系列资源以测试开发期间的变更,此后其中所有必要的变更将必须重新应用于其他环境中。环境管理使用命令行接口(CLI),如图所示:

在HashiCorp 的博客中还指出,状态环境本身并不能单独用于开发、测试机和生产环境中的差异管理。当Terraform 的配置逐渐增大后,“将一个大规模配置分割为多个使用“ terraform_remote_state ”数据资源链接在一起的小型配置,这是更可管理的,也是更加安全的”,因为这种做法允许团队委派所有权,降低了更改所产生的影响。关于状态环境的更多信息,请参考Terraform 文档。

Terraform 0.9 还引入了一个新命令“terraform init”,实现 Terraform 配置的初始化和设置。在初始化过程中,Terraform 检测后端配置的任何更改,以及任何对现有状态迁移的提议,使得开发人员可以在各个类型的后端间迁移,这一更改是被 Terraform 自动管理的。按 HashiCorp 博客的说法,这一新命令应成为所有 Terraform 工作流的重要组成:

对于每个团队成员可运行的所有 Terraform 配置,“terraform init”命令应成为一个不可或缺的设置命令。多次运行命令是安全的,这确保后端得到了适当的配置。

无论“terraform plan”这样的主命令,还是“terraform taint”和“ terraform console ”这样的辅助命令,所有的 Terraform 命令都可以与远端状态无缝工作。当一个命令从本机运行时,会自动地根据远端状态而非本地状态运行。按 HashiCorp 的介绍,“这种方式使得用户可以按照自身的习惯使用 CLI,同时依然能在团队环境中受益于远程状态存储的优点”。在后端文档的完全版中,对此提供了更多信息。

Terraform 0.9 还支持在销毁资源时运行供应者(provisioner)。供应者是一种执行预定措施行为的机制,自最初的0.1 版本以来,Terraform 的资源创建就支持供应者机制,无论是本地运行命令还是远程运行命令销毁供应者增强了供应者机制,如果指定了参数“when = ‘destroy’”,销毁供应者就会实现资源销毁中同样部分的功能。供应者的运行要先于对所定义资源的销毁。Terraform 会在销毁失败时报错,并在下一次运行“terraform apply”时重新运行供应者。由于这一默认行为,多次销毁供应者时应加倍小心。

在0.9 版本中还包括了其它一些小改进。例如,中断已可以被检测到,并为使用用户逻辑处理中断提供资源。Terraform 0.9 中还添加了对多个新提供者和上百种新资源的支持。对已有资源也做了很大的改进,包括:无需强制销毁就可以重新调整AWS 实例的大小、对EC2 的完全IPv6 支持,以及对 DNSimple 提供者的更新,使得仅需一个新的认证令牌时就可使用 APIv2。

除了在文档“升级指南”中给出禁用和更改,Terraform 0.9 核心都是向后兼容的。关于 Terraform 0.9 版本的更多信息,可以参考 HashiCorp 的博客。

查看英文原文: HashiCorp Terraform 0.9. Released with State Locking, State Environments, and Destroy Provisioners


感谢冬雨对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-03-31 19:001578
用户头像

发布了 227 篇内容, 共 71.4 次阅读, 收获喜欢 27 次。

关注

评论

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

M_8:设计消息队列存储消息数据的 MySQL 表格

Jadedev

架构训练营

vivo大规模 Kubernetes 集群自动化运维实践

vivo互联网技术

Kubernetes operator ansible kubeadm Kubevirt

【Python技能树共建】selenium入手篇

梦想橡皮擦

Python 6月月更

实战 | 巴啦巴啦SpringBoot变装SpringCloud大佬~

写程序的小王叔叔

架构 微服务 Spring Cloud springboot 6月月更

C#/VB.NET 在Word转PDF时生成目录书签

在下毛毛雨

C# .net PDF word文档 书签

linux环境下实现银行间算法

乌龟哥哥

6月月更

数组

Jason199

数组 js 数组操作 6月月更

转:基于Springcloud的服务治理落地实践

小江

Spring Cloud 微服务治理

龙蜥社区 5 月技术委员会会议顺利召开,新一代操作系统研发路线图发布

OpenAnolis小助手

开源 操作系统 龙蜥社区 技术委员会 新版本

设计消息队列存储信息数据的MySQL表结构

dan629xy

InfoQ 极客传媒 15 周年庆征文|ZooKeeper进阶(一):Zookeeper简介

No Silver Bullet

zookeeper 运维 6月月更 InfoQ极客传媒15周年庆

区块链哈希竞猜游戏系统开发(开发方案)

开发微hkkf5566

实战 |SpringBoot增加Swagger

写程序的小王叔叔

架构 springboot swagger 6月月更

Springboot 升级到 2.6.1 的坑

Damon

微服务 微服务架构 Spring Cloud 6月月更

中国SaaS产业全景图谱

小炮

前端之uni-app研究学习day_1

恒山其若陋兮

6月月更

Linux开发_介绍BMP图片上下翻转、添加水印

DS小龙哥

6月月更

OpenHarmony 开源开发者成长计划解决方案学生挑战赛,等你来参加!

InfoQ写作社区官方

OpenHarmony 热门活动

5月月更开奖!还不来领取?

InfoQ写作社区官方

热门活动 5月月更

【愚公系列】2022年06月 面向对象设计原则(七)-迪米特法则

愚公搬代码

6月月更

JavaScrip模块模式

大熊G

JavaScript 前端 6月月更

【Java Web系列】Cookie工作流程及基本使用

倔强的牛角

Java javaWeb Cookie 6月月更

实战模拟│企业微信机器人实时报错预警

机器人 企业微信 监控告警 预警 6月月更

spring4.1.8扩展实战之二:Aware接口揭秘

程序员欣宸

Java spring Spring Framework 6月月更

『Three.js』场景 Scene

德育处主任

canvas three.js 6月月更

C#入门系列(十三) -- 初识结构体

陈言必行

C# 6月月更

等个有“源”人|OpenHarmony 成长计划学生挑战赛报名启动

OpenHarmony开发者

OpenHarmony

MySql索引

工程师日月

6月月更

在 Golang 中构建 CRUD 应用程序

宇宙之一粟

6月月更

FFmpeg原理

Loken

ffmpeg 音视频课程

深入剖析 | 应用层Protocol的标准设计

九叔(高翔龙)

架构 协议 TCP/IP dubbo源码 粘包/拆包

HashiCorp发布了Terraform 0.9,提供状态锁定、状态环境和销毁供应者_服务革新_Daniel Bryant_InfoQ精选文章