用途:该技能引导 AI 代理把单体 Terraform 配置系统性重构为可复用、可维护的模块,遵循 HashiCorp 模块设计原则与社区最佳实践。
主要能力:分析现有配置并按逻辑功能分组资源、识别重复模式与依赖、评估复杂度;设计清晰的接口契约(变量与输出)、封装与抽象、版本化与文档、测试框架,以及现有 state 的迁移路径。支持 simple、intermediate(默认)、advanced 三种抽象级别,并可选 local、private、public 目标注册表。
执行步骤:1)分析阶段识别重构候选并评估复杂度;2)模块设计,定义输入变量与输出,含 validation 校验(如用 can(cidrhost(...)) 校验 CIDR);3)代码转换,给出单体配置转为模块结构的示例(含 for_each、locals、merge 标签等);4)状态迁移,Terraform 1.1+ 用 moved 块,或使用 terraform state mv 手动迁移;5)编写模块文档,含输入输出表与用法示例;6)测试。
测试:使用 terraform-test 技能,测试文件为 .tftest.hcl 或 .tftest.json,包含 test、run、assert 块,支持 mock provider(1.7.0+),分 plan 模式单元测试与 apply 模式集成测试,通常放在 tests/ 目录。
输入参数:source_directory(必填,现有配置路径)、module_name(必填)、abstraction_level(可选)、preserve_state(必填)、target_registry(可选)。
重构模式:资源分组(网络、计算、数据)、配置分层(基础模块加环境包装)、组合(小而专注的模块组合)。
常见陷阱:过度抽象(避免 map(map(any)) 这类宽泛类型)、模块间紧耦合(应通过根模块传递依赖)、状态迁移错误(先在非生产环境验证,用 terraform plan -out 后再 apply)。版本控制建议用语义化版本并固定生产版本。
限制与前提:需已有 Terraform 配置、了解资源依赖、可访问当前 state 文件用于迁移规划,并了解模块注册表模式。资料未提供具体收费、价格、平台支持范围等信息。