写点什么

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:001946
用户头像

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

关注

评论

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

kubernetes indexer源码解析

欢乐的阿苏

golang DevOps cache 源码阅读 #Kubernetes#

devops|中小公司不要做研发效能度量

laofo

DevOps 研发效能 效能度量 DevOps工具链 研发效能度量

全球首个完全开源的指令跟随大模型;T5到GPT-4最全盘点

OneFlow

不要过于吹捧ChatGPT:人工智能生成文字还有很大提升空间

石头IT视角

vue3 +ts 如何安装封装axios

肥晨

Vue3 三周年连更

Unity 之 转微信小游戏本地数据存储

陈言必行

Unity 三周年连更

Spider实战-抓取视频

浅辄

三周年连更

危中蕴机:Oi! Network展现出的勇气和决心

股市老人

5 分钟带你小程序入门 [实战总结分享]

程序员海军

小程序 微信小程序 前端 三周年连更

一文掌握 Go 文件的读取操作

陈明勇

Go golang 文件读取 三周年连更

Go语言开发小技巧&易错点100例(三)

闫同学

Go 三周年连更

C生万物 | 反汇编深挖【函数栈帧】的创建和销毁

Fire_Shield

C语言 汇编 三周年连更 函数栈帧

Golang并发编程实战:使用ring buffer实现高效的阻塞队列

Jack

一文读懂Annotation

老周聊架构

三周年连更

zookeeper的节点加密方式及分布式锁实现过程

浅羽技术

三周年连更

ContentProvider介绍

芯动大师

ContextClassLoader 三周年连更

一定是疯了!在M1的Mac上玩OpenVINO,让Intel怎么看我?

IT蜗壳-Tango

OpenVINO Stable Diffusion 三周年连更

AI日课@20230412:Prompt Engineering

无人之路

ChatGPT

一文读懂域名注册

火山引擎边缘云

证书 域名 域名服务器

一文读懂封装

断墨寻径

#java 三周年征文

影驰 GeForce RTX 4070显卡正式开售!星曜 OC系列首发评测抢先看

极客天地

kubernetes fifo源码解析

欢乐的阿苏

golang DevOps 后端 源码阅读 #Kubernetes#

达观助手AI写作下载安装教程及特色功能详解,速速收藏体验!

NLP资深玩家

RabbitMQ组件介绍

穿过生命散发芬芳

RabbitMQ 三周年连更

kubernetes delta_fifo源码解析

欢乐的阿苏

golang DevOps 后端 源码阅读 #Kubernetes#

HuggingGPT 强势来袭,LLM+ 专家模型,迈向更通用的AI

Zilliz

Zilliz Towhee ChatGPT LLM huggingface

【坚果派-坚果】获取OpenHarmony 3.2 Release源码的两种方式

坚果

HarmonyOS OpenHarmony OpenHarmony3.2 三周年连更

论程序员的为码之“道”

酱紫的小白兔

程序员如何保住自己的饭碗?| 社区征文

liuzhen007

程序员 三周年征文

Unity 之 使用原生UGUI实现随手移动摇杆功能经典实例

陈言必行

Unity 三周年连更

对话ChatGPT:Prompt是普通人“魔法”吗?

Alter

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