BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース HashiCorp、Terraformプロバイダーコードの自動生成を追加

HashiCorp、Terraformプロバイダーコードの自動生成を追加

原文リンク(2024-01-15)

HashiCorpTerraformプロバイダーコード生成ツールセットのテクニカルプレビューをリリースした。これにはOpenAPI仕様からTerraformプロバイダーコードを生成する新しいツールが含まれる。このリリースには、プロバイダーコードの仕様からTerraformプラグインフレームワークのコードを生成するツールも含まれている。

TerraformプロバイダはGoで書かれた実行可能なバイナリで、RPCインターフェイスを介してTerraformコアと他のサービス間のインターフェイスを提供する。HashiCorpのシニアソフトウェアエンジニアであるAustin Valle氏指摘するように、プロバイダの作成はコードレイヤーに不整合をもたらす反復作業になりうる。Valle氏は、このコード生成ソリューションを "既存のプロバイダー開発者コミュニティによって拡張可能な共有仕様に基づいたスケーラブルなコード生成エコシステム "と表現している。

Terraform code generator workflow

Terraformコード生成ワークフロー(クレジット:HashiCorp)

OpenAPIで文書化された仕様と相互作用するワークフローでは、OpenAPIプロバイダ仕様ジェネレータを使ってプロバイダコード仕様を生成できる。このツールは、OpenAPI仕様がバージョン3.1.xまたは3.0.xであることを必要とする。実行されると、Terraformプロバイダーコードを作成するためにフレームワークコードジェネレーターが使用できるプロバイダーコード仕様を出力する。

ジェネレーターconfigは、APIオペレーションとコンポーネントを適切なTerraformリソース、データソース、プロバイダーにマッピングするために使われるYAMLファイルである。例えば、データソースの仕様を生成するには、mapdata_sourcesを使う。

data_sources:
  thing:
    read:
      path: /thing/{id}
      method: GET

プロバイダー・コードの仕様は、関連するGoバインディングを持つJSONスキーマとして実装されたバージョン管理されたインターフェースである。インターフェイスは階層化されており、データ・ソースなどのトップ・レベルの形式から、個々の型の詳細(必須、機密など)に至るまで、構造を詳細に記述している。

プロバイダーコード仕様は、Terraformプロバイダーコードを生成する新しいFramework Code Generatorと一緒に使うことができる。このCLIツールにはgeneratescaffoldの2つのコマンドがある。generateコマンドはプロバイダコード仕様を入力とし、Terraformプラグインフレームワークコードを生成する。これは_gen.goというサフィックスを持つGoファイルとして生成され、それ以上の編集はできない。

scaffoldコマンドは、あらかじめ定義されたテンプレートからTerraformプラグインフレームワークのコードをGoで作成するために使われる。これらはプラグインフレームワークの生成プロセスを簡略化するための出発点となる。

リリース時点では、ジェネレーターはスキーマとデータモデル型の出力をサポートしている。スキーマでは、すべてのフレームワーク機能が、入れ子に制限なく含まれる。仕様内で提供される場合、データモデル型は外部のGo型に変換される。GitHubのレポには、CRUDロジックをサポートするためにジェネレーターを拡張する計画があると書かれている。

設計ドキュメントにあるように、コード生成はベンダーやツールにとらわれず、拡張可能であることを意図している。OpenAPIの実装は、IDL、開発者が生成したスクリプト、API SDK情報など、他の潜在的な生成ソースを含む最初の実装であることを意図している。リリースの時点では、追加ソースのサポートに関する時間枠は提供されていない。

OpenAPI Provider Spec GeneratorTerraform Plugin Framework Code Generator、そして関連するスキーマはすべて、MPL-2.0ライセンスの下でGitHubで利用可能である。すべてのコードジェネレータコンポーネントは現在技術プレビュー中である。質問やフィードバックはプラグイン開発コミュニティフォーラムで受け付けている。

作者について

この記事に星をつける

おすすめ度
スタイル

BT