HashiCorp 发布了 0.8 版的 Terraform 。Terraform 是一个开源工具,它能通过亚马逊网页服务、VMware vSphere 和 UltraDNS 等基础设施供应商构建、组合和发布可编程基础设施。主要的新功能包括交互式控制台、条件值、HashiCorp Vault 和 Nomad 供应器等。
Terraform 0.8 版除原有的 terraform 控制台之外,还新增加了一个交互式控制台,它可以用于尝试插值,以及检查基础设施。HashiCorp 的博客表示,对于不熟悉Terraform 的开发者来说,控制台是一个非常棒的附加学习资源,因为插值(任何你想放入TerraForm 配置属性的东西)可以被输入控制台,然后就可以看到它产生的输出了。控制台目前只读,这是为了防止任何对基础设施或状态的不小心误改。
插值现在支持基本的条件判断,它支持对值进行条件赋值,比如在一个资源的元参数里。当与资源的“count”参数结合起来时,这样就可以支持对资源的条件性包含,比如 ‘count = “${var.env == “production” ? 1 : 0}”。这个例子的意思是,通过将变量“env”设置成非“production”的某个值,那么相关的资源数量就会是0,因此它不会被创建。Terraform 支持以下逻辑运算符: 相等判断== 和!=,数字比较>、<、>= 和<=,还有布尔运算符&&、||和!(一元运算)。
在Terraform0.8 版本里,现在也可以指定对Terraform版本的限制了,方法是使用 Terraform 配置元参数“required_version”,比如“required_version >=0.8,<0.9”。HashiCorp 的博客指出,添加这个功能的目的在于避免 Terraform 程序版本和 Terraform 配置之间的不一致,并且可以被用于某些场景,举例来说,某些缺陷已经在较新的版本中修复了,但是却有可能对现有的基础设施造成问题,那么加上这个参数就可以限制对版本的要求,从而避免意外的损坏。如果Terraform 版本不能与要求的版本相匹配,Terraform 将在很早的阶段就输出错误,通知用户他们必须改变他们的Terraform 版本,才能够与配置一起正常工作。
创建和更改基础设施通常需要若干不同的凭据,例如API 访问令牌和数据库管理密码等,而且存储这些凭据的最好的地方就是一个安全的秘密管理工具。Terraform Vault 供应器允许 Terraform 去读取 Vault、写入 Vault 和配置 Vault ,Vault 就是 HashiCorp 的管理秘密的工具。
Terraform 的文档中声明,Vault 供应器目前只支持一般性的秘密的后台,但这已经可以满足两种常见的初级用例了:(1)配置和填充Vault:Vault 管理员可以使用Terraform 去配置Vault,再用秘密填充它;(2)在Terraform 配置中使用Vault 凭证:凭证可以从Vault 中获取,这意味着为了获得访问其他供应商的临时租约,运维人员或者运行Terraform 的系统只需要访问一个赋予了适当权限的Vault 令牌即可。
还有一点需要特别注意的是,Terraform 的 Vault 供应器文档中提到,在 Terraform 中与 Vault 交互时,任何你读或写的秘密都会被保存在 Terraform 的状态文件中,同时还会保存在任意生成的计划文件中。所以对于任意读写Vault 秘密的Terraform 模块来说,这些文件都应被视为非常敏感的文件,因此需要被保护起来。此外,对于通过配置文件提供的秘密来说,目前Terraform 没有提供任何编辑或保护它们的机制,因此相应地,对于选择使用Terraform 去填充Vault 秘密的团队来说,他们应该仔细阅读每个资源的文档的相关章节,了解这些秘密是如何被保存到状态中的,并且仔细考虑这样的做法是否满足他们公司的安全策略要求。
新的 Nomad 供应器允许 Terraform 为 HashiCorp Nomad 分布式调度器创建作业,它必须作为基础设施创建过程的一部分运行。这里的用例主要是系统作业或者批量初始化作业。HashiCorp 博客表示,这一新功能并不是在试图完全取代 Nomad 的运行,但 Terraform 可以用来引导一个集群以及相关的应用。
Terraform 0.8 版本也有几点与 Terraform 0.7 不能向后兼容的地方,HashiCorp 团队建议开发者们认真查看升级指南。升级指南详细描述了版本之间不兼容的细节,以及在升级到0.8 版本时所需要考虑的细节。
要了解更多关于HashiCorp Terraform v0.8 发布的细节,可以查看HashiCorp 的博客。在HashiCorp 网站上可以下载Terraform二进制文件,并且在项目的 GitHub 库可以找到 Terraform 的代码(主要用 Golang 写成)。
阅读英文原文: HashiCorp Release Terraform 0.8, Including an Interactive Console, and Vault and Nomad Providers
评论