arrow_back

使用 Terraform 实现基础设施即代码

登录 加入
欢迎加入我们的社区,一起测试和分享您的知识!
done
学习 700 多个动手实验和课程并获得相关技能徽章

使用 Terraform 实现基础设施即代码

实验 1 小时 universal_currency_alt 5 个积分 show_chart 中级
info 此实验可能会提供 AI 工具来支持您学习。
欢迎加入我们的社区,一起测试和分享您的知识!
done
学习 700 多个动手实验和课程并获得相关技能徽章

本实验由 Google 与我们的合作伙伴 Hashicorp 共同开发。如果您在账号个人资料中选择接收产品动态、通知和优惠信息,那么我们可能会与实验赞助商 Hashicorp 共享您的个人信息。

GSP750

Google Cloud 自定进度实验

概览

Terraform 是 HashiCorp 开发的一款基础设施即代码产品。这款工具可以采用安全、可重复的方式构建、更改和管理基础设施。借助 Terraform,运营人员和基础设施团队可以采用名为 HashiCorp Configuration Language (HCL) 的配置语言进行用户可理解的自动化部署,以此来管理环境。

基础设施即代码是指在一个或多个文件中管理基础设施的过程,而不是在界面中手动配置资源。在这种情况下,资源可以是给定环境中基础设施的任何部分,例如虚拟机、安全群组、网络接口等。概括来讲,Terraform 可让运营人员使用 HCL 针对几乎所有提供商(AWS、Google Cloud、GitHub、Docker 等)创建包含其所需资源的定义的文件,并在应用时自动创建这些资源。

简单的部署工作流基本上包含以下步骤:

  • 限定范围 - 确认需要为给定项目创建的资源。
  • 编写 - 根据限定范围的参数使用 HCL 创建配置文件。
  • 初始化 - 在包含配置文件的项目目录中运行 terraform init。这将为项目下载正确的提供程序 (Provider) 插件。
  • 规划与应用 - 首先运行 terraform plan 来验证创建过程,然后运行 terraform apply 以创建实际资源和状态文件。状态文件可用于将配置文件中今后的更改与部署环境中实际存在的内容进行比较。

目标

在本实验中,您将学习如何执行以下任务:

  • 使用 Terraform 构建、更改和销毁基础设施
  • 使用 Terraform 创建资源依赖项
  • 使用 Terraform 预配基础设施

设置和要求

点击“开始实验”按钮前的注意事项

请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。

此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。我们会为您提供新的临时凭据,让您可以在实验规定的时间内用来登录和访问 Google Cloud。

为完成此实验,您需要:

  • 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
  • 完成实验的时间 - 请注意,实验开始后无法暂停。
注意:如果您已有自己的个人 Google Cloud 账号或项目,请不要在此实验中使用,以避免您的账号产生额外的费用。

如何开始实验并登录 Google Cloud 控制台

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个弹出式窗口供您选择付款方式。左侧是实验详细信息面板,其中包含以下各项:

    • 打开 Google Cloud 控制台按钮
    • 剩余时间
    • 进行该实验时必须使用的临时凭据
    • 帮助您逐步完成本实验所需的其他信息(如果需要)
  2. 点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。

    该实验会启动资源并打开另一个标签页,显示登录页面。

    提示:请将这些标签页安排在不同的窗口中,并将它们并排显示。

    注意:如果您看见选择账号对话框,请点击使用其他账号
  3. 如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。

    {{{user_0.username | "<用户名>"}}}

    您也可以在实验详细信息面板中找到用户名

  4. 点击下一步

  5. 复制下面的密码,然后将其粘贴到欢迎对话框中。

    {{{user_0.password | "<密码>"}}}

    您也可以在实验详细信息面板中找到密码

  6. 点击下一步

    重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。 注意:在本次实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
  7. 继续在后续页面中点击以完成相应操作:

    • 接受条款及条件。
    • 由于该账号为临时账号,请勿添加账号恢复选项或双重验证。
    • 请勿注册免费试用。

片刻之后,系统会在此标签页中打开 Google Cloud 控制台。

注意:如需查看列有 Google Cloud 产品和服务的菜单,请点击左上角的导航菜单导航菜单图标

激活 Cloud Shell

Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。

  1. 点击 Google Cloud 控制台顶部的激活 Cloud Shell “激活 Cloud Shell”图标

如果您连接成功,即表示您已通过身份验证,且当前项目会被设为您的 PROJECT_ID 环境变量所指的项目。输出内容中有一行说明了此会话的 PROJECT_ID

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud 是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。

  1. (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
  1. 点击授权

  2. 现在,输出的内容应如下所示:

输出:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (可选)您可以通过此命令列出项目 ID:
gcloud config list project

输出

[core] project = <project_ID>

输出示例

[core] project = qwiklabs-gcp-44776a13dea667a6 Note: For full documentation of gcloud, in Google Cloud, refer to the gcloud CLI overview guide.

任务 1. 构建基础设施

Terraform 已预安装在 Cloud Shell 中。既然 Terraform 已经安装,您就可以直接开始创建一些基础设施。

首先创建一个名为 main.tf 的示例配置文件。Terraform 会将扩展名为 .tf.tf.json 的文件识别为配置文件,并会在运行时加载这些文件。

  1. 创建 main.tf 文件:
touch main.tf
  1. 在 Cloud Shell 的工具栏中点击打开编辑器按钮(如需在 Cloud Shell 与代码编辑器之间切换,您可以根据需要点击打开编辑器打开终端图标,或点击在新窗口中打开按钮,在单独的标签页中打开编辑器)。

  2. 在编辑器中,将如下内容添加到 main.tf 文件中。

terraform { required_providers { google = { source = "hashicorp/google" version = "3.5.0" } } } provider "google" { project = "{{{project_0.project_id | PROJECT ID}}}" region = "{{{project_0.default_region | REGION}}}" zone = "{{{project_0.default_zone | ZONE}}}" } resource "google_compute_network" "vpc_network" { name = "terraform-network" } 注意:如需通过 Terraform 0.12 使用此代码段,请移除 terraform {} 块。

Terraform 块

Terraform 需要通过 terraform {} 块来确定从 Terraform Registry 中下载哪个提供程序。在前面的配置中,google 提供程序的来源定义为 hashicorp/google,这是 registry.terraform.io/hashicorp/google 的简写形式。

您还可以为 required_providers 块中定义的每个提供程序分配一个版本。version 并非强制参数,但我们建议您使用。此参数用于将提供程序限制为某个特定的版本或特定范围的版本,以防下载可能包含破坏性更改的新提供程序。如果没有指定版本,Terraform 将会在初始化期间自动下载最新的提供程序。

如需了解详情,请参阅 HashiCorp Terraform 网站上的提供程序相关要求

提供程序

provider 块用于配置指定的提供程序,在本示例中为 google。提供程序负责创建和管理资源。如果使用一项 Terraform 配置来管理多个不同提供程序提供的资源,则可能会存在多个 provider 块。

初始化

对于新配置(或从版本控制系统签出某项现有配置后),需要运行的第一个命令是 terraform init,它将对各项本地设置和数据进行初始化,以供后续的命令使用。

  • main.tf 文件所在的同一目录中,运行 terraform init 命令以初始化新的 Terraform 配置:
terraform init

创建资源

  1. 运行 terraform apply 命令立即应用配置:
terraform apply

在输出中,资源 "google_compute_network" "vpc_network" 旁有一个 + 号,表示 Terraform 将创建此资源。其下方显示的是将要设置的属性。如果显示的值为 (known after apply),表示在创建资源前将不知道相关值。

在成功创建计划后,Terraform 将会暂停,等到计划获得批准后才会继续运行。如果计划中有任何不正确或危险之处,可以放心地在此处取消计划,这样基础设施就不会发生任何变更。

如果 terraform apply 运行失败并显示错误,请查看错误消息并修复发生的错误。

  1. 如果计划看起来可以接受,请在出现确认提示时输入 yes 继续操作。

执行计划可能需要几分钟的时间,因为 Terraform 需要等待网络成功创建:

# ... Enter a value: yes google_compute_network.vpc_network: Creating... google_compute_network.vpc_network: Still creating... [10s elapsed] google_compute_network.vpc_network: Still creating... [20s elapsed] google_compute_network.vpc_network: Still creating... [30s elapsed] google_compute_network.vpc_network: Still creating... [40s elapsed] google_compute_network.vpc_network: Still creating... [50s elapsed] google_compute_network.vpc_network: Creation complete after 58s [id=terraform-network] Apply complete! Resources: 1 added, 0 changed, 0 destroyed.

Terraform 现已完成所有操作!您可以前往 Cloud 控制台查看预配的网络。

  1. 在控制台的导航菜单中,点击 VPC 网络。您将看到 terraform-network 已预配完成。

VPC 网络页面

  1. 在 Cloud Shell 中,运行 terraform show 命令来检查当前状态:
terraform show

您可以引用这些值来配置其他资源或输出,本实验的后续部分将会介绍相关内容。

点击“检查我的进度”以验证是否完成了以下目标: 在 Terraform 中创建资源

任务 2. 更改基础设施

在上一部分中,您已使用 Terraform 创建了一个基本的基础设施:一个 VPC 网络。在本部分中,您将修改相关配置,并了解 Terraform 处理更改的方式。

基础设施不断发展演变,而 Terraform 可以帮助您管理和实施这些变更。当您更改 Terraform 配置后,Terraform 将会构建一个执行计划,该计划仅修改达到预期状态所必要的内容。

利用 Terraform 来更改基础设施,您将可以对配置和状态进行版本控制,从而了解基础设施随时间演变的情况。

添加资源

您可以通过以下方式添加新资源:将它们添加到 Terraform 配置中,然后运行 terraform apply 命令对其进行预配。

  1. 在编辑器中,向 main.tf 中添加一个计算实例资源:
resource "google_compute_instance" "vm_instance" { name = "terraform-instance" machine_type = "e2-micro" boot_disk { initialize_params { image = "debian-cloud/debian-11" } } network_interface { network = google_compute_network.vpc_network.name access_config { } } }

此资源中还包含几个参数。其中 name 和 machine_type 是简单的字符串,而 boot_disknetwork_interface 则是更为复杂的代码块。您可以在 google_compute_instance 文档中查看所有可用的选项。

在本示例中,您的计算实例将使用 Debian 操作系统,并连接到您先前创建的 VPC 网络。请注意此配置如何使用 google_compute_network.vpc_network.name 来表示网络的名称属性,其中 google_compute_network.vpc_network 为 ID,与块中用于定义网络的值相匹配,而 name 则是该资源的属性。

只要包含 access_config 块,即便其中没有任何参数,也能确保实例可通过互联网访问。

  1. 现在,运行 terraform apply 命令来创建计算实例:
terraform apply
  1. 在出现确认提示时,再次输入 yes

这是一个相当简单的更改,您向配置中添加了一个名为“vm_instance”的“google_compute_instance”资源,Terraform 在 Google Cloud 中创建了该资源。

更改资源

除了创建资源外,Terraform 还可以对这些资源进行更改。

  1. 向“vm_instance”中添加一个 tags 参数,如下所示:
resource "google_compute_instance" "vm_instance" { name = "terraform-instance" machine_type = "e2-micro" tags = ["web", "dev"] # ... }
  1. 再次运行 terraform apply 命令以更新实例:
terraform apply
  1. 前缀 ~ 表示 Terraform 将就地更新资源。您可以输入 yes 直接应用所做的更改,Terraform 即会向您的实例中添加标记。

点击“检查我的进度”以验证是否完成了以下目标: 更改基础设施

破坏性更改

破坏性更改是指需要提供商替换现有资源而非更新资源的更改。当云服务提供商不支持以您的配置中所描述的方式更新资源时,一般就会出现这种情况。

更改实例的磁盘映像就是破坏性更改的一个示例。

  1. 在您的配置文件中,将 vm_instance 资源中的 boot_disk 块更改为以下内容:
boot_disk { initialize_params { image = "cos-cloud/cos-stable" } }
  1. 现在,再次运行 terraform apply 命令,看看 Terraform 是如何将此更改应用于现有资源的:
terraform apply

前缀 -/+ 表示 Terraform 会先销毁现有资源,然后再重新创建资源,而不是就地进行更新。虽然可以就地更新部分特性(带有前缀 ~),但若要更改实例的启动磁盘映像,则需要重新创建映像。Terraform 和 Google Cloud 提供程序将为您处理这些细节问题,执行计划中会明确说明 Terraform 将执行的操作。

此外,执行计划中会指明,之所以需要替换实例,是因为磁盘映像发生了变化。根据这些信息,您可以对更改进行调整,以便有可能在无法接受销毁/创建更新的情况下避免此类更新。

  1. 在继续执行操作之前,Terraform 会再次显示提示,要求您批准执行计划。输入 yes 以执行计划好的步骤。

正如执行计划中所指明的那样,Terraform 先销毁了现有实例,然后创建了一个新实例来取代该实例。您可以再次运行 terraform show 命令来查看与此实例相关联的新值。

销毁基础设施

现在,您已经了解如何构建和更改基础设施。在继续学习如何创建多个资源和显示资源依赖项之前,您将了解如何彻底销毁由 Terraform 托管的基础设施。

在生产环境中,销毁基础设施这种情况很少发生。但是,如果您使用 Terraform 来启动多种环境(如开发、测试和预演),则销毁基础设施通常会很有用。

您可以使用 terraform destroy 命令来销毁资源,该命令与 terraform apply 类似,只不过其行为看起来像是已经从配置中移除所有资源。

  • 请试着运行 terraform destroy 命令。输入 yes 以执行该计划并销毁基础设施:
terraform destroy

前缀 - 表示相关实例和网络将被销毁。与执行 apply 命令时类似,Terraform 在进行任何更改前会显示执行计划并等待批准。

terraform apply 命令一样,Terraform 会确定销毁各项资源时必须遵循的顺序。如果 VPC 网络中仍然存在资源,Google Cloud 将不允许删除该网络,因此 Terraform 将等到实例销毁后才会销毁网络。在执行相关操作时,Terraform 会创建一个依赖关系图以确定正确的操作顺序。在涉及多个资源的更复杂的情况下,只要不产生隐患,Terraform 会并行执行这些操作。

点击“检查我的进度”以验证是否完成了以下目标: 破坏性更改

任务 3. 创建资源依赖项

在本部分中,您将详细了解资源依赖项,以及如何使用资源参数与其他资源共享某一资源的信息。

实际的基础设施包含各种资源和资源类型。Terraform 配置可能会包含多项资源和多种资源类型,而这些资源类型甚至还会涵盖多个提供程序。

在本部分中,我们将通过一个基本的示例向您展示,如何配置多项资源以及如何使用资源特性来配置其他资源。

  • 重新创建网络和实例。出现提示时,输入 yes 回应,系统将会创建相应资源:
terraform apply

分配静态 IP 地址

  1. 现在,在 main.tf 中添加相关内容,为虚拟机实例分配一个静态 IP 地址:
resource "google_compute_address" "vm_static_ip" { name = "terraform-static-ip" }

此示例与先前添加虚拟机实例资源的示例类似,只不过这次您要创建一个“google_compute_address”资源类型。此资源类型会为您的项目分配预留的 IP 地址。

  1. 然后,运行 terraform plan 命令:
terraform plan

使用 terraform plan 可以查看系统将会创建的内容:

$ terraform plan Refreshing Terraform state in-memory prior to plan... The refreshed state will be used to calculate this plan, but will not be persisted to local or remote state storage. google_compute_network.vpc_network: Refreshing state... [id=terraform-network] google_compute_instance.vm_instance: Refreshing state... [id=terraform-instance] ------------------------------------------------------------------------ An execution plan has been generated and is shown below. Resource actions are indicated with the following symbols: + create Terraform will perform the following actions: # google_compute_address.vm_static_ip will be created + resource "google_compute_address" "vm_static_ip" { + address = (known after apply) + address_type = "EXTERNAL" + creation_timestamp = (known after apply) + id = (known after apply) + name = "terraform-static-ip" + network_tier = (known after apply) + project = (known after apply) + region = (known after apply) + self_link = (known after apply) + subnetwork = (known after apply) + users = (known after apply) } Plan: 1 to add, 0 to change, 0 to destroy. ------------------------------------------------------------------------ Note: You didn't specify an "-out" parameter to save this plan, so Terraform can't guarantee that exactly these actions will be performed if "terraform apply" is subsequently run.

plan 命令与 terraform apply 命令不同,前者只会显示将更改的内容,实际上并不会直接应用更改。请注意,到目前为止您所做的唯一更改是添加静态 IP。接下来,您需要将 IP 地址附加到实例。

  1. 请按如下方式更新实例的 network_interface 配置:
network_interface { network = google_compute_network.vpc_network.self_link access_config { nat_ip = google_compute_address.vm_static_ip.address } }

access_config 块有几个可选参数,在此示例中,您需要将 nat_ip 设置为该静态 IP 地址。当 Terraform 读取此配置时,将会执行以下操作:

  • 确保先创建 vm_static_ip,再创建 vm_instance
  • vm_static_ip 的属性保存到状态中
  • nat_ip 设置为 vm_static_ip.address 属性的值
  1. 再次运行 terraform plan 命令,但这次要保存计划:
terraform plan -out static_ip

采用这种方式保存计划可确保您将来应用完全相同的计划。如果您尝试应用计划所创建的文件,Terraform 首先会检查并确保已进行完全相同的更改,然后才会应用计划。

在此示例中,您可以看到,Terraform 将会创建一个新的 google_compute_address,并更新现有的虚拟机以使用该地址。

  1. 运行 terraform apply "static_ip",查看 Terraform 计划如何应用这一更改:
terraform apply "static_ip"

如上所示,在修改虚拟机实例前,Terraform 先创建了静态 IP 地址。由于插值表达式会将 IP 地址传递给实例的网络接口配置,因此 Terraform 能够推断出依赖项,并知道必须先创建静态 IP 地址,然后再更新实例。

点击“检查我的进度”以验证是否完成了以下目标: 创建资源依赖项

隐式和显式依赖项

通过研究插值表达式中使用的资源特性,Terraform 能够自动推断出一项资源何时会依赖另一项资源。在上例中,对 google_compute_address.vm_static_ip.address 的引用会针对名为 vm_static_ipgoogle_compute_address 创建一个“隐式依赖项”

Terraform 根据这一依赖项信息确定创建和更新不同资源的正确顺序。在上例中,Terraform 知道必须先创建 vm_static_ip,然后再更新 vm_instance 以使用该 IP。

让 Terraform 了解这些关系的主要途径是通过插值表达式推断隐式依赖项,应尽可能使用此方式。

Terraform 有时无法了解资源之间的依赖关系。在这种情况下,可以使用 depends_on 参数。该参数可添加至任何资源,并接受要创建显式依赖关系的资源列表作为其值。

例如,假设您将在实例中运行的某个应用预计会使用特定的 Cloud Storage 存储桶,但是该依赖关系是在应用代码内部配置的,因此 Terraform 就无法了解这一依赖关系。在这种情况下,您可以使用 depends_on 来明确声明两者的依赖关系。

  1. main.tf 中添加如下内容,以添加 Cloud Storage 存储桶和对该存储桶有显式依赖关系的实例:
# 代表应用将使用的存储桶的新资源。 resource "google_storage_bucket" "example_bucket" { name = "<UNIQUE-BUCKET-NAME>" location = "US" website { main_page_suffix = "index.html" not_found_page = "404.html" } } # 创建一个使用该存储桶的新实例 resource "google_compute_instance" "another_instance" { # 指示 Terraform 只有在创建存储桶后才能创建此虚拟机实例。 depends_on = [google_storage_bucket.example_bucket] name = "terraform-instance-2" machine_type = "e2-micro" boot_disk { initialize_params { image = "cos-cloud/cos-stable" } } network_interface { network = google_compute_network.vpc_network.self_link access_config { } } } 注意:存储桶必须具有全局唯一性。因此,您需要将 UNIQUE-BUCKET-NAME 替换为一个不重复的有效存储桶名称。使用自己的用户名和日期构成的存储桶名称通常不会重复。

您可能不确定应在配置中的何处定义这些资源。在 Terraform 配置文件中定义资源的顺序不会影响到 Terraform 应用更改的方式。您可以按照最适合您和您团队的方式来整理配置文件。

  1. 现在,运行 terraform plan 和 terraform apply 命令,以实际应用这些更改:
terraform plan terraform apply

点击“检查我的进度”以验证是否完成了以下目标: 创建依赖于存储桶的实例

  1. 在继续操作之前,先从您的配置中移除这些新资源,然后再次运行 terraform apply 命令将其销毁。在本实验中,您将不会再使用存储桶或第二个实例。

任务 4. 预配基础设施

您此时启动的计算实例基于给定的 Google 映像创建,但未安装其他软件,也未应用任何配置。

Google Cloud 允许客户管理自己的自定义操作系统映像。这样可以有效确保根据您的需要来预先配置使用 Terraform 预配的实例。Packer 是完成此任务的理想工具,该工具中包含适用于 Google Cloud 的构建器

Terraform 使用预配工具上传文件、运行 Shell 脚本,或者安装和触发配置管理工具等其他软件。

定义预配工具

  1. 如需定义预配工具,请将配置中用于定义第一个 vm_instance 的资源块修改为以下内容:
resource "google_compute_instance" "vm_instance" { name = "terraform-instance" machine_type = "e2-micro" tags = ["web", "dev"] provisioner "local-exec" { command = "echo ${google_compute_instance.vm_instance.name}: ${google_compute_instance.vm_instance.network_interface[0].access_config[0].nat_ip} >> ip_address.txt" } # ... }

这会在 resource 块中添加一个 provisioner 块。您可以添加多个 provisioner 块,以定义多个预配步骤。Terraform 支持多个预配工具,但在本示例中,您使用的是 local-exec 预配工具。

local-exec 预配工具会在运行 Terraform 的机器(而不是虚拟机实例本身)本地执行命令。您使用的是此预配工具,而非其他预配工具,因此我们目前不必担心如何指定连接信息

这也显示了一个较以往更为复杂的字符串插值示例。每个虚拟机实例可以具有多个网络接口,所以可以依照大多数编程语言遵循的规则,使用 network_interface[0] 来指代第一个接口(从 0 开始计数)。每个网络接口还可以具有多个 access_config 块,同样的,您可以指定第一个 access_config 块。

  1. 运行 terraform apply 命令:
terraform apply

此时,输出内容一开始可能有点令人困惑。

Terraform 发现不需要执行任何操作,如果您检查一下,就会发现您的本地机器上没有 ip_address.txt 文件。

Terraform 对待预配工具的方式与其他参数不同。只有在创建某个资源后,预配工具才会运行,但添加预配工具并不会强制销毁和重新创建该资源。

  1. 使用 terraform taint 命令指示 Terraform 重新创建实例:
terraform taint google_compute_instance.vm_instance

当您下一次执行 apply 命令时,Terraform 将会销毁有污点的资源并重新创建一个资源。

  1. 现在运行 terraform apply 命令:
terraform apply
  1. 查看 ip_address.txt 文件中的内容,确认一切正常。

该文件包含 IP 地址,与您的要求一致。

失败的预配工具和有污点的资源

如果成功创建了某个资源,但预配步骤失败,Terraform 将会出错并将该资源标记为“有污点”。有污点的资源会继续存在,但由于预配失败,不应将其视为可安全使用。

当您生成下一个执行计划时,Terraform 将会移除任何有污点的资源并创建新资源,而且在创建后再次尝试进行预配。

销毁预配工具

您还可以定义仅在执行销毁操作时运行的预配工具。这些预配工具将有助于您执行系统清理和数据提取等操作。

对于许多资源而言,建议您尽可能使用内置的清理机制(如初始化脚本),但必要时也可以使用预配工具。

本实验中不提供任何销毁预配工具的示例。如果您需要销毁预配工具,请参阅预配工具文档

恭喜!

在本实验中,您学习了如何使用 Terraform 构建、更改和销毁基础设施。之后,您还使用 Terraform 配置文件创建了资源依赖项,并预配了基本的基础设施。

后续步骤/了解详情

请务必查看以下资源,以获得更多关于 Terraform 的实操练习机会:

Google Cloud 培训和认证

…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。

上次更新手册的时间:2024 年 1 月 26 日

上次测试实验的时间:2023 年 9 月 25 日

版权所有 2024 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您