CloudFormation"创建变更集"功能允许将计划与执行分开?

时间:2017-05-09 16:19:05

标签: amazon-web-services amazon-cloudformation terraform

TerraformAWS CloudFormation之间进行决策时,通常与Terraform相关的一个优势是计划(terraform plan)和执行(terraform apply)的分离。

我最近听说过CloudFormation的create-change-set功能,其描述如下:

  

创建将应用于堆栈的更改列表,以便您可以在执行更改之前查看更改。

在AWS文档的Updating Stacks Using Change Sets中,它们描述了推荐的更新过程。

现在我想知道:

  • 不创建变更集还允许将计划与执行分开吗?
  • 如果没有,与Terraform的计划相比有哪些不足之处&申请?

背景:强调分离作为一个重要优势的例子:

Official comparison on terraform.io

  

Terraform还通过使用执行计划的概念将计划阶段与执行阶段分开。通过运行terraform计划,刷新当前状态并查询配置以生成行动计划。该计划包括要采取的所有行动:将创建,销毁或修改哪些资源。操作员可以对其进行检查,以确保其完全符合预期。   [...]   Terraform允许操作员自信地应用更改,因为他们确切地知道事先会发生什么。

(可能过时)Blog post from 2014比较Terraform和CloudFormation:

  

基础设施更新:这是Terraform的绝对杀手级功能。 Terraform有一个单独的计划和执行阶段。规划阶段显示将创建,修改和销毁哪些资源。它使您可以完全控制更改将如何影响现有环境,这非常关键。这是我们推进Terraform的主要原因之一。 CloudFormation不会向您显示它将对环境进行哪些更改。

1 个答案:

答案 0 :(得分:1)

CloudFormation Change Set是保存在计划文件中的Terraform计划的类似对象。它的核心功能是相同的:检查报告到达新的所需状态所需的更改,然后应用这些更改。

最初创建Terraform时,CloudFormation没有此功能。您发现的文档在编写时是准确的,但the release of Change Sets在这方面没有显着差异。

官方比较中涵盖的其他差异仍然适用:

  

Terraform同样使用配置文件来详细说明   基础架构设置,但它与云无关,它更进一步   并允许组合多个提供者和服务   组成。例如,Terraform可用于协调AWS和   OpenStack集群同时启用,同时支持第三方提供商   像Cloudflare和DNSimple一样被集成以提供CDN和DNS   服务。这使Terraform能够表示和管理整个   基础设施及其配套服务,而不仅仅是   存在于单个提供者中的子集。它提供单一   统一语法,而不是要求运营商使用独立和   每个平台和服务的不可互操作的工具。