我刚通过了 Terraform Associate (004) — 我希望当时知道的一切
考试后一天的真诚笔记:考了哪些问题,时间都去哪儿了,我突击学习了哪些结果不重要的内容,以及我低估了哪些内容。
我昨天参加了 Terraform Associate 004 考试,并一次性通过了。这不是一篇“如何学习”的帖子——那样的帖子已经很多了,包括我们自己的那篇。这是我希望在前一晚读到的帖子,因为所有记忆都还新鲜。
背景介绍:我使用 AWS 上的 Terraform 大约三年了,主要负责应用基础设施——VPC、ECS、RDS、ALB,等等——有时针对 HCP Terraform,但更多时候是针对 S3 + DynamoDB。我很久以前半心半意地考过 003,觉得 004 应该只是快速复习一下。大部分确实如此,但也有一些值得注意的地方。
我突击学习了但不需要的内容
考前两天,我深入研究了一些主题,结果发现它们在考试中几乎没有出现:
- Sentinel 和 OPA 语法。 我曾坚信我需要一眼识别出 Sentinel 规则。实际上,只有一道问题涉及策略即代码 (policy-as-code),而且是概念性的——“哪个功能用于强制执行组织策略?”——只需知道“Sentinel”这个词存在就能回答。
- Provider 插件协议版本。 毫无关联。
- 记忆所有
terraform state子命令。 考试会在场景中问到state list、state mv和state rm。如果你用通俗易懂的方式理解每个命令的作用,就不需要死记硬背它们的标志。 - HCP Terraform 定价层级。 不在考试范围内。考试对 HCP 的考察是概念性的。
如果能回到备考时间,我会把更多精力放在 for_each vs. count 的练习上。
让我感到惊讶的内容
几件我没预料到的事情:
新的 004 内容考得很精确。 我原以为会是那种模糊的“moved 块有什么用?”的问题;相反,我遇到了具体的场景,比如“你重命名了一个资源,并希望在不中断的情况下保留其状态——最小的有效更改是什么?”答案选项既包括 state mv 调用,也包括 moved 块。你必须选择适合工作流的惯用方法,而不仅仅是识别两者都存在。
关于 import 块与 terraform import 的多道问题。 我曾懒散地认为它们是等价的。考试提醒我它们并非如此——块是声明性的,并与 plan 集成;CLI 命令是命令式的,会立即产生状态副作用。有两道题专门测试我是否知道哪个更适合可审查的 CI/CD 工作流。
HCL 问题比练习题建议的更密集。 许多练习题只给你一个整洁的四行代码片段。而真实考试至少有一次给我一个十五行的代码块,其中 dynamic 嵌套在一个 resource 中,而 resource 自身的 for_each 又驱动着外部计数,并要求我预测创建的资源数量。我不得不读了两遍。在每道题 60 秒的时间限制下,不要低估仔细阅读 HCL 的认知负荷。
两道关于 terraform test 的问题。 我差点跳过这部分,因为练习题几乎没有提及。这些问题都是概念性的——知道 .tftest.hcl 存在,run 块包含断言,以及你可以为单元测试模拟 providers。快速浏览一下文档页面就足够了。
时间管理差点让我栽跟头
60 分钟内完成 57 道题,平均每题略高于一分钟。我在技术内容考试中答题较慢,因为我仔细阅读代码。我在第 52 分钟完成了第一遍,并标记了五道题进行复查。在其中两道被标记的题上,我之前过度解读了措辞;重新阅读后我更改了两个答案——其中一个最终正确,另一个我猜我改成了错误答案(事后无法得知)。
有效的方法是:任何我发现自己重复阅读题干超过两次的问题,我就选择我的最佳猜测,标记它,然后继续。不要在一道题上停留四分钟。如果你一分钟后都不知道,那么再过三分钟你可能也不会知道。
耗时的问题
一个特别耗时的类别是:“给出这个状态文件输出,terraform plan 会显示什么?”这些问题很慢,因为你需要在大脑中进行状态差异的推演。其中两道题我放弃了尝试模拟,直接查看答案选项,然后选择了最可能出错的地方(一个案例是缺少标签,另一个是属性发生变化)。结果两者都正确。在时间紧迫时,模式识别优于深入模拟。
如果我重新备考,我实际会推荐什么
基于我现在所知,这是重新平衡的备考时间分配:
- 40% 练习题。 实际计时做题,真正理解错误答案。
- 25% 缓慢阅读 HCL 示例。 也要写一些,但考试当天你需要的是阅读流畅度,而不是写作流畅度。
- 15% 状态语义。 状态文件中有什么,为什么锁定很重要,
moved/removed/import块各自解决了什么问题。 - 10% 新的 004 特性(单独学习)——变量验证、前置条件、临时值、只写参数、HCP 项目、
terraform test。 - 10% 其他所有内容——IaC 概念、Terraform 的用途、HCP 概述。
这是一种有意为之的倾斜预算。“其他所有内容”这部分,如果你使用 Terraform 超过几个月,大部分都是你已经知道的。
我没想到会很重要但确实重要的内容
- 知道
terraform fmt存在及其作用。 出现了两次。其中一个错误选项是fmt会修改状态。 - Provider 版本约束语法。
~> 1.2和~> 1.2.0之间的区别(第二个在补丁级别上更悲观——更具限制性)。我答对了这道题,但我之前确信它不会被考到。 terraform init -upgrade与terraform init -reconfigure的区别。 我被问到在更改后端块后应该使用哪个命令。答案是-reconfigure。- 带有
-json的terraform output。 一个脚本场景问哪个命令生成机器可读的输出值。如果你用过它,这很简单;如果你没用过,则很容易忽略。
考试之后
PSI 在考试结束时会显示一个通过/未通过的屏幕(我看到了绿色的勾,松了口气)。完整的按领域分数细分会在几天后通过电子邮件发送。一旦你接受,徽章就会出现在你的 Credly 账户中。HashiCorp 认证有效期为两年,所以请设置日历提醒。
我低估了厂商考试的一点是,60 分钟的高度集中注意力是多么耗费精力。考试后不要安排会议。我回到家,盯着墙看了一个小时。
如果你的考试日期临近,从 CertLabPro 004 题库中进行一次“冷启动”练习。不要追求练习中的高分——要着重发现你的薄弱类别,趁还有时间加以弥补。