使用 Google Cloud 资源时的最佳实践

使用 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_policygoogle_*_iam_binding 会创建权威 IAM 关联,其中 Terraform 资源用作可以分配给相关资源的权限的唯一可靠来源。

如果权限在 Terraform 之外更改,则 Terraform 在下次执行时会覆盖所有权限,以表示配置中定义的政策。这可能适用于完全由特定 Terraform 配置管理的资源,但这意味着由 Google Cloud 自动管理的角色会被移除,因而可能中断某些服务的功能。

为避免这种情况,我们建议直接使用 google_*_iam_member 资源或 来自 Google 的 IAM 模块

后续步骤