arrow_back

在 Google Cloud 上使用 Terraform 构建基础设施:实验室挑战赛

加入 登录
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

在 Google Cloud 上使用 Terraform 构建基础设施:实验室挑战赛

Lab 1 小时 30 分钟 universal_currency_alt 5 个积分 show_chart 中级
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP345

Google Cloud 自定进度实验

概览

在实验室挑战赛中,我们会为您提供一个场景和一系列任务。您将使用从挑战任务的各个实验中学到的技能自行确定如何完成这些任务,而不是按照分步说明进行操作。自动评分系统(显示在本页面中)会提供有关您是否正确完成任务的反馈。

在您参加实验室挑战赛期间,我们不会再教授新的 Google Cloud 概念知识。您需要拓展所学的技能,例如通过更改默认值和查看并研究错误消息来更正您自己所犯的错误。

要想获得满分,您必须在该时间段内成功完成所有任务!

本实验的适用对象为已报名参加在 Google Cloud 上使用 Terraform 构建基础设施课程的学员。准备好接受挑战了吗?

测试的主题:

  • 将现有基础设施导入您的 Terraform 配置。
  • 构建和引用您自己的 Terraform 模块。
  • 为您的配置添加远程后端。
  • 使用和实现 Terraform Registry 中的模块。
  • 重新预配、销毁和更新基础设施。
  • 测试您所创建的资源之间的连接情况。

设置和要求

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

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

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

为完成此实验,您需要:

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

挑战场景

您是一家新成立的初创公司的实习云工程师。在您接手的第一个项目中,新主管要求您快速、高效地构建基础设施,并建立用于跟踪该基础设施的机制,以方便将来引用和更改。主管要求您使用 Terraform 完成此项目。

在该项目中,您将使用 Terraform 在该初创公司首选提供商 Google Cloud 的平台上构建、部署和跟踪基础设施。您还需要将一些管理不当的实例导入您的配置中,并进行修复。

在此实验中,您将使用 Terraform 导入和创建多个虚拟机实例、一个包含两个子网的 VPC 网络,以及允许在这两个实例之间进行连接的 VPC 防火墙规则。您还将创建一个 Cloud Storage 存储桶,用于托管远程后端。

注意:在每个部分结束时,请对所做更改应用 planapply 命令,以便系统可以顺利验证您所做的工作。由于我们将在本实验室中更新许多 terraform 文件,因此请确保使用正确的文件路径并保持正确的缩进。

任务 1. 创建配置文件

  1. 在 Cloud Shell 中,创建 Terraform 配置文件和如下所示的目录结构:
main.tf variables.tf modules/ └── instances ├── instances.tf ├── outputs.tf └── variables.tf └── storage ├── storage.tf ├── outputs.tf └── variables.tf
  1. 在根目录和模块中的 variables.tf 文件中填充内容。在每个文件中添加三个变量:regionzoneproject_id。这些变量的默认值应分别为 和您的 Google Cloud 项目 ID。
注意:您应将这些变量用于资源配置中的所有适当位置。
  1. 将 Terraform 块和 Google Provider 添加到 main.tf 文件中。确认 zone 参数已与 projectregion 参数一起添加到“Google Provider”块。

  2. 初始化 Terraform。

任务 2. 导入基础设施

  1. 在 Google Cloud 控制台的导航菜单中,点击 Compute Engine > 虚拟机实例。系统已为您创建了两个实例,名称分别为 tf-instance-1tf-instance-2
注意:点击其中一个实例,即可查看其实例 ID启动磁盘映像以及机器类型。这些信息对于正确编写配置并将其导入 Terraform 必不可少。
  1. 将现有实例导入 instances 模块。为此,您需要执行以下操作:
  • 首先,将模块引用添加到 main.tf 文件,然后重新初始化 Terraform。
  • 接下来,在 instances.tf 文件中编写资源配置,以便与现有实例相匹配。
    • 将实例分别命名为 tf-instance-1tf-instance-2
    • 鉴于本实验的目的,应尽可能精简资源配置。为此,您只需在配置中包含以下几个额外的参数:machine_typeboot_disknetwork_interfacemetadata_startup_script 以及 allow_stopping_for_update。对于最后两个参数,请使用以下配置,这样可确保无需重新创建配置:
    metadata_startup_script = <<-EOT #!/bin/bash EOT allow_stopping_for_update = true
  • 编写好模块中的资源配置后,使用 terraform import 命令将这些配置导入 instances 模块。
  1. 应用所做的更改。请注意,由于您没有添加完整配置包含的所有参数,因此 apply 命令仅会更新现有的实例。虽然就实验目的而言,这没有任何问题,但在生产环境中,请务必正确添加所有参数,然后再执行导入操作。

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

任务 3. 配置远程后端

  1. storage 模块中创建一个 Cloud Storage 存储桶资源。将该存储桶的名称设为 。对于其他参数,使用以下设置即可:

    • location = "US"
    • force_destroy = true
    • uniform_bucket_level_access = true
注意:您可以选择在 outputs.tf 文件中添加输出值。
  1. 将模块引用添加到 main.tf 文件。初始化模块,并使用 apply 命令应用更改,以使用 Terraform 创建存储桶。

  2. main.tf 文件中将此存储桶配置为远程后端。务必使用前缀 terraform/state,以确保可以成功对其评分。

  3. 如果您已正确编写配置,执行 init 命令后,Terraform 会询问您是否希望将现有状态数据复制到新后端。在提示窗口中输入 yes

