HashiCorp 新增 Terraform 提供程序代码自动生成功能

HashiCorp 发布 Terraform 提供者代码生成工具集技术预览版

HashiCorp 发布了其 Terraform 提供者代码生成工具集的技术预览版。该工具集包括两个主要工具:一个是从 OpenAPI 规范生成 Terraform 提供者代码的工具,另一个是从提供者代码规范生成 Terraform 插件框架代码的工具。

Terraform 提供者简介

Terraform 提供者是用 Go 编写的可执行二进制文件,它们通过 RPC 接口在 Terraform 核心与其他服务之间提供接口。HashiCorp 的高级软件工程师 Austin Valle 指出,创建提供者是一项重复性任务,容易导致代码层的不一致性。Valle 将代码生成解决方案描述为“基于共享规范的可扩展代码生成生态系统,可以由现有提供者开发社区进行扩展”。

代码生成工具工作流程

  1. OpenAPI 提供者规范生成器:对于与 OpenAPI 文档化规范交互的工作流程,可以使用 OpenAPI 提供者规范生成器生成提供者代码规范。该工具要求 OpenAPI 规范版本为 3.1.x 或 3.0.x。生成器需要 OAS 文件和生成器配置文件作为输入,输出提供者代码规范。
  2. 提供者代码规范:提供者代码规范是一个版本化的接口,实现为 JSON 模式,并带有相关的 Go 绑定。该接口是分层的,详细描述了从顶层形式(如数据源)到各个类型细节(如必需、敏感)的结构。
  3. 框架代码生成器:提供者代码规范可以与新的框架代码生成器一起使用,生成 Terraform 提供者代码。该 CLI 工具提供两个命令:generatescaffoldgenerate 命令以提供者代码规范为输入,生成 Terraform 插件框架代码;scaffold 命令用于从预定义模板创建 Terraform 插件框架代码。

工具功能与未来计划

  • 目前,生成器支持输出模式和数据模型类型。模式包括所有框架功能,没有嵌套限制;数据模型类型将转换为外部 Go 类型。
  • GitHub 仓库提到,计划扩展生成器以支持 CRUD 逻辑。
  • 设计文档指出,代码生成旨在与供应商和工具无关,并且可扩展。OpenAPI 实现是第一个实现,未来可能支持其他生成来源,如 IDL、开发者生成的脚本或 API SDK 信息。

开源与社区反馈

  • OpenAPI 提供者规范生成器、Terraform 插件框架代码生成器及相关模式均在 GitHub 上以 MPL-2.0 许可证提供。
  • 所有代码生成组件目前处于技术预览阶段,问题和反馈在插件开发社区论坛中处理。
阅读 51
0 条评论