【发布时间】:2019-03-26 17:45:41
【问题描述】:
当谈到 Terraform 的工作原理时,这更像是一组概念性的东西。
1) 这是一个场景。假设我创建了一个在 AWS 中创建几台机器的简单计划。初始化,应用,它构建基础设施并创建本地状态文件。对代码满意,我将其推送到github。我的问题是我是否也应该推高状态文件?如果没有状态文件,任何拉下代码并尝试再次构建实例的人都不会拥有状态,所以我假设 terraform 尝试构建一组新机器。但是,状态文件感觉像是残留数据,因此应该被 gitignored。
2) 相同的场景,但假设该计划包含一个实现 S3 后端的设置文件。是否存在相同的问题,或者计划的任何运行是否尊重 S3 后端的状态?
3) 现在,假设我希望这个计划作为一个更大的计划中的模块运行,该计划部署整个环境并将其状态文件存储在 S3 中。该模块已经运行,因此已经存在机器。将模块作为更大模块的一部分运行与 (1) 的行为相同,因为它使用总体计划的状态文件,还是使用其现有的 s3 状态文件?
4) 后端设置是否应该作为一个独立的模块来实现?我的想法是,如果有人试图运行 terraform destroy,他们不会破坏后端,只会破坏基础设施。
总的来说,我对 Terraform 的企业工作流程感到很困惑。
【问题讨论】:
标签: terraform