Terraform Modules 聚焦于创建和使用可复用的 Terraform 模块,以便组织和共享基础设施代码。
用途 该技能适用于将重复的基础设施代码抽象为模块,从而在不同环境或项目间复用。资料给出的典型模块结构为:modules/vpc/ 目录下包含 main.tf、variables.tf、outputs.tf 和 README.md。
主要能力 创建模块:在 main.tf 中定义资源,例如 aws_vpc 与 aws_subnet,并通过 var 引用变量、通过 merge 合并标签。在 variables.tf 中声明变量,如 name、cidr_block、public_subnets、tags,并可为变量设置类型与默认值。在 outputs.tf 中定义输出,如 vpc_id 和 public_subnet_ids,供调用方引用。
使用模块:支持多种来源方式。本地模块使用 source = "./modules/vpc";Registry 模块使用 source = "terraform-aws-modules/vpc/aws" 并配合 version;Git 模块使用 source = "git::https://github.com/org/terraform-modules.git//vpc?ref=v1.0.0"。调用时传入变量,并可通过 module.vpc.public_subnet_ids[0] 等形式访问模块输出。
模块组合:可将 network、compute、database 等模块串联,把上游模块的输出作为下游模块的输入,例如将 module.network.vpc_id 传给 compute 和 database 模块。
批量实例化:支持 for_each 与 count。for_each 可基于 map(object) 类型的变量为每个应用创建模块实例,使用 each.key 与 each.value;count 可基于数量变量创建多个 worker 模块,使用 count.index 生成名称与索引。
最佳实践:资料列出版本固定(如 version = "~> 5.0" 允许补丁更新)、输入校验(使用 validation 块与 condition、error_message 限制取值范围)、输出所有有用信息(vpc_id、vpc_cidr、subnet_ids)、使用一致命名(通过 locals 组合 name_prefix 与环境)等做法。
发布模块:模块注册表命名格式为 terraform-<PROVIDER>-<NAME>,例如 terraform-aws-vpc、terraform-google-network;版本遵循语义化版本,v1.0.0 为主版本、v1.1.0 为次版本、v1.1.1 为补丁版本。
适用场景 适合需要将 VPC、网络、计算、数据库等基础设施代码模块化、在多个环境或团队间共享、并通过版本控制管理模块演进的场景。
限制 资料未提供该技能的具体安装方式、运行环境要求、收费信息或平台支持范围,这些内容暂未提供。