点击“检查我的进度”以验证是否完成了以下目标:配置远程后端。

任务 4. 修改和更新基础设施

  1. 浏览到 instances 模块,将 tf-instance-1 资源修改为使用 e2-standard-2 机器类型。

  2. tf-instance-2 资源修改为使用 e2-standard-2 机器类型。

  3. 添加第三个实例资源,并将其命名为 。为该资源使用 e2-standard-2 机器类型。确保将全部三个实例的机器类型都改为 e2-standard-2

  4. 初始化 Terraform,并使用 apply 命令应用所做的更改。

注意:您也可以选择在模块内的 outputs.tf 文件中添加这些资源的输出值。

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

任务 5. 销毁资源

  1. 从配置文件中移除相关资源,将第三个实例 销毁。移除后,初始化 Terraform 并使用 apply 命令应用更改。

点击“检查我的进度”以验证是否完成了以下目标:销毁资源。

任务 6. 使用 Registry 中的模块

  1. 在 Terraform Registry 中,前往网络模块

  2. 将此模块添加到 main.tf 文件中。使用以下配置:

  • 使用版本 6.0.0(其他版本可能会产生兼容性问题)。
  • 将 VPC 命名为 ,并使用全局路由模式。
  • 区域中指定 2 个子网,分别命名为 subnet-01subnet-02。只需为子网指定 NameIPRegion 参数。
  • 分别为 subnet-01subnet-02 使用 IP 10.10.10.0/2410.10.20.0/24
  • 由于您需要与此 VPC 关联的任何次要范围或路由,因此可以在配置中省略这些设置。
  1. 编写好模块配置后,初始化 Terraform 并运行 apply 命令,以创建网络。

  2. 然后,浏览到 instances.tf 文件并更新配置资源,将 tf-instance-1 连接到 subnet-01,将 tf-instance-2 连接到 subnet-02

注意:在实例配置中,您需要将 network 参数更新为 ,然后用正确的子网为每个实例添加 subnetwork 参数。

点击“检查我的进度”以验证是否完成了以下目标:使用 Registry 中的模块。

任务 7. 配置防火墙

  • main.tf 文件中创建一个防火墙规则资源,并将其命名为 tf-firewall
    • 该防火墙规则应让 网络允许所有 IP 范围 (0.0.0.0/0) 的入站连接通过 TCP 端口 80
    • 务必用正确的 IP 范围 (0.0.0.0/0) 添加 source_ranges 参数。
    • 初始化 Terraform,并使用 apply 命令应用所做的更改。
注意:如需检索所需的 network 参数,您可以检查状态并找到所创建资源 google_compute_networkIDself_link,其格式为 projects/PROJECT_ID/global/networks/

点击“检查我的进度”以验证是否完成了以下目标:配置防火墙。

连接测试(可选)

创建防火墙规则以允许通过 VPC 进行内部连接后,您可以选择运行网络连接测试。

  1. 确保两个虚拟机都处于运行状态。

  2. 依次点击网络智能 > Connectivity Tests。对这两个虚拟机运行连接测试,确认可以连接到它们。现在,您已验证实例之间的连接。

注意:确保已成功启用 Network Management API,如果未启用,请点击启用

您的配置设置应如下所示:

配置设置页面

恭喜!

如果您在分配的时间内成功导入、创建、修改和配置架构,则表示您具备出色的 Terraform 使用技能。在本实验中,您先将两个预配置的虚拟机导入到了 Terraform,并创建了用于配置后端的 Cloud Storage 存储桶。然后,您添加了另一个实例,并练习修改和更新模块中的资源配置。最后,您使用 Terraform Registry 中的模块创建了包含两个子网的 VPC,将实例连接到该 VPC,并创建了防火墙规则以允许在这些实例之间进行连接。

在 Google Cloud 上使用 Terraform 构建基础设施

赢得您的下一个技能徽章

本自学实验是在 Google Cloud 上使用 Terraform 构建基础搜索技能徽章课程的组成部分。完成此技能徽章课程可赢得上面的徽章,以表彰您取得的成就。您可以在简历和社交平台中分享自己的徽章,并使用 #GoogleCloudBadge 让大家知道您取得的这一成就。

后续步骤

现在,您已经证明自己在 Terraform 方面的能力,不妨报名参加 HashiCorp 基础设施自动化认证考试。Terraform Associate 认证考试面向专门从事运维、IT 或开发行业且掌握了开源 HashiCorp Terraform 相关基本概念和技能的云工程师。如果考生具备在生产环境中使用 Terraform 的专业经验,应该很容易就能通过考试。不过,如果能在个人演示环境中完成考试目标,或许也足以让考生通过考试。因此,如果您想进一步提升自己的技能水平,并证明您在基础设施自动化方面的能力,建议您查看学习指南考试复习资料,准备充分后再报名参加考试。祝您好运!

Google Cloud 培训和认证

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

上次更新手册的时间:2024 年 3 月 22 日

上次测试实验的时间:2024 年 3 月 22 日

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