我正在寻找在 S3 存储桶中创建和存储状态文件的最佳实践。
- 我应该将 S3 存储桶的创建与基础设施一起包括在内还是
- 为其 S3 存储桶创建一个单独的状态文件,并为资源创建一个不同的状态文件。
如果它是不同的文件,我还需要存储创建的 s3 存储桶的状态文件,那么在这种情况下,我应该创建两个 s3 存储桶,一个用于基础设施状态,另一个用于 s3 存储桶状态文件。
其次,如果设置了远程配置并执行“terraform destroy”,则会抛出错误,无法上传状态文件:找不到这样的存储桶,因为存储桶已被销毁。我应该首先禁用 terraform 远程配置 -disable 然后运行 terraform destroy 吗?
我应该遵循的最佳实践是什么?
就我个人而言,我使用 Terraform 基础堆栈来有效引导 AWS 帐户以与 Terraform 一起使用。该堆栈仅在本地存储其状态文件,然后将其提交给版本控制。这个堆栈应该只需要运行一次,所以我认为不使用远程后端没有问题。
我的 Terraform 基础堆栈创建:
- Terraform 的 IAM 用户将像将来一样运行
- s3 存储状态的桶
- 用于加密/解密状态的 KMS CMK
- 用于强制加密的存储桶策略声明
- 存储桶策略声明,以防止 Terraform 用户执行以下操作:
s3:putObject
& s3:getObject
与状态
- KMS 策略声明,防止 Terraform 用户执行以下操作:
kms:GenerateDataKey*
& kms:Decrypt
- 用于状态锁定的 DynamoDB 表。
这可以扩展到包括角色,特别是如果您的 Terraform 用户将跨多个帐户进行部署。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)