使用 Terraform 预配 Google Cloud 资源的最佳实践已集成到 Google 维护的 Cloud Foundation Toolkit 模块中。本文档重述了其中一些最佳实践。
本指南未介绍 Terraform。如需了解如何将 Terraform 与 Google Cloud搭配使用,请参阅 Terraform 使用入门。
烘焙虚拟机映像
通常,我们建议您使用 Packer 等工具烘焙虚拟机映像。然后,Terraform 只需要使用预先专烘焙的映像启动机器。
如果预先烘焙的映像不可用,则 Terraform 可以将新的虚拟机移交给具有 provisioner
块的配置管理工具。我们建议您避免使用此方法,而仅将其用作最后的补救手段。如需清理与实例关联的旧状态,需要清理逻辑的预配工具应在 when = destroy
时使用 provisioner
块。
Terraform 应通过实例元数据为配置管理提供虚拟机配置信息。
管理 Identity and Access Management
在预配与 Terraform 的 IAM 关联时,可以使用几种不同的资源:
google_*_iam_policy
(例如google_project_iam_policy
)google_*_iam_binding
(例如google_project_iam_binding
)google_*_iam_member
(例如google_project_iam_member
)
google_*_iam_policy
和 google_*_iam_binding
会创建权威 IAM 关联,其中 Terraform 资源用作可以分配给相关资源的权限的唯一可靠来源。
如果权限在 Terraform 之外更改,则 Terraform 在下次执行时会覆盖所有权限,以表示配置中定义的政策。这可能适用于完全由特定 Terraform 配置管理的资源,但这意味着由 Google Cloud 自动管理的角色会被移除,因而可能中断某些服务的功能。
为避免这种情况,我们建议直接使用 google_*_iam_member
资源或 来自 Google 的 IAM 模块。
后续步骤
- 了解版本控制最佳实践。
- 了解 Terraform 操作最佳实践。