在源代码管理中跟踪Terraform计划输出文件?

时间:2017-11-30 16:41:05

标签: devops terraform

将一个terraform计划写入文件的动机有点模糊。所以我问是否还有其他人对这背后的动机有所了解。对我而言,似乎有一个涉及使用这些计划文件的工作流程,但该工作流程根本不清楚。在plan命令的文档末尾有这样的陈述:" Terraform的未来版本将使计划文件更安全。"很明显,Hashicorp在使用这些计划文件时发现了很多,但为什么呢?

1 个答案:

答案 0 :(得分:3)

应用预先计算的计划文件是可预测的,而直接运行terraform apply则不可预测。

想象一下,你运行terraform plan,一切看起来都不错。现在,您的基础架构中出现了一些不可预测的变化,直到您运行terraform apply时才会注意到,这可能会导致与您预期的结果不同。

使用terraform apply <plan-file>planapply阶段之间的任何意外更改都会被捕获。特别是如果您考虑构建一个terraform CI / CD管道,使用计划文件是为自动化添加可预测性的好方法。

<强>更新

如评论中所述,可以在official documentation中找到自动化计划文件的示例工作流程:

  

在自动化中运行Terraform时,重点通常放在核心上   计划/申请周期。那么,主要路径与CLI大致相同   用法:

     
      
  1. 初始化Terraform工作目录。
  2.   
  3. 制定计划以更改资源以匹配当前配置。
  4.   
  5. 让操作人员审查该计划,以确保其可接受。
  6.   
  7. 应用计划中描述的更改。
  8.   

进一步更新

目前,我仍在运行terraform 0.10.8,但感谢cm92Matt Schuchard的评论,我发现了以下内容:

最近发布了terraform 0.11.0changelog提到了对terraform apply行为的有趣修改。默认情况下,它现在将首先生成一个计划并在应用之前等待确认:

  

命令terraform适用,现在没有明确的计划参数   默认为交互式。具体来说,它将显示生成的计划   在应用之前等待确认,类似于现有的   terraform的行为破坏。计划时行为不变   提供了file参数,可以获得先前的行为   没有计划文件使用-auto-approve选项

根据您的公司审核流程,不同的可共享计划文件可能仍然是一个有趣的选项。