provider-actions は何をしますか?
Terraform ProviderのアクションをPlugin Frameworkを使用して実装します。ライフサイクルイベント(作成前/後、更新前/後、削除前/後)で実行される命令的操作の開発時に使用します。
このスキルは、Terraform Providerのプラグインフレームワークにおいて、リソースのライフサイクルに関連するアクションを実装するための手順とベストプラクティスを提供します。具体的には、terraform-provider のコードベース内で、リソースの作成(Create)、読み取り(Read)、更新(Update)、削除(Delete)の各フェーズにフックするカスタムロジックを追加する方法を説明します。
前提条件
- Terraform Plugin Framework(
terraform-plugin-framework)の基本的な知識 - Go言語の開発環境
- 既存のProviderコードベースへのアクセス
使用方法
- リソースのスキーマ定義にアクション用の属性を追加します。
- 各ライフサイクルメソッド(Create, Read, Update, Delete)内でアクションを呼び出します。
- エラーハンドリングとロールバックロジックを実装します。
例
func (r *resource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) {
// リソース作成前のアクション
r.beforeCreate(ctx, req, resp)
// 実際のリソース作成処理
// ...
// リソース作成後のアクション
r.afterCreate(ctx, req, resp)
}
注意点
- アクションは冪等性を保つように設計してください。
- 外部システムとの連携が必要な場合は、適切なタイムアウトとリトライ機構を実装してください。
- アクションの状態はTerraformのステートに保存するか、外部のデータストアを利用してください。