检查点
Create a VM instance in dynamic zone with Terraform
/ 100
Terraform 基础知识
GSP156
概览
Terraform 可让您以安全、可预测的方式创建、更改和改进基础架构。它是一个开源工具,可将 API 编码为声明式配置文件。您可以将这些文件分享给同事,将它们作为代码进行处理、修改、审核和版本控制。
目标
在本实验中,您将学习如何执行以下任务:
- 在 Google Cloud 中开始使用 Terraform。
- 通过安装二进制程序安装 Terraform。
- 使用 Terraform 创建一个虚拟机实例基础架构。
设置和要求
点击“开始实验”按钮前的注意事项
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。我们会为您提供新的临时凭据,让您可以在实验规定的时间内用来登录和访问 Google Cloud。
为完成此实验,您需要:
- 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
- 完成实验的时间 - 请注意,实验开始后无法暂停。
如何开始实验并登录 Google Cloud 控制台
-
点击开始实验按钮。如果该实验需要付费,系统会打开一个弹出式窗口供您选择付款方式。左侧是实验详细信息面板,其中包含以下各项:
- 打开 Google Cloud 控制台按钮
- 剩余时间
- 进行该实验时必须使用的临时凭据
- 帮助您逐步完成本实验所需的其他信息(如果需要)
-
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示登录页面。
提示:请将这些标签页安排在不同的窗口中,并将它们并排显示。
注意:如果您看见选择账号对话框,请点击使用其他账号。 -
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
{{{user_0.username | "<用户名>"}}} 您也可以在实验详细信息面板中找到用户名。
-
点击下一步。
-
复制下面的密码,然后将其粘贴到欢迎对话框中。
{{{user_0.password | "<密码>"}}} 您也可以在实验详细信息面板中找到密码。
-
点击下一步。
重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。 注意:在本次实验中使用您自己的 Google Cloud 账号可能会产生额外费用。 -
继续在后续页面中点击以完成相应操作:
- 接受条款及条件。
- 由于该账号为临时账号,请勿添加账号恢复选项或双重验证。
- 请勿注册免费试用。
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
激活 Cloud Shell
Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。
- 点击 Google Cloud 控制台顶部的激活 Cloud Shell
。
如果您连接成功,即表示您已通过身份验证,且当前项目会被设为您的 PROJECT_ID 环境变量所指的项目。输出内容中有一行说明了此会话的 PROJECT_ID:
gcloud
是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。
- (可选)您可以通过此命令列出活跃账号名称:
-
点击授权。
-
现在,输出的内容应如下所示:
输出:
- (可选)您可以通过此命令列出项目 ID:
输出:
输出示例:
gcloud
, in Google Cloud, refer to the gcloud CLI overview guide.
Terraform 是什么?
Terraform 是一种工具,用于安全高效地构建、更改基础架构及对基础架构进行版本控制。Terraform 可管理现有主流服务提供程序和自定义内部解决方案。
配置文件会向 Terraform 说明运行单个应用或整个数据中心所需的组件。Terraform 会生成执行计划,以说明它会执行哪些操作来实现期望的状态。接着,Terraform 会实施执行计划,以构建所述基础架构。当配置发生变化时,Terraform 能够确定具体改动并制定可用的渐进式执行计划。
Terraform 可以管理的基础架构包含计算实例、存储空间和网络等底层组件,以及 DNS 条目和 SaaS 功能等高层组件。
主要特征
基础架构即代码
基础架构是以高级配置语法描述的。这样您就可以像对待其他代码一样,对数据中心的蓝图进行版本控制和处理。此外,基础架构可以共享和重复使用。
执行计划
Terraform 会有规划步骤,用于生成执行计划。执行计划会表明在您执行 apply
命令时 Terraform 会执行的操作。这可以避免 Terraform 操作基础架构时出现意外情况。
资源图表
Terraform 会构建包含您所有资源的图表,并行创建及修改不具依赖性的资源。因此,Terraform 会尽可能高效地构建基础架构,运营人员也能深入了解自己基础架构中的依赖项。
自动处理变更
只需极少的人工操作即可将复杂的变更集应用到您的基础架构。借助前文提到的执行计划和资源图表,您可以确切知道 Terraform 的变更内容和变更顺序,这有助于您避免许多可能的人为错误。
任务 1. 验证 Terraform 安装
Terraform 已预安装在 Cloud Shell 中。
- 打开新的 Cloud Shell 标签页,验证 Terraform 是否可用:
这会生成起帮助作用的输出内容,类似于以下内容:
任务 2. 构建基础架构
安装 Terraform 后,您可以立即开始创建基础架构。
配置
Terraform 中用于描述基础架构的文件集简称为 Terraform configuration
。在本部分中,您将编写您的第一项配置,以启动一个虚拟机实例。您可以在 Terraform 语言文档中了解配置文件的格式。我们建议使用 JSON 来创建配置文件。
- 在 Cloud Shell 中,使用以下命令创建一个名为
instance.tf
的空白配置文件:
-
点击 Cloud Shell 工具栏上的打开编辑器。
如需在 Cloud Shell 与代码编辑器之间切换,请根据需要点击打开编辑器或打开终端,或点击在新窗口中打开,在单独的标签页中打开编辑器。 -
点击
instance.tf
文件,在其中添加以下内容,并将<PROJECT_ID>
替换为您的 Google Cloud 项目 ID:
这是 Terraform 可以应用的完整配置。总体结构应该直观简单。
instance.tf
文件中的“resource”代码块定义了基础架构中存在的资源。资源可能是虚拟机实例等物理组件。
resource 代码块的开头为两个字符串:资源类型和资源名称。本实验中的资源类型为 google_compute_instance
,名称为 terraform
。类型的前缀对应提供程序:google_compute_instance
会自动向 Terraform 说明该资源由 Google
提供程序管理。
resource 代码块中是资源所需的配置。
- 在 Cloud Shell 中,验证您的新文件已成功添加,且目录中没有其他
*.tf
文件,因为 Terraform 会加载所有这类文件:
初始化
对于新配置(或从版本控制系统签出某项现有配置后)需要运行的第一个命令是 terraform init
,它将对各项本地设置和数据进行初始化,以供后续的命令使用。
Terraform 使用基于插件的架构来支持众多可用的基础架构和服务提供程序。每个“提供程序”均为各自封装的二进制程序,与 Terraform 本身分开分发。terraform init
命令会自动下载并安装提供程序的二进制程序,以供提供程序在配置中使用,在本示例中只有 Google 提供程序。
- 下载并安装提供程序的二进制程序:
Google 提供程序插件会被下载并安装到当前工作目录中的子目录,与各类其他簿记文件放在一起。您会看到“Initializing provider plugins”(正在初始化提供程序插件)消息。Terraform 会知道您正在运行 Google 项目,并且该项目正在获取 Google 资源。
输出内容会指明正在安装的插件版本,并建议您在以后的配置文件中指定此版本,以确保 terraform init
会安装兼容的版本。
- 创建执行计划:
Terraform 会执行刷新操作(除非明确停用),然后确定需要执行哪些操作才能实现配置文件中指定的期望状态。这个命令可以方便地检查一组更改的执行计划是否符合您的预期,而无需对实际资源或状态进行任何更改。例如,您可以先运行此命令,然后再向版本控制系统提交更改,以确保它会按预期执行。
-out
将生成的计划保存到文件中,以便日后通过 terraform apply
执行。
应用更改
- 在您创建的
instance.tf
文件所在的目录中,运行以下命令:
输出结果会显示执行计划,其中描述了 Terraform 会采取哪些操作来更改真实基础架构,使其符合配置。输出格式类似于 Git 等工具生成的 diff 格式。
google_compute_instance.terraform
旁有 +
,表示 Terraform 会创建此资源。在那之后是将设置的属性。如果显示的值为 <computed>
,则表示在创建资源前将不知道相关值。
输出示例:
在成功创建计划后,Terraform 将会暂停,等到计划获得批准后才会继续运行。在生产环境中,如果执行计划的任何内容似乎有误或有危险,此时可放心取消,您的基础架构尚未发生任何更改。
- 在本示例中,计划看起来可以接受,因此可在出现确认提示时输入
yes
继续操作。
执行计划可能需要几分钟的时间,因为 Terraform 需要等待虚拟机实例可用。
Terraform 现已完成所有操作!
验证您已完成的任务
点击检查我的进度可验证您已完成的任务。如果您成功完成了任务,系统会给出评分。
- 在 Google Cloud 控制台的导航菜单中,点击 Compute Engine > 虚拟机实例。虚拟机实例页面会随之打开,并且您会在虚拟机实例列表中看到您刚创建的虚拟机实例。
Terraform 已将一些数据写入 terraform.tfstate
文件。此状态文件极其重要:它会跟踪已创建资源的 ID,以便 Terraform 知道自己正在管理什么。
- 在 Cloud Shell 中检查当前状态:
输出示例:
您可以发现,在创建此资源的过程中,您也收集了大量相关信息。您可以引用这些值来配置其他资源或输出。
恭喜!您已经使用 Terraform 构建了您的第一个基础架构。您已经了解配置语法、基本执行计划的示例和状态文件。
任务 3. 检验您的掌握情况
下列选择题应该可以强化您对本实验所涉概念的理解。请尽您所能回答问题。
恭喜
祝贺您完成本实验!您学习了如何使用 Terraform 在 Google Cloud 中创建和管理基础架构。
完成挑战任务
本自学实验是以下挑战任务的组成部分:使用 Terraform 管理云基础架构和使用 Terraform 在 Google Cloud 上实现基础架构自动化。一项挑战任务就是一系列相关的实验,学习时按部就班地完成这些实验即可。完成挑战任务即可赢得一枚徽章,以表彰您取得的成就。您可以公开展示徽章,还可以在您的在线简历或社交媒体账号中加入指向徽章的链接。欢迎注册参加任何包含此实验的挑战任务,完成后就能立即获得相应的积分。请参阅 Google Cloud Skills Boost 目录,查看提供的所有挑战任务。
参与下一项实验
欢迎您继续参与挑战任务,下一项实验是使用 Terraform 实现基础架构即代码。您还可以查看以下 Google Cloud Skills Boost 实验:
后续步骤/了解详情
- Google Cloud Marketplace 上的 Hashicorp!
- Terraform 社区
- Terraform Google 示例
Google Cloud 培训和认证
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2024 年 1 月 26 日
上次测试实验的时间:2023 年 8 月 10 日
版权所有 2024 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。