使用 Terraform 部署 VPC

了解如何使用 Infrastructure Manager 部署虚拟私有云 (VPC)。

此快速入门使用存储在公共 GitHub 代码库中的 Terraform 配置。配置定义了要预配的 VPC。

准备工作

  1. 登录您的 Google 账号。

    如果您还没有 Google 账号,请注册新账号

  2. 安装 Google Cloud CLI。

  3. 如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI

  4. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  5. 创建或选择 Google Cloud 项目

    选择或创建项目所需的角色

    • 选择项目:选择项目不需要特定的 IAM 角色,您可以选择已获授角色的任何项目。
    • 创建项目:如需创建项目,您需要拥有 Project Creator 角色 (roles/resourcemanager.projectCreator),该角色包含 resourcemanager.projects.create 权限。了解如何授予角色
    • 创建 Google Cloud 项目:

      gcloud projects create PROJECT_ID

      PROJECT_ID 替换为您要创建的 Google Cloud 项目的名称。

    • 选择您创建的 Google Cloud 项目:

      gcloud config set project PROJECT_ID

      PROJECT_ID 替换为您的 Google Cloud 项目名称。

  6. 验证是否已为您的 Google Cloud 项目启用结算功能

  7. 启用 Infrastructure Manager API(如果尚未启用):

    启用 API 所需的角色

    如需启用 API,您需要拥有 serviceusage.services.enable 权限。如果您创建了项目,则可能已经通过 Owner 角色 (roles/owner) 获得了此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。了解如何授予角色

    gcloud services enable config.googleapis.com
  8. 设置身份验证:

    1. 确保您拥有 Create Service Accounts IAM 角色 (roles/iam.serviceAccountCreator) 和 Project IAM Admin 角色 (roles/resourcemanager.projectIamAdmin)。了解如何授予角色
    2. 创建服务账号:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      SERVICE_ACCOUNT_NAME 替换为服务账号的名称。

    3. 向服务账号授予 roles/config.agent IAM 角色:

      gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/config.agent

      请替换以下内容:

      • SERVICE_ACCOUNT_NAME:服务账号的名称
      • PROJECT_ID:您在其中创建服务账号的项目的 ID
  9. 安装 Google Cloud CLI。

  10. 如果您使用的是外部身份提供方 (IdP),则必须先使用联合身份登录 gcloud CLI

  11. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  12. 创建或选择 Google Cloud 项目

    选择或创建项目所需的角色

    • 选择项目:选择项目不需要特定的 IAM 角色,您可以选择已获授角色的任何项目。
    • 创建项目:如需创建项目,您需要拥有 Project Creator 角色 (roles/resourcemanager.projectCreator),该角色包含 resourcemanager.projects.create 权限。了解如何授予角色
    • 创建 Google Cloud 项目:

      gcloud projects create PROJECT_ID

      PROJECT_ID 替换为您要创建的 Google Cloud 项目的名称。

    • 选择您创建的 Google Cloud 项目:

      gcloud config set project PROJECT_ID

      PROJECT_ID 替换为您的 Google Cloud 项目名称。

  13. 验证是否已为您的 Google Cloud 项目启用结算功能

  14. 启用 Infrastructure Manager API(如果尚未启用):

    启用 API 所需的角色

    如需启用 API,您需要拥有 serviceusage.services.enable 权限。如果您创建了项目,则可能已经通过 Owner 角色 (roles/owner) 获得了此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。了解如何授予角色

    gcloud services enable config.googleapis.com
  15. 设置身份验证:

    1. 确保您拥有 Create Service Accounts IAM 角色 (roles/iam.serviceAccountCreator) 和 Project IAM Admin 角色 (roles/resourcemanager.projectIamAdmin)。了解如何授予角色
    2. 创建服务账号:

      gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

      SERVICE_ACCOUNT_NAME 替换为服务账号的名称。

    3. 向服务账号授予 roles/config.agent IAM 角色:

      gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=roles/config.agent

      请替换以下内容:

      • SERVICE_ACCOUNT_NAME:服务账号的名称
      • PROJECT_ID:您在其中创建服务账号的项目的 ID

为配置中的资源授予权限

您已授予运行 Infra Manager 所需的权限,但还需要授予部署的配置中所述的资源特有的权限。

为 VPC(即 Terraform 配置中定义的资源)授予权限。

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
    --role=roles/compute.networkAdmin

替换以下内容:

  • SERVICE_ACCOUNT_NAME 替换为服务账号的名称。
  • PROJECT_ID:您的项目 ID。

预览部署

在创建部署之前,您可以先创建部署预览版。 您可以使用此预览来验证计划配置的资源。

以下命令填充了 4 个没有默认值的值。 这些值分别是:您的项目 ID、服务账号名称、位置 us-central1 以及您要创建的网络的名称 quickstart-vpc

如需创建预览版,请使用以下命令:

    gcloud infra-manager previews create projects/PROJECT_ID/locations/us-central1/previews/quickstart-preview \
        --service-account projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
        --git-source-repo=https://github.com/terraform-google-modules/terraform-google-network \
        --git-source-directory=modules/vpc \
        --git-source-ref=main \
        --input-values=project_id=PROJECT_ID,network_name=quickstart-vpc

创建预览后,您可以查看预览结果。 本快速入门跳过了这一步,但如果您想了解更多详情,可以参阅导出并查看预览结果

创建部署

使用 Infra Manager 创建部署。这意味着 Infra Manager 会预配 Terraform 配置中定义的资源。

此快速入门的配置有 4 个没有默认值的值。以下命令会添加以下值:您的项目 ID、服务账号名称、位置 us-central1 以及您要创建的网络名称 quickstart-vpc

gcloud infra-manager deployments apply projects/PROJECT_ID/locations/us-central1/deployments/quickstart-deployment \
    --service-account=projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
    --git-source-repo=https://github.com/terraform-google-modules/terraform-google-network \
    --git-source-directory=modules/vpc \
    --git-source-ref=main \
    --input-values=project_id=PROJECT_ID,network_name=quickstart-vpc

部署完成后,您会看到:

Creating the deployment...done

现在,VPC 已按照配置中的说明创建和配置完毕。

在 Cloud Build 中查看构建结果

如需查看 Infra Manager 用于创建部署的 Cloud Build 作业,请在 Google Cloud 控制台中打开构建历史记录页面:

打开“构建记录”页面

查看部署状态

部署完成后,您可以查看其说明,以查看有关该部署的信息,包括状态。

查看部署的说明:

gcloud infra-manager deployments describe projects/PROJECT_ID/locations/us-central1/deployments/quickstart-deployment

输出包含有关部署的详细信息,包括部署的时间戳、最新修订版本的名称和状态。

对于状态,您会看到 ACTIVE

查看已预配 VPC 的详细信息

查看已预配 VPC 的详细信息:

gcloud infra-manager resources list --revision=projects/PROJECT_ID/locations/us-central1/deployments/quickstart-deployment/revisions/REVISION_ID

REVISION_ID 替换为最新修订版本的 ID。此 ID 为 r-0,除非您多次部署。您可以在上一部分中的部署说明中看到最新修订版本的 ID。

在控制台中查看 VPC

在控制台中查看 VPC:

进入 VPC 网络页面

您会看到名为 quickstart-vpc 的 VPC。这是 Infra Manager 预配的 VPC。

清理

为避免因本页中使用的资源导致您的 Google Cloud 账号产生费用,请务必删除不再需要的资源。

删除 VPC

删除 VPC 和与部署有关的元数据:

gcloud infra-manager deployments delete projects/PROJECT_ID/locations/us-central1/deployments/quickstart-deployment

可选:删除项目

如果您在新 Google Cloud 项目中部署了解决方案,但不再需要该项目,请完成以下步骤来将其删除:

  1. 在 Google Cloud 控制台中,前往管理资源页面。

    转到“管理资源”

  2. 在项目列表中,选择要删除的项目,然后点击删除
  3. 在提示符处,输入项目 ID,然后点击关停

后续步骤