Aiven Terraform Provider v4: What's newの翻訳です。
2023年4月6日
Aiven Terraform Provider v4: What's new
Aiven Terraform Provider 4.xは新しいTerraformプラグインフレームワークへの移行における重要なステップであり、より良いタイプチェックを提供します。詳細はこちらをご覧ください。
Terraformは、開発者や運用者がインフラをソフトウェアのように管理することを可能にする、強力なInfrastructure as Code (IaC)ツールです。Terraformの重要性は、組織がインフラストラクチャを大規模に自動化・管理し、ヒューマンエラーのリスクを減らし、環境間の一貫性を確保することを支援する能力にある。最近、AivenはAiven Terraform Providerのバージョン4.0.0をリリースし、Terraformを使ったデータインフラの管理をこれまで以上に簡単にする重要な変更がいくつかあります。このブログポストでは、Aiven Terraform Providerバージョン4.Xの新機能を詳しく見ていきます。
Terraform SDKv2 から Terraform Plugin Framework へのパス
Terraformは古いTerraform Plugin SDKv2の代替として新しいTerraform Plugin Frameworkをリリースしました。
Aiven Terraform Provider 4.Xでは、SDKv2から新しいフレームワークへの移行を開始しました。この移行を促進するために、Terraform Plugin SDKv2のポータビリティラッパーを利用して、Terraform Plugin Frameworkのサポートを追加しています。
文字列の代わりに厳密な型を使う
今回のリリースで最も大きな変更点は、スキーマフィールドで文字列の代わりに厳密型を使うようになったことです。Aiven Terraform Providerの以前のバージョンでは、フィールドの実際の型が何であれ、文字列インターフェースを提供していました。
例えば、public_access.prometheus
は以前は 1
(string) でしたが、現在は true
(boolean) です。リソース(またはデータソース)の型に関する最新情報は、Aiven Terraform Provider docsをご確認ください。
既存のTerraform状態の自動アップグレード
今回のリリースでは、リソースをv3.xからv4.0.0にアップグレードするための機能(Aiven stateupgrader
パッケージ)を追加しました。Aiven Terraform Provider v3.5.0から、新しい値のフィールドやドキュメントなどを含むユーザー設定タイプを生成しています。これらのユーザー設定には、お気に入りのコードエディターでの自動補完サポートが付属しています。
しかし、以前のバージョンのプロバイダを使用して生成された状態ファイルの既存の値はどうなるのでしょうか?バージョン3.Xでは、この変更を導入することはできませんでした。
これらの値はすべて文字列でしたが、バージョン4.0.0からAiven Terraform Providerはすべてのフィールド値が実際のAPI型を持つことを期待しています。stateupgrader`パッケージはTerraformプログラムの状態をシームレスにアップグレードし、文字列型をこれらの型に変換します。
ip_filter
、namespaces
(M3DB 用) およびその他の廃止予定事項
Terraformはあらゆるリソースを段階的に非推奨にしていく。リソースを非推奨にするには、次のメジャーリリースで deprecated としてマークする必要があります。例えば、aiven_database
リソースはバージョン3.Xでdeprecatedとマークされ、バージョン4.Xで廃止されました。
スキーマフィールドを使用して厳格な型を使用する一環として、v4.X では ip_filter
と namespaces
(M3DB 用) を deprecated とマークし、それぞれ ip_filter_string
と namespaces_string
というエイリアスを作成した。v5.X では ip_filter
と namespaces
フィールドを完全に削除する予定である。
この変更は、これらのフィールドが長い間我々のAPIで複数の型を受け入れていたにもかかわらず、Terraformが厳格な型を強制するため、我々の側ではまだサポートしていなかったためである。代わりに ip_filter_object
と namespaces_object
が使えるようになり、リソースをより細かくカスタマイズできるようになりました。古いフィールドは非推奨としてマークされていますが、まだ存在しており、Aiven Terraform Providerのバージョン5.Xでのみ完全に置き換えられます。非推奨とマークされたリソースを使用しようとすると、ユーザーに警告が表示されます。
以下のデータソースとリソースはバージョン3.Xで非推奨とマークされ、現在は削除されています:
- aiven_database
、
aiven_service_user、
aiven_vpc_peering_connection`。 - aiven_flink_table
および
aiven_flink_job` 。
これは顧客にとって何を意味するのか?
Aiven Terraform Providerは最新のプロトコルバージョンであるProtocol Version 6に対応しました。この変更はお客様には透過的ですが、長期的な安定性を提供し、より迅速なバグ修正サイクルを可能にします。
| Aiven Terraform Providerのバージョン|Terraform Protocolのバージョン互換性|Terraform SDKv2またはTerraform Plugin Framework|で検出されたタイプエラー
| --- | --- | --- | --- |
| 3.X|4|Terraform SDKv2|Aiven バックエンド
| 4.X | 6 | Terraform SDKv2とプラグインフレームワークのように動作するラッパー | Aivenバックエンド
| 5.X|6|Terraformプラグインフレームワーク|Terraformクライアント
次の例を見てみましょう。Aiven Terraform Provider 3.Xでは、整数のUSER CONFIGオプションフィールドに"foo"
(文字列)を代入することができました。そのマニフェストを適用した結果、Aiven Terraform Providerバックエンドからエラーが発生すると、TerraformクライアントはAivenプラットフォームにAPIコールを行う必要があります。5.Xになれば、Terraformクライアント自身がエラーを出せるようになります。
これらの変更に伴い、Aiven Terraform Providerのバージョンを最新に保つことが重要です; 少なくともメジャーリリースについては。例えば、Aiven Terraform Provider v3.Xからv5.Xへの直接アップグレードを待っていた場合、移行がスムーズにいかなかったり、最悪の場合、全く動作しなかったりするかもしれません。Aiven Terraform Providerは常に最新版にアップデートしておくことをお忘れなく。)
What's next?
現在、私たちのエンジニアはAiven Terraform Providerの次のバージョンに向けて、新しいTerraformプラグインフレームワークを利用できるようにリソースを更新しています。これにより、Terraform Plugin SDKからの移行が完了します。Terraform Plugin SDKの世界では、リソースは null
値を持つことができません - リソースが値を持っているか、空であるかのどちらかです - つまり、リソースの正しい状態を判断するために多くのカスタムチェックを行う必要があります。将来的に、Terraform Plugin Frameworkを使用してAiven Terraform Providerを構築する際には、リソースのパラメータにnull値を定義できるようになります。
Aiven Terraform Providerを使ったデータインフラの構築と管理が待ち遠しいです。まずはTerraform public registryにアクセスし、よく使われるソリューションについてはAiven Terraform Cookbookをご覧ください。質問やフィードバックがあれば、遠慮なく連絡してください。