想学Terraform的人常卡在同一个地方:教程第一步就让你登录云账号,而云账号恰恰是新手最不该拿Terraform去指的地方。从"读完文档"到"安全地跑过五十次apply"之间有一段距离,信心就是从这段距离里长出来的,而大多数人直到第一张工单上写着terraform plan,都没跨过去。

这段距离可以在浏览器里跨完。下面是一条练习路径,建立在一个模拟的Terraform项目上,另有一个模拟器负责Terraform跑通之后的环节:让已部署的状态长期保持诚实。披露:我参与构建了这两个工具;两者都免费、基于浏览器、不用注册,也不会产生AWS账单。

打开网易新闻 查看精彩图片

先练那个循环

Terraform的日常就是一个循环:改代码、预览差异、应用、验证。Terraform终端模拟器就是拿一个假项目、一套模拟基础设施来反复练这个循环——你会遇到一个id形如vpc-04e9f2a1的VPC,它不花任何人一分钱。

当你在某一步做出修改后,plan的差异长这样,这是需要学会读的形状:

  • 表示修改
  • 表示创建
  • 表示销毁
  • 表示替换,这个符号应该让你慢下来:它意味着Terraform会先销毁再重建资源,才能到达目标状态

terraform fmt补上最后一块:它统一格式,让差异始终围绕实质内容。

为什么先在沙箱里练

先在沙箱里把这些命令练熟,原因不是命令本身有多难,而是每一条命令都有一个习惯成型的瞬间:读plan而不是信plan,检查state而不是假设state,有意识地销毁而不是一路点过去。沙箱让这些习惯在任何东西真正押上去之前先长出来。

Terraform负责把基础设施创建出来。接下来的现代问题是:谁让运行中的系统持续和仓库保持一致?这属于GitOps的地盘。GitOps工作流模拟器把你丢进三个决策场景,每一个都是真实的day-2情境。

它和Terraform的搭配是有意为之:plan/apply是按需向声明状态收敛,GitOps是把同一种收敛变成持续的——由一个agent拉取期望状态并自动调和。漂移是两者共同的敌人。

毕业路径

按影响范围从小到大排列,路径是这样的:先在模拟器里把循环练成肌肉记忆,再进入GitOps的决策场景,最后才碰真实环境。习惯原封不动地迁移过去,变的只是赌注的大小。

这两个模拟器属于50多个免费DevOps游戏和模拟器的一部分。等你准备好上手真东西时,HashiCorp的Docker入门教程是自然的下一步:真实的Terraform、本地资源,依然没有云账单。