Terraform 及多云的进一步简化

  • Rafiq Gemmail
  • 盖磊

2017 年 10 月 30 日

话题:微软云计算DevOps

Microsoft 和 Hashicorp 在八月份宣布达成了一份多年的合作协议,意在改进在Terraform中对 Azure 资源的支持。Terraform 是 Hashicorp 推出的一种可用于多云(Multi-Cloud)的配置工具。随后,Google 也发布了类似的声明,承诺将改进 Terraform 与 Google Cloud Platform(GCP)的集成。

Terraform 是一种成熟的多云解决方案,当前适用于69 种不同的云服务提供商,它使得配置摆脱了特定于服务商的工具,并避免了服务商锁定问题(Lock-in)。Terraform 使用了云特定的服务提供器(Provider),支持本地部署(On-premise)、混合部署和多云部署,使用 Terraform 的云可感知 HCL 语言(Hashicorp Configuration Language)配置不同的云服务。

Stefan Magnus Landrø在七月的 NDC 奥斯陆大会上以“Terraform:开拓 Azure”为题目做了一次报告。在报告中,他通过一个配置在 DigitalOcean、AWS 和 Azure 间的跨云集成,对多云的优点进行了展示。Landrø指出,“Terraform 的独到之处在于,你可以将来自不同云服务提供商的资源组合成一个大的架构”。他展示了一个包括 Digital Ocean 和 Azure 的 VPS 组合,其中 DNS 使用了 AWS 的 Route 53。Landrø据此用例提出:

当前加权的健康检查是一种只有 Amazon 提供的特性,它是 Amazon 云的一个独到特性,不能在 Google 或 DigitalOcean、Azure 等其它原生 DNS 服务器提供者中看到。现在我们给出的方案很酷,因为用户可以从其所能发现的最好云服务商中挑选最好的服务,并插入到自己的架构中……用户可以用上所有云中最好的服务。

云服务提供商已对降低自身门槛以实现集成表示出了明确的兴趣。自从 Microsoft 和 Hashicorp 双方签署了合作协议后,Azure 已将 Terraform 配置集成到自己的基于 Web 的 Azure Cloud Shell 服务中,提供了通过基于浏览器的 Shell 做配置的功能。Terraform 的计算负责人 Corey Sanders在博客中指出,这使得“在任何可以使用手机的地方使用 Terraform”成为可能。Azure 的高级项目经理 Hariharan Jayaraman 近期接受了 MSDN Channel 9 的采访,在采访中他展示了一个在 Terraform 中使用 HCL 语言通过 Cloud Shell 定义和部署 Azure 资源的简单过程。他解释说,虽然 Terraform 是构建在 Azure Resource Manager API 之上的,但是它“通过提供(可验证部署的)计划而给出了更多的功能”。Jarayaman 指出:

企业会存在这样的困惑,它们并不想培训自己的 DevOps 工程师去熟悉多种配置格式。Terraform 使得 DevOps 工程师可以使用同一配置格式去描述 AWS 或 Azure 中的资源。

九月份召开的Hashiconf 大会见证了Terraform Module Registry发布。该 Registery 使得社区可以为常见的配置模式提供解决方案,它提供了一个“发布软件、版本管理和共享模块的场所。对于模块的用户而言,Registry 是发现、使用模块并协作各模块的中心场所”。据 Hashicorp 介绍,Registry 的推出使“合作厂商和社区成员易于分享模块与开展协作,并对模块进行更新和版本控制,以持续地对架构配置做出改进”。Microsoft 也宣布,它已经将一组新模块发布到 Registry 中。

据 BMC 的数字创新副总裁(Vice President of Digital Innovation)Jason Fyre 介绍,多云策略避免了厂商锁定(Lock-in)问题,在财政上的和竞争方面上具有优势。Fyre 近期就 BMC 发布其多云架构发现和可视化工具“Discovery for Multi-Cloud”接受了福布斯的采访。其中 Fyre 评论道:

(多云)允许(组织)建模工作负载的可能代价。这些工作负载可以是运行在 Amazon 或 Azure 上,也可以是在现场(On-Site)运行。有时一旦我们做出这样的模型,客户就会发现工作负载在现场运行的代价可能要要比在云上运行的代价更低,或是发现相反的情况。

在今年六月,OpenCredo 公司 CTO Nicky Watt 在 HashiDays 伦敦大会上做了一个演讲,展示了从简单 Terraform 配置到更为复杂的企业配置的经历。她同时警告,实现过程中要避免产生一种她称之为“Terralith”的状态。

Watt 将“Terralith”定义为一种“单体配置”,它是“从高度依赖于本地状态和单体配置文件的概念验证(PoC)演化而来”,该状态的特性是“并不具备分布部署环境的能力”。

DigitalOcean 近期更新了使用 Terraform 配置 DigitalOcean Droplet(VPS)的教程,其中展示了使用 Terraform 可降低需要用户去熟悉一些特定于服务提供商的工作。该教程将引导用户去部署两个具有 hahproxy 的 nginx 实例的可重复配置。对于配置编写者而言,这将云服务提供商特定的配置转化为一些提供者(Provider)变量,并具有 DigitalOcean 信任的 SSH 和 API 密钥。

Terraform 这类工具将一系列云服务的使用门槛简化为单一的抽象。和所有其它的解决方案一样,实现规模的重担将落在持续改进上,以及实现和相关流程的演进上。

Watt 提醒我们:

这并非只是与代码的结构项目相关。你还需要考虑如何演进各个过程,以及管理其中的各种编排系统。

查看英文原文: Terraform and the Increasing Ease of Multi-cloud

微软云计算DevOps