Terraform 的最佳实践

  • by

来自TechWorld with Nana[1]的视频[2]

1.   只使用terraform 命令更新状态文件

尽管terraform.tfstate文件是一个json文件,切忌直接编辑,否则会带来各种问题

2.   使用远程共享存储来保存状态文件

在合作环境下,如果任何人都可以执行terraform命令修改状态,那么很快状态文件就会出现不一致给资源管理造成混乱。

所有团队成员应该在同一个文件存储上共享状态文件(terraform.tfstate),例如S3,A Z Blob Storage或者GCS

3.   使用状态锁

哪怕状态文件保存在共享存储上,依然会出现两个人同时修改状态的情况,并造成事故。

解决方案时使用锁,确保任何时刻只有一个人编辑状态文件。

但这需要文件存储服务的支持。例如AWS S3支持通过DynamoDB实现文件锁

4.   备份状态文件

状态文件无比重要,因此需要注意随时备份。

如果使用云文件存储,只需要开启版本管理(versioning)即可随时恢复到任何历史状态

5.   不同的环境使用不同的状态文件

一般我们会有多个系统环境(开发、测试、生产),对于不同的环境,要确保使用不同的状态文件保存对应的状态,以避免造成混乱

6.   引入GitOps的理念

使用git进行terraform文件的管理,实现高效合作和版本管理。通过git进行代码和基础设施管理

7.   持续集成(CI)

在git基础上,实现标准的gitflow代码管理。即任何变更通过Merge Request实现,并进行代码审阅和自动化测试。

8.   通过自动化部署(CD)执行状态更新

禁止任何人手动执行terraform,将terraform的部署操作交给自动管道来执行;这样能让变更更加可靠和顺畅。


[1] https://www.youtube.com/channel/UCdngmbVKX1Tgre699-XLlUA

[2] https://youtu.be/gxPykhPxRW0

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.