使用 Terraform 创建工作流
本快速入门介绍了如何使用 Terraform 创建、部署和执行第一个工作流。Terraform 是一种基础架构即代码工具,可让您使用代码以可预测的方式创建、更改和改进云基础架构。了解如何使用 Terraform 在 Google Cloud 上预配基础架构。
在本快速入门中,示例工作流会向公共 API 发送请求,然后返回该 API 的响应。
您将完成以下操作:
- 使用 Terraform 启用 Workflows API。
- 使用 Terraform 为工作流创建服务帐号。
- 使用 Terraform 定义和部署工作流。
- 使用 Google Cloud CLI 执行工作流。
准备工作
您的组织定义的安全限制条件可能会导致您无法完成以下步骤。如需了解相关问题排查信息,请参阅在受限的 Google Cloud 环境中开发应用。
请注意,Cloud Shell 已集成 Terraform。如果您需要安装 Terraform,请参阅 HashiCorp Terraform 文档。
- 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
- 安装 Google Cloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Enable the Cloud Resource Manager and Identity and Access Management (IAM) APIs:
gcloud services enable cloudresourcemanager.googleapis.com
iam.googleapis.com - 安装 Google Cloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init
-
Create or select a Google Cloud project.
-
Create a Google Cloud project:
gcloud projects create PROJECT_ID
Replace
PROJECT_ID
with a name for the Google Cloud project you are creating. -
Select the Google Cloud project that you created:
gcloud config set project PROJECT_ID
Replace
PROJECT_ID
with your Google Cloud project name.
-
-
Enable the Cloud Resource Manager and Identity and Access Management (IAM) APIs:
gcloud services enable cloudresourcemanager.googleapis.com
iam.googleapis.com
创建 Terraform 配置文件
创建一个名为 main.tf
的 Terraform 配置文件,并添加本快速入门中使用的适用于 Terraform 的 Google 提供方资源。
请注意,您可以使用插值替代引用变量、资源属性和调用函数等替代变量。
创建目录:
mkdir terraform
转到
terraform
目录:cd terraform
将新文件
main.tf
添加到以下目录中:nano main.tf
将以下资源添加到
main.tf
文件:分配项目 ID:
provider "google" { project = "PROJECT_ID" }
将
PROJECT_ID
替换为您的项目 ID。启用 Workflows API:
为工作流创建服务账号:
使用
google_workflows_workflow
资源定义工作流:示例工作流中会使用以下参数:
name
:工作流的名称。region
:工作流的位置。description
:工作流说明。service_account
:与最新工作流版本关联的服务帐号的电子邮件地址或唯一 ID。此服务帐号代表工作流的身份并确定工作流具有哪些权限。如果您在创建工作流的过程中未指定服务帐号,则工作流将使用默认 Compute Engine 服务帐号作为其身份。如需了解详情,请参阅授予工作流访问 Google Cloud 资源的权限。labels
:要分配给此工作流的键值对标签对列表,可帮助您整理 Google Cloud 实例。如需了解详情,请参阅什么是标签?user_env_vars
:与此工作流修订版本关联的用户定义的环境变量。如需了解详情,请参阅使用环境变量。source_contents
:要执行的 Workflows 代码。如需了解文件大小限制,请参阅资源限制。
其他可选参数包括:
crypto_key_name
:Cloud Key Management Service 密钥的资源 ID,格式如下:projects/PROJECT_NAME/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
如需了解详情,请参阅使用客户管理的加密密钥。
call_log_level
:在工作流执行期间应用于调用和呼叫响应的日志记录级别。可能的值包括:CALL_LOG_LEVEL_UNSPECIFIED
LOG_ALL_CALLS
LOG_ERRORS_ONLY
LOG_NONE
如需了解详情,请参阅通话记录。
project
:资源所属项目的 ID。如果未提供,系统会使用提供方项目。name_prefix
:创建以指定前缀开头的唯一名称。如果未指定此属性和name
,则系统会为名称选择一个随机值。
创建和执行工作流
部署 Terraform 资源以创建工作流,然后执行工作流。
在目录中初始化 Terraform:
terraform init
检查您使用 Terraform 建议的更改是否符合预期计划:
terraform plan
您可以忽略有关不使用
-out
选项的备注。创建工作流:
terraform apply
在 Enter a value 提示符处,输入
yes
以继续创建资源。确认已创建工作流:
gcloud workflows list --location us-central1
输出应类似如下所示:
NAME STATE REVISION_ID UPDATE_TIME projects/project-name/locations/us-central1/workflows/sample-workflow ACTIVE 000001-f9a 2024-02-24T13:38:58.353765906Z
您可以选择执行此工作流:
gcloud workflows execute sample-workflow
清理
为避免因本页面中使用的资源导致您的 Google Cloud 账号产生费用,请删除包含这些资源的 Google Cloud 项目。
- 删除您使用 Terraform 创建的所有资源:
terraform destroy
- 删除您创建的工作流:
gcloud workflows delete sample-workflow
当系统询问您是否要继续时,请输入y
。 - 或者,您也可以删除 Google Cloud 项目,以避免产生费用。删除 Google Cloud 项目后,系统即会停止对该项目中使用的所有资源计费。
删除 Google Cloud 项目:
gcloud projects delete PROJECT_ID