NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

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

关注

评论

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

赋能数字经济 福昕软件出席金砖国家可持续发展高层论坛

联营汇聚

在线SQL转Excel(xls/xlsx)工具

入门小站

工具

使用 MyBatis 操作 Nebula Graph 的实践

NebulaGraph

mybatis 图数据库 Nebula Graph

可视化任务编排&拖拉拽 | Scaleph 基于 Apache SeaTunnel的数据集成

Apache SeaTunnel

数据同步 数据集成 可视化开发 数据集成平台 拖拉拽

托管式服务网络:云原生时代的应用体系架构进化

阿里巴巴云原生

阿里云 云原生 服务网格

扩展你的KUBECTL功能

mengzyou

Kubernetes DevOps kubectl krew

联想首次详解绿色智城数字孪生平台 破解城市双碳升级难点

科技大数据

多模输入事件分发机制详解

OpenHarmony开发者

Open Harmony

DevEco Device Tool 3.0 Release带来5大能力升级,让智能设备开发更高效

HarmonyOS开发者

HarmonyOS

linux实战清理挖矿病毒kthreaddi

入门小站

Linux

python小知识-python泛函数

AIWeker

Python python小知识 7月月更

整理混乱的头文件,我用include what you use

华为云开发者联盟

c++ 开发 C语言 技能

一文掌握数仓中auto analyze的使用

华为云开发者联盟

数据库 sql 后端 analyze

“只跑一趟”,小区装维任务主动推荐探索

鲸品堂

运维

实战模拟│JWT 登录认证

经验分享 JWT 开发语言 7月月更 跨域认证

智洋创新与华为签署合作协议,共同推进昇腾AI产业持续发展

Geek_2d6073

Nebula Importer 数据导入实践

NebulaGraph

图数据库 数据导入 Nebula Graph

英特尔集成光电研究最新进展推动共封装光学和光互连技术进步

科技之家

使用 BlocConsumer 同时构建响应式组件和监听状态

岛上码农

flutter ios 安卓 移动端开发 7月月更

应用实践 | 蜀海供应链基于 Apache Doris 的数据中台建设

SelectDB

数据库 数据中台 Apaache Doris

广电五舟与华为签署合作协议,共同推进昇腾AI产业持续发展

Geek_2d6073

上线首月,这家露营地游客好评率高达99.9%!他是怎么做到的?

天天预约

小程序 SaaS 线上预约 预约工具 露营

基于Netty,徒手撸IM(一):IM系统设计篇

JackJiang

网络编程 Netty 即时通讯 im开发

湘江鲲鹏加入昇腾万里伙伴计划,与华为续写合作新篇章

Geek_2d6073

在线文本行固定长度填充工具

入门小站

工具

CANN算子:利用迭代器高效实现Tensor数据切割分块处理

华为云开发者联盟

人工智能 算子 迭代器

DeFi生态NFT流动性挖矿系统开发搭建

薇電13242772558

NFT DeFi流动性挖矿

解密函数计算异步任务能力之「任务的状态及生命周期管理」

阿里巴巴云原生

阿里云 Serverless 云原生 函数计算

华为nova 10系列支持应用安全检测功能 筑牢手机安全防火墙

科技汇

字节跳动Dev Better技术沙龙成功举办,携手华泰分享Web研发效能提升经验

字节跳动终端技术

字节跳动 前端

你可能不知道,我是如何将一个老系统的kafka消费者服务的性能提升近百倍的

Java全栈架构师

Java kafka 程序员 面试 架构设计

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