HashiCorp 发布 Terraform 提供者代码生成工具集技术预览版
HashiCorp 发布了其 Terraform 提供者代码生成工具集的技术预览版。该工具集包括两个主要工具:一个是从 OpenAPI 规范生成 Terraform 提供者代码的工具,另一个是从提供者代码规范生成 Terraform 插件框架代码的工具。
Terraform 提供者简介
Terraform 提供者是用 Go 编写的可执行二进制文件,它们通过 RPC 接口在 Terraform 核心与其他服务之间提供接口。HashiCorp 的高级软件工程师 Austin Valle 指出,创建提供者是一项重复性任务,容易导致代码层的不一致性。Valle 将代码生成解决方案描述为“基于共享规范的可扩展代码生成生态系统,可以由现有提供者开发社区进行扩展”。
代码生成工具工作流程
- OpenAPI 提供者规范生成器:对于与 OpenAPI 文档化规范交互的工作流程,可以使用 OpenAPI 提供者规范生成器生成提供者代码规范。该工具要求 OpenAPI 规范版本为 3.1.x 或 3.0.x。生成器需要 OAS 文件和生成器配置文件作为输入,输出提供者代码规范。
- 提供者代码规范:提供者代码规范是一个版本化的接口,实现为 JSON 模式,并带有相关的 Go 绑定。该接口是分层的,详细描述了从顶层形式(如数据源)到各个类型细节(如必需、敏感)的结构。
- 框架代码生成器:提供者代码规范可以与新的框架代码生成器一起使用,生成 Terraform 提供者代码。该 CLI 工具提供两个命令:
generate和scaffold。generate命令以提供者代码规范为输入,生成 Terraform 插件框架代码;scaffold命令用于从预定义模板创建 Terraform 插件框架代码。
工具功能与未来计划
- 目前,生成器支持输出模式和数据模型类型。模式包括所有框架功能,没有嵌套限制;数据模型类型将转换为外部 Go 类型。
- GitHub 仓库提到,计划扩展生成器以支持 CRUD 逻辑。
- 设计文档指出,代码生成旨在与供应商和工具无关,并且可扩展。OpenAPI 实现是第一个实现,未来可能支持其他生成来源,如 IDL、开发者生成的脚本或 API SDK 信息。
开源与社区反馈
- OpenAPI 提供者规范生成器、Terraform 插件框架代码生成器及相关模式均在 GitHub 上以 MPL-2.0 许可证提供。
- 所有代码生成组件目前处于技术预览阶段,问题和反馈在插件开发社区论坛中处理。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。