リメディエーションを扱う
Terraform PR エージェントを接続すると、エージェントはアクション可能な DoiT シグナルに応じて pull request を作成します。リメディエーションの pull request は DoiT コンソールではなく、GitHub で作成およびレビューされます。
(推奨) Terraform 依存関係ロックファイルをコミットする
エージェントは、リポジトリ内のプロバイダバージョンに応じてリメディエーションを調整するために、Terraform 依存関係ロックファイル (.terraform.lock.hcl) と、required_providers のバージョン制約を使用します。これにより、サポートされているリソースフィールドを選択したり、バージョン固有のバグや注意点に対する既知の ワークアラウンドを適用したりできます。
エージェントがプロバイダの正確なバージョンを解決し、より正確な変更を生成できるように、.terraform.lock.hcl をリポジトリにコミットしてください。
エージェントをトリガーする
早期アクセス期間中、DoiT はアクション可能な Composer Insight を選択し、DoiT の Trigger automated IaC remediation for an insight アクションを呼び出す CloudFlow を提供します。エージェントは、スケジュール実行や Integrations カタログからのオンデマンド実行には対応していません。CloudFlow を使用しない第一級の Insights トリガーは、今後のリリースで提供予定です。
代表的な提供フローは次のとおりです。
-
開始する (例: Manually start トリガーで開始)。
-
List insights を実行し、その後に Filter on List insights を実行して、どの Insight をリメディエートするかを選択。
-
List resource results for an insight を実行して、影響を受けるクラウドリソース ID を収集。
-
LLM ノードを使用して、エージェント向けのリメディエーションガイダンスを整形。
-
DoiT ノード 上で Trigger automated IaC remediation for an insight を呼び出し、エー ジェントを開始。
この最後のアクションには、トリガー元 (CloudFlow と Insight) と、クラウドプロバイダー、Insight のピラー (例: コストまたはセキュリティ)、影響を受けるリソース ID、リメディエーションテキスト、およびオプションでリソースごとの推定コスト削減額を含むシグナルペイロードが必要です。提供されるフローでは、これらの値は上流のノードから渡されます。

エージェントが、対象リソースを接続済み GitHub リポジトリ内の Terraform コードにマッピングできない場合、そのリソースはスキップされます。対象リソースを 1 つもマッピングできない場合、pull request は作成されません。
エンドツーエンドのフロー
-
シグナル検出: 影響を受けるクラウドリソースを含む Insight が CloudFlow を通じてエージェントに渡されます。
-
リソースマッピング: エージェントは、接続済みの Terraform (HCL) コードベースを検索し、これらのリソースが定義されている場所を特定します。
-
コード生成: エージェントは、推奨されるリメディエーションを実装す るための最小限の Terraform 変更を生成し、既存のコードスタイルおよび設定済みのガードレールを尊重します。
-
ローカル検証: pull request を作成する前に、エージェントは提案された変更に対してローカルチェックを実行します。リポジトリ内に Checkov の設定が存在する場合、
terraform fmt、tflint、trivy、checkovを含みます。 -
pull request の作成: エージェントは、対象リポジトリ内の専用ブランチ上に pull request を作成します (同じ Insight に対する既存のリメディエーションブランチがすでに存在する場合は、そのブランチを更新します)。リメディエーションが複数のリポジトリにまたがる場合、エージェントはリポジトリごとに 1 つの pull request を作成します。これらのリポジトリ間に Terraform モジュール依存関係が存在する場合、エージェントは依存関係の順序に従って pull request を作成します。まずプロバイダリポジトリ、その後それらのモジュールを利用するリポジトリの順で作成し、各 PR にマージ順序に関するメモを含めます。
-
レビューとマージ: チームは GitHub 上で pull request をレビューし、通常の変更管理プロセスに従ってマージします。マージ後は、通常のデプロイパイプラインが Terraform の変更を適用します。