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

简介:

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的博客。



   


 


  

本文转自d1net(转载)

目录
相关文章
|
弹性计算 架构师 安全
基础设施自动化实践——用Terraform自动化构建云上环境
前言在我们平时的开发工作中,经常会遇到需要搭建各式各样的云上环境,比如项目开发环境、测试环境、部署环境、客户展示环境等。而有时这些搭建过程并不轻松,如可能涉及很多台ECS,可能对镜像或配置有特殊要求,可能涉及较为复杂的网络配置等。而对于这些较为复杂多变的环境部署要求,传统的人工手动配置方法,不仅耗时费力,还有一个很大的问题就是难以追踪管理、难以复用。比如负责搭建环境的架构师如果休假了,团队其他人很
805 0
基础设施自动化实践——用Terraform自动化构建云上环境
|
运维 自然语言处理 Kubernetes
为 Serverless Devs 插上 Terraform 的翅膀,实现企业级多环境部署(下)
在上篇中,主要介绍了 Serverless Devs 多环境功能的使用,用户读完可能会些疑问,本文会就一些常见问题进行下回答。
|
存储 弹性计算 监控
为 Serverless Devs 插上 Terraform 的翅膀,实现企业级多环境部署(上)
Serverless Devs 离不开对云资源的操作,但支持新资源时需要开发相应的组件代码;​ 如果将环境模板的定义通过 Terraform IaC 来完成,在 Serverless Devs 的体系内不仅能良好地衔接,还能够极大拓宽用户领域;​ 用户可以通过编写 Terraform 文件来定义自己的基础设施,用 Serverless Devs 完成所有工作流的串联。​
|
运维 自然语言处理 Kubernetes
为 Serverless Devs 插上 Terraform 的翅膀,解耦代码和基础设施,实现企业级多环境部署(下)
在上篇《为 Serverless Devs 插上 Terraform 的翅膀,实现企业级多环境部署(上)》中,主要介绍了 Serverless Devs 多环境功能的使用,用户读完可能会些疑问,本文会就一些常见问题进行回答。
为 Serverless Devs 插上 Terraform 的翅膀,解耦代码和基础设施,实现企业级多环境部署(下)
|
3月前
|
弹性计算 持续交付 API
基于 ROS 的Terraform托管服务轻松部署ChatGLM-6B
文章介绍了如何利用ROS和Terraform模板轻松自动化部署基于GLM架构、优化中文对话的ChatGLM-6B模型至阿里云,提高了部署效率与便捷性,适用于多种应用场景,且模型部署过程详细,彰显了基础设施即代码(IaC)的优势。
基于 ROS 的Terraform托管服务轻松部署ChatGLM-6B
|
3月前
|
弹性计算 人工智能 持续交付
基于 ROS 的Terraform托管服务轻松部署Qwen-7B-Chat
文章介绍了如何利用ROS和Terraform模板轻松自动化部署阿里云的Qwen-7B-Chat大语言模型服务,提高了部署效率与便捷性,是实现云资源和服务快速上线的最佳实践。
基于 ROS 的Terraform托管服务轻松部署Qwen-7B-Chat
|
6月前
|
弹性计算 API 持续交付
基于 ROS 的 Terraform 托管服务轻松部署文本转语音系统 ChatTTS
基于 IaC 的理念,通过定义一个模板,使用 ROS 提供的 Terraform 托管服务进行自动化部署,可以非常高效快捷地部署任意云资源和应用(比如 ChatTTS 服务)。相比于手动部署或者通过 API、SDK 的部署方式,有着高效、稳定等诸多优势,也是服务上云的最佳实践。
基于 ROS 的 Terraform 托管服务轻松部署文本转语音系统 ChatTTS
|
7月前
|
弹性计算 持续交付 数据中心
一键云部署:ROS的Terraform托管服务助你轻松上线2048经典游戏
阿里云的资源编排服务ROS提供了Terraform托管能力,用户可以直接在ROS控制台上部署Terraform脚本,本文将详细介绍如何使用ROS的Terraform托管服务一键部署经典的2048小游戏到云端,让全世界的玩家都能在线体验。
EMQ
|
JSON 负载均衡 物联网
使用 Terraform 在 GCP 上一键部署 EMQX MQTT Broker
本文将指导您如何设置 GCP 项目、创建服务账户、编写 Terraform 配置文件,实现在 GCP 上轻松部署 EMQX MQTT Broker。
EMQ
164 0
使用 Terraform 在 GCP 上一键部署 EMQX MQTT Broker

推荐镜像

更多