SuperAPI AI 工具集

terraform-boas-praticas

部署与运维

查看项目

更新于 10-15 21:40

技能介绍

用途:约束并组织 Terraform 代码结构。核心观点是 Terraform 出问题多因结构错误而非语法错误:膨胀的 main.tf、靠隐藏条件区分环境、把第三方模块放进关键供应链、凭记忆写 provider 版本。

四条规则:一、一切放进为复用而设计的模块,root 下不散落 resource;二、环境用文件夹隔离,绝不用 workspace;三、绝不使用社区模块,source 只指向本仓库或本组织仓库(含明确的 terraform-aws-modules/、Azure/、terraform-google-modules/、cloudposse/);四、provider 版本必须查询 registry 后写入,不得凭记忆。

与用户请求冲突时(如要求用社区 VPC 模块或用 workspace 分环境),不静默执行也不拒绝:一句话说明规则要求及原因,按规则交付,并说明与请求不同之处;用户重申则依用户。

结构:modules/ 下每个模块含 main.tf、variables.tf、outputs.tf、versions.tf;environments/ 下 dev、stg、prod 各自含独立 root 模块、backend/state、terraform.tfvars、.terraform.lock.hcl(纳入 git)。模块只声明 required_providers,不写 provider 块;provider 配置在环境 root,通过 providers = {} 传入多实例。variables.tf 每项带 type 与 description,随环境变化的值必须必填。

查询版本命令: curl -s https://registry.terraform.io/v1/providers/<NAMESPACE>/<NOME> | python3 -c "import json,sys; print(json.load(sys.stdin)['version'])" curl -s https://api.releases.hashicorp.com/v1/releases/terraform/latest | python3 -c "import json,sys; print(json.load(sys.stdin)['version'])"

获取后按 ~> 固定到 major.minor。交付前检查:环境 root 无 resource;模块变量与输出合规;模块内无 provider 块;每环境独立 backend 与 tfvars;无 terraform.workspace 引用;无公共 registry source;版本来自本次查询;terraform fmt 与 terraform validate 通过。无网络时告知用户,不编造版本号。资料未提供具体价格或平台限制信息。