将一个terraform计划写入文件的动机有点模糊。所以我问是否还有其他人对这背后的动机有所了解。对我而言,似乎有一个涉及使用这些计划文件的工作流程,但该工作流程根本不清楚。在plan
命令的文档末尾有这样的陈述:" Terraform的未来版本将使计划文件更安全。"很明显,Hashicorp在使用这些计划文件时发现了很多,但为什么呢?
答案 0 :(得分:3)
应用预先计算的计划文件是可预测的,而直接运行terraform apply
则不可预测。
想象一下,你运行terraform plan
,一切看起来都不错。现在,您的基础架构中出现了一些不可预测的变化,直到您运行terraform apply
时才会注意到,这可能会导致与您预期的结果不同。
使用terraform apply <plan-file>
,plan
和apply
阶段之间的任何意外更改都会被捕获。特别是如果您考虑构建一个terraform CI / CD管道,使用计划文件是为自动化添加可预测性的好方法。
<强>更新强>
如评论中所述,可以在official documentation中找到自动化计划文件的示例工作流程:
在自动化中运行Terraform时,重点通常放在核心上 计划/申请周期。那么,主要路径与CLI大致相同 用法:
- 初始化Terraform工作目录。
- 制定计划以更改资源以匹配当前配置。
- 让操作人员审查该计划,以确保其可接受。
- 应用计划中描述的更改。
醇>
进一步更新
目前,我仍在运行terraform 0.10.8
,但感谢cm92和Matt Schuchard的评论,我发现了以下内容:
最近发布了terraform 0.11.0
,changelog提到了对terraform apply
行为的有趣修改。默认情况下,它现在将首先生成一个计划并在应用之前等待确认:
命令terraform适用,现在没有明确的计划参数 默认为交互式。具体来说,它将显示生成的计划 在应用之前等待确认,类似于现有的 terraform的行为破坏。计划时行为不变 提供了file参数,可以获得先前的行为 没有计划文件使用-auto-approve选项
根据您的公司审核流程,不同的可共享计划文件可能仍然是一个有趣的选项。