用途:创建或扩展可复用的 Terraform 模块,遵循结构、接口与组合的标准约定。适用场景包括新建可复用基础设施模块、为现有模块增加资源、把内联资源重构为模块、将临时模块标准化。
主要能力:生成完整模块目录,包含 main.tf、variables.tf、outputs.tf、versions.tf、按资源类型拆分的 {resource}.tf、sg.tf 与 README.md;定义带 description、type 和 validation 的输入变量;用 object() 类型组织分组配置,用 optional() 提供合理默认值;为每个资源类型单独建文件;输出消费者需要的值,敏感输出标记 sensitive = true;在 versions.tf 中声明 Terraform 与 provider 版本约束;提供消费者调用示例。
使用方式:先确认模块名称、管理的云资源与使用方,再一次性生成完整模块。发布到注册表时,按命名约定在 GitHub 创建仓库,推送含 versions.tf、variables.tf、outputs.tf 的代码,打标签发布:git tag v0.1.0 && git push --tags,注册表从 GitHub 标签自动发布。消费者通过 source = "c0x12c/{module-name}/aws" 与 version 约束调用。
规则与限制:模块内不写 provider 块,provider 由调用方提供;不硬编码值,全部通过变量传入;每个输入需有描述、类型及必要校验;主资源使用 this 作为资源名;安全组用 name_prefix 而非 name;标签透传并合并,不覆盖;版本约束放在 versions.tf;适用时添加生命周期规则以实现零停机更新。资料未提供具体收费、价格或平台支持范围等信息。