Terraform 实战
리소스를 몇 개 만들 줄 아는 것과 남이 쓰는 인프라 코드를 운영하는 것은 다른 일입니다. 이 코스는 모듈로 경계를 긋고, count 와 for_each 로 여러 개를 다루고, 이미 만들어진 자원을 상태에 편입시키고, 코드 밖에서 생긴 변경을 감지해 되돌리는 네 가지를 다룹니다. 모든 실습은 오프라인 OpenTofu 로 진행하며, 상태 파일을 직접 열어 무엇이 어떻게 바뀌는지 눈으로 확인합니다.
고급 · 레슨 30 · 实验 10
커리큘럼
模块化
- 模块 — 边界比复用更靠前 reading
- 做一个子模块并多次调用 lab
- 测验:模块化 quiz
count 与 for_each
状态操作与 import
- 状态手术 — 不碰实物,只修记忆 reading
- 把状态挪走、删掉、再导进来 lab
- 测验:状态操作与 import quiz
生命周期与漂移
- 生命周期与漂移 — 往哪一边对齐 reading
- 用生命周期管住,并把漂移撤回来 lab
- 测验:生命周期与漂移 quiz
工作区与目录拆分
- 工作区不是环境隔离工具 reading
- 没注意选中的是 prod,就执行了 destroy lab
- 测验:工作区与目录拆分 quiz
Provider 别名与版本约束
- 别名与版本约束:用哪份配置来创建 reading
- 加了第二个区域后,模块拿不到 provider 了 lab
- 测验:Provider 别名与版本约束 quiz
动态块与复杂类型
- 用值折叠的重复,用块展开的重复 reading
- 三个服务乘三个环境,手写展开成了二十个块 lab
- 测验:动态块与复杂类型 quiz
计划性能——先测量再选择
- 应对慢计划的四个旋钮及其代价 reading
- 计划变慢后,大家开始跳过计划 lab
- 测验:计划性能及其代价 quiz
不销毁地交出所有权
- 销毁和放手是两回事 reading
- 从代码里删掉,差点毁了正在运行的资源 lab
- 测验:removed、moved、-replace 与 taint quiz
为模块添加测试
- 基础设施代码也要有测试 reading
- 每次改模块都手动检查,直到漏掉了一个 lab
- 测验:tofu test 与 .tftest.hcl quiz