SuperAPI AI 工具集

alibabacloud-terraform-code-generation

部署与运维

查看项目

更新于 10-16 08:54

技能介绍

用途

该技能面向需要为阿里云(Alicloud)基础设施编写 Terraform HCL 的场景,支持新建项目或扩展现有项目。它把用户的自然语言基础设施需求转换为针对当前 aliyun/alicloud provider 的、经过校验的 Terraform 代码。资源 schema 与校验通过 MCP 的 IaCService 解析;Terraform provider 文档与本地参考文件用于确定 HCL 参数形态、示例、弃用项以及产品特定的护栏。

主要能力

  • 解析需求:提取 region(默认 cn-hangzhou)、资源列表(类型、数量、属性)以及多可用区、加密、备份、高可用、IOPS 等非功能性要求。需求含糊时最多提一个澄清问题。
  • 架构草图:在写 HCL 前先绘制依赖表,每行一个资源,列出依赖关系与可用区/放置位置,并补全隐含基础设施(VPC → VSwitch → SecurityGroup → 工作负载)。
  • 写前门禁(强制):对每个不同的 alicloud_* 类型执行元数据查询、目录查询与模式查询,并输出逐资源的“背诵”简报(必填参数、关键可选/嵌套参数、非显而易见的模式属性、元数据约束与证据)。
  • 生成 HCL:仅使用背诵简报中确立的参数,不凭记忆猜测;使用宿主客户端允许的最快批量写入方式。
  • 数据源强制:zone_id、image_id、instance_type 必须通过 data 块解析,禁止硬编码 ID 或变量默认值。
  • 生成 variables.tf(每个变量必须有 type 与 description)与 outputs.tf(有用的非敏感资源 ID、端点、名称)。
  • Provider 块内容契约:必须包含 terraform { required_providers {} } 与 provider "alicloud" {} 两个块,provider 版本使用悲观小版本约束(如 ~> 1.280),region 必须引用 var.region,且必须包含 configuration_source。
  • 生成后运行 scripts/static_checks.sh provider <target-dir> 进行校验。

使用方式

  • 凭据:绝不读取、打印、询问或写入 AK/SK 值。provider 自行从环境、共享配置、RAM 角色、OIDC/RRSA、sidecar 或静态 HCL 读取凭据。不推荐已弃用的 ALICLOUD_* 或 ALIBABACLOUD_* 环境变量名;当前名称为 ALIBABA_CLOUD_ACCESS_KEY_ID、_ACCESS_KEY_SECRET 和 _SECURITY_TOKEN。
  • 诚实报告:未实际执行并返回对应状态时,绝不报告 fmt: ok / validate: ok / plan: ok;跳过时标注 SKIPPED 或 FAILED 并说明原因。
  • 校验与执行边界:绝不运行 terraform apply;仅在用户要求时运行 terraform plan。校验优先使用 IaCService MCP,否则在本地存在二进制时使用 terraform fmt/init/validate。
  • 环境建议:优先使用 alibabacloud-core MCP 服务器暴露的 CallCLI 兼容工具进行 IaCService API 调用;IaCService 端点统一使用 --endpoint iac.cn-zhangjiakou.aliyuncs.com,不根据 region 推导端点。本地 Terraform 为可选回退。
  • 目标目录:从用户请求中提取 <target-dir>,未指定则用当前工作目录;写文件前必须 mkdir -p <target-dir>,所有写入路径加 <target-dir>/ 前缀,完成后用 ls -R 验证结构。
  • 风格基线:2 空格缩进,块内 = 对齐,snake_case 语义化资源标签(如 alicloud_vswitch.app_a),支持标签的资源应带非空 tags 块。

适用场景

  • 需要为阿里云编写 Terraform HCL 的新项目或现有项目扩展。
  • 涉及 VPC、ECS、ApsaraDB RDS 等资源的基础设施即代码生成。
  • 需要遵循产品特定用法模式(如 RDS 跨可用区高可用、VPC 对等连接、OSS 生命周期)的场景。

限制

  • 不运行 terraform apply。
  • 不处理凭据,不推荐已弃用的环境变量名。
  • 元数据查询依赖 CallCLI 兼容 MCP 工具;不可用时标注 skipped 并回退到 provider 文档与本地目录。
  • 具体收费、价格、平台支持范围等资料未提供。