「インフラコードを書くこと」は、本当にクリエイティブな作業でしょうか?
アーキテクチャを構想し、スケーラビリティや耐障害性を設計することは極めて重要です。しかし、一度決まった構成に従ってS3バケットを追加したり、セキュリティグループのルールを一行書き換えたりする作業は、単なる「ルーチン」に過ぎないという意見もあります。
クリエイティブの現場では、画像生成AIが「下書き」を作成し、人間がそれを「ディレクション」して仕上げるワークフローが普及しつつあります。この流れは、インフラエンジニアリングの世界でも同様に進むと考えられます。
今回は、GitOpsのワークフローにAIを組み込み、「人間はコードを書かず、AIが書いたコードを承認するだけ」という自律運用モデルの構築に関する実践的なアプローチを提示します。最新のデジタルツールを実務に落とし込み、現場の生産性を向上させる視点から、既存のエディタ内でのコード補完といった「支援ツール」の枠を超え、GitHub ActionsとOpenAIの最新APIを連携させ、自律的に動く「AIエンジニアボット」を導入するための実装ガイドを解説します。旧来のGPT-4oなどのレガシーモデルから、推論能力が向上した最新のエージェント型モデルへ移行したことで、この自律運用はより現実的で安定したものとなっています。
AI×GitOpsのインフラ運用の進化
GitOpsは、インフラの状態を宣言的に定義し、Gitを信頼できる唯一の情報源とする優れた手法です。しかし、運用が長期化すると課題も見えてきます。
レビュー工数を削減する「AI一次請け」モデル
多くのSREチームで、「Pull Request(PR)の増加」が課題となっています。微細な変更依頼が来るたびにコンテキストスイッチが発生し、HCL(HashiCorp Configuration Language)の構文チェックや命名規則の確認に時間がかかります。これでは、本質的な改善活動に手が回りません。
そこで、AIを「一次請けのエンジニア」として配置するモデルが有効な解決策となります。
- 開発者: 自然言語で「画像保存用のS3バケットが欲しい」とIssueを立てる。
- AIボット: 既存コードを読み、要件に合ったTerraformコードを書き、PRを作成する。
- AIボット:
terraform fmtやtfsecを実行し、エラーがあれば自己修正する。 - SRE(人間): テストを通過したPRの内容を確認し、マージボタンを押す。
特に2026年2月に発表されたコーディング特化モデル「GPT-5.3-Codex」のようなエージェント型モデルを活用すれば、長時間の複雑な作業や自己修正能力が飛躍的に向上します。このフローにより、人間は「記述」のプロセスから解放され、「承認(Review)」と「ガバナンス」に注力できるのです。
宣言的定義(GitOps)と生成的定義(GenAI)の融合
GitOpsの「宣言的(Declarative)」な性質は、生成AIと非常に相性が良いと言えます。命令的なスクリプト(「これをやって、あれをやる」)をAIに書かせるのは手順の途中で破綻するリスクが高いですが、宣言的なコード(「あるべき状態」)であれば、AIは最終形を出力するだけで済みます。
さらに、GitOpsツール(ArgoCDやFlux)が常に「あるべき状態」を監視しているため、AIが誤った設定を生成しても、Git上でのレビュー段階、あるいはDry Run(Plan)段階で確実に検知できます。GPT-5.2のような高度な推論能力と100万トークン級のコンテキスト処理能力を持つモデルが生成するコードであっても、GitOpsという強固なガードレールがあるからこそ、安心して本番運用に組み込むことが可能です。技術的な実現可能性と、運用者の利便性を両立させるバランスを重視する上で、このガードレールは極めて重要です。
本ガイドで構築するパイプラインの全体像と到達点
この記事では、以下の機能を備えた自律型パイプラインを構築します。
- Issue Trigger: 特定のラベルが付いたIssue作成をトリガーに起動
- Context Aware: 既存のTerraformディレクトリ構造を理解してコードを生成
- Self-Healing: 文法エラーやセキュリティ違反を検知し、AIが自律的に修正
- Automated PR: 人間が読みやすい解説付きのPRを自動作成
セキュリティにも配慮し、OpenAIへのデータ送信時のフィルタリングや、APIキーの管理についても解説します。また、2026年2月にChatGPT等での提供が終了したGPT-4oなどの旧モデルを利用していた環境から、よりコスト効率と推論精度に優れたGPT-5.2やGPT-5.3-Codexへ移行する際のプロンプト調整の留意点もカバーします。最新のモデルを活用することで、自律型パイプラインの精度と信頼性をさらに高めることができます。
2. 統合アーキテクチャとデータフロー設計
実装に入る前に、システム全体の設計図を把握しておきましょう。企業利用を想定し、セキュリティと拡張性を考慮したアーキテクチャを描きます。これは単なる自動化ではなく、インフラ運用における「意思決定のフロー」をデザインする作業です。
GitHub Actions、OpenAI API、ArgoCDの連携図
データと処理の流れは以下のようになります。各ツールが有機的に連携し、自律的な運用サイクルを回します。
- User: GitHub Issueを作成(例:「プロジェクトX用のDB追加」)。ここが全てのトリガーとなります。
- GitHub Actions: Webhookでイベントを検知し、ワークフローを開始します。最新のGitHub Actionsでは、ホストランナーのコスト効率が改善されており、スケーラブルな実行環境として最適です。
- Preprocessor: Issue本文と、関連する既存の
.tfファイルを抽出します。ここで重要なのは、機密情報をマスク処理し、AIに渡すコンテキストを最適化することです。 - OpenAI API (最新のコーディング特化モデル): プロンプトとコンテキストを受け取り、変更分のHCLコードと解説文を生成します。
- ※最新のAPI(ChatGPT系など)では、コーディングに特化したモデルやエージェント機能が強化されています。リファクタリング能力やコンテキスト圧縮機能を持つモデルを選択することで、より正確なコード生成が可能です。環境変数で柔軟にモデルを切り替えられる設計にしておきましょう。
- Postprocessor: 生成されたコードをファイルに書き出し、
terraform fmt / validate、tfsecを実行します。- エラーあり: エラーログを添えて再度OpenAI APIへリクエストを送ります。最新のエージェント機能を取り入れることで、単なる再試行ではなく、論理的な自己修復(Self-Healing)が可能になります。
- エラーなし: 新規ブランチを作成し、コミットします。
- GitHub: Pull Requestを作成します。
- Human: PRをレビューし、マージします。最終的な承認権限は人間が持ちます。
- ArgoCD:
mainブランチの変更を検知し、実際のインフラへ同期させます。
Issue起点のイベント駆動アーキテクチャ
チャットボット(Slackなど)ではなく、GitHub Issueを起点にする理由は、「要件定義の履歴管理」のためです。Slackの会話は流れてしまいますが、Issueは「なぜその変更が必要だったか」という文脈と共に永続化されます。
また、Issueのコメント機能を使ってAIと対話しながら要件を詰めることも可能です。これは、開発の現場で自然に行われている「非同期コミュニケーション」にAIエージェントを参加させるアプローチと言えます。
セキュリティ境界とクレデンシャル管理の方針
AIにインフラを操作させる際、セキュリティ設計は最優先事項です。以下の3つの原則を徹底してください。
- APIキーの厳格な管理と監視: OpenAIのAPIキーはGitHub Secretsに格納し、ログ出力時には必ずマスクされるように設定します。また、OpenAIの最新機能にはセキュリティリスクをチェックする機能も含まれている場合があるため、それらの活用も検討してください。
- 権限の最小化 (Least Privilege): GitHub Actionsで使用するトークン(
GITHUB_TOKEN)には、PR作成とコンテンツ書き込みの権限のみを与え、管理者権限は付与しません。万が一の暴走を防ぐための防壁です。 - ステートレスな設計: AIエージェント自体にはステート(状態)を持たせません。常に最新のGitリポジトリの状態(HEAD)を正(Source of Truth)として動作させます。これにより、予期せぬ状態の不整合を防ぎます。
3. 前提条件と環境セットアップ
構築を始めましょう。まずは準備です。クリエイティブなワークフローと同様、インフラの自動化も最初の下準備が品質を左右します。
必要なツールスタックとバージョン要件
以下の環境が整っていることを確認してください。
- GitHub Repository: Terraformコードを管理しているリポジトリ。
- OpenAI API Key: OpenAIの最新モデル(特にコーディングや推論に特化した上位モデル) にアクセス可能なAPIキー。IaCの複雑な依存関係を理解し、正確な修正を行うには、汎用的な軽量モデルではなく、高度な推論能力やコーディング支援機能を持つモデルが不可欠です。
- Terraform: 最新の安定版。
- Python: v3.9以上(GitHub Actionsランナー上でスクリプトを実行するため)。
OpenAI API (またはAzure OpenAI) の権限設定
OpenAI本家のAPIが利用できない場合はAzure OpenAIを利用してください。本記事のコードはOpenAI Pythonライブラリを使用するため、エンドポイントとAPIバージョンの設定を変更するだけでAzureにも対応可能です。
モデル選定とコストについて
自律運用において最も重要なのは「正確性」です。そのため、コストを優先して軽量モデルを選ぶのではなく、OpenAIの最新フラッグシップモデルや、コーディングタスクに最適化された推論特化型モデル(推論プロセスを含むモデル等)の利用を強く推奨します。最新のAPI環境では、大規模なリファクタリングやコード移行に対応したモデルも登場しており、これらを活用することで自動修正の精度が飛躍的に向上します。
コストに関しては、高性能モデルを使用した場合、1回のPR生成ごとにトークン課金が発生しますが、エンジニアが手動でコードを修正・レビューする時間的コストと比較すれば、費用対効果は非常に高いと言えます。なお、利用可能なモデルの種類や最新の料金体系については、変更される可能性があるため必ず公式サイトをご確認ください。
Terraformリポジトリのディレクトリ構造要件
AIが理解しやすいよう、ディレクトリ構造は標準的なものを推奨します。AIにとっての「分かりやすさ」は、そのまま生成精度の向上に直結します。
.
├── environments/
│ ├── prod/
│ └── staging/
├── modules/
│ ├── networking/
│ └── storage/
└── .github/
└── workflows/
AIには「どのディレクトリのファイルを修正すべきか」を判断させる必要があります。モジュール化が進んでいるほど、AIへの入力コンテキストを小さく絞れるため、精度が向上します。
4. 実装Step 1:IssueドリブンなIaCコード生成フローの構築
クリエイティブな自動化の第一歩は、AIに「文脈」を正しく理解させることから始まります。ここでは、「S3バケットを追加したい」といった自然言語のIssueをトリガーに、AIが既存のインフラコード(Terraform)を読み解き、変更案を提示するまでのフローを構築します。現場の制作フローに基づいた、具体的で再現性の高いデジタル活用術として、単にコードを書かせるのではなく、「人間の意図を汲み取り、既存の設計思想を壊さずに提案させる」 という点が、この実装の肝になります。
特に、GitHub CopilotのCoding Agent機能などが進化する中で、独自のワークフローを組む意義は、組織固有のガバナンスや命名規則を厳密に適用できる点にあります。自動化の恩恵を最大限に引き出すためには、AIを単なるコードジェネレーターとしてではなく、プロジェクトの文脈を共有するペアプログラミングのパートナーとして位置づけることが重要です。
GitHub Actionsワークフローの定義
まず、AIを動かすための舞台となるワークフロー定義ファイル .github/workflows/ai-iac-generator.yml を作成します。
CI/CDパイプライン内でAIモデルを呼び出すコストバリアは以前より低くなっており、日常的な開発プロセスに組み込みやすくなっています。
name: AI IaC Generator
on:
issues:
types: [opened, edited]
permissions:
contents: write
pull-requests: write
issues: write
jobs:
generate-code:
# 特定のラベルが付与された場合のみ実行(コストとノイズの抑制)
if: contains(github.event.issue.labels.*.name, 'ai-iac')
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install dependencies
run: pip install openai PyGithub
- name: Generate Terraform Code
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ISSUE_BODY: ${{ github.event.issue.body }}
ISSUE_NUMBER: ${{ github.event.issue.number }}
REPO_NAME: ${{ github.repository }}
# 使用するモデル名を環境変数で指定(柔軟性確保)
# 例: 汎用タスク向けのGPT-5.2や、コーディング特化のGPT-5.3-Codexを指定
OPENAI_MODEL_NAME: ${{ vars.OPENAI_MODEL_NAME || 'gpt-5.2' }}
run: python .github/scripts/generate_iac.py
ここでのポイントは if: contains(..., 'ai-iac') という条件分岐です。すべてのIssueに対してAIが反応してしまうと、議論の場が混乱するだけでなく、APIコストも無駄に嵩んでしまいます。「AIに作業を依頼したい時だけラベルを貼る」という運用ルールにすることで、人間とAIの役割分担を明確にし、効率的なコラボレーションを実現します。
また、OPENAI_MODEL_NAME を環境変数(GitHub Variables)で外出しにしている点も重要です。OpenAIのモデルは頻繁にアップデートされており、コードを直接書き換えずに使用モデルを切り替えられる設計にしておくことが、長期的な運用のコツとなります。
IaC特化型プロンプトテンプレートの設計
次に、AIへの指示書となるPythonスクリプト .github/scripts/generate_iac.py の中核部分を実装します。ここでAIの「人格」と「制約」を定義します。
最新のAPI利用においては、単にコードを書かせるだけでなく、セキュリティリスクへの配慮や既存アーキテクチャへの適合性が強く求められます。
import os
import openai
from github import Github
# システムプロンプト:役割と品質基準の定義
SYSTEM_PROMPT = """
あなたはDevOpsのスペシャリストです。
ユーザーの要望に基づいて、Terraform (HCL) コードの作成または修正を行ってください。
【品質・制約事項】
1. 出力は必ず有効なHCLコードのみを含めてください。
2. コードの解説や思考プロセスはコードブロックの外に記述してください。
3. 既存の命名規則(snake_case等)やディレクトリ構造を尊重してください。
4. AWSプロバイダーを使用し、リージョンはap-northeast-1を前提とします。
5. destroy(リソース削除)につながる変更は、リスクを明示した上で慎重に行ってください。
6. セキュリティベストプラクティスを遵守し、パブリックアクセス設定などは慎重に扱ってください。
"""
def generate_code(issue_body, existing_files_content):
user_prompt = f"""
【ユーザーの要望】
{issue_body}
【現在のコード状況】
{existing_files_content}
上記の要望を実現するためのTerraformコードの差分、または新規ファイルの内容を生成してください。
"""
# 環境変数からモデル名を取得(デフォルトは標準モデルのgpt-5.2)
model_name = os.getenv("OPENAI_MODEL_NAME", "gpt-5.2")
client = openai.OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
# 推論能力を活用してコード生成
response = client.chat.completions.create(
model=model_name,
messages=[
{"role": "system", "content": SYSTEM_PROMPT},
{"role": "user", "content": user_prompt}
],
# コード生成では創造性よりも一貫性を重視するため低めに設定
temperature=0.2
)
return response.choices[0].message.content
temperature=0.2 という設定にも注目してください。クリエイティブな文章生成では高めの値を設定しますが、インフラコードのような正確性が求められるタスクでは、値を低く抑えることでハルシネーション(嘘の記述や存在しないリソースの提案)のリスクを大幅に低減させます。
また、2026年2月時点でOpenAIのモデル環境は大きく変化しています。GPT-4oなどのレガシーモデルは順次廃止され、100万トークン級のコンテキストウィンドウを持つ標準モデル「GPT-5.2」への移行が進んでいます。さらに、コーディングに特化したエージェント型モデル「GPT-5.3-Codex」も発表されました。これらは複雑なリファクタリングや依存関係の解決に強みを持つため、APIの一般提供状況を公式ドキュメントで確認しつつ、汎用タスクにはGPT-5.2、高度なインフラ構築にはGPT-5.3-Codexといったように、用途に応じてモデルを適切に使い分けることが品質向上の鍵となります。
コンテキスト(既存tfファイル)の効率的な渡し方
上記のスクリプトにある existing_files_content をどのように構築するかが、生成精度を左右する最大の要因です。
GPT-5.2のような最新のLLMは非常に長いコンテキストウィンドウを持っていますが、リポジトリ内の全ファイルを無差別に渡すのは得策ではありません。情報量が多すぎると、かえってAIの注意力が散漫になり、意図しないファイルへの変更を提案してしまう可能性があるからです。また、APIのトークン消費量も増加してしまいます。
実装のアプローチとしては、以下の2パターンが考えられます:
- 明示的指定: Issue本文に「関連ファイル:
main.tf,vpc.tf」のように人間が指定する。 - AIによる自律探索(エージェントアプローチ): スクリプト内でまずファイルツリー構造だけをAIに渡し、「この変更にはどのファイルが必要か?」を判断させた上で、必要なファイルの中身だけを読み込む。
GitHub CopilotのCoding Agent機能のような自律的な挙動をAPIで再現する場合は、2のアプローチが有効です。今回は実装のシンプルさを優先し、主要な main.tf と variables.tf を読み込む構成で進めますが、運用規模が大きくなってきたら、AIに「何を見るべきか」を選ばせるロジックへの移行を検討すると良いでしょう。これにより、大規模なインフラ構成であっても、AIが適切なコンテキストのみを抽出して正確なコード生成を行えるようになります。
参考リンク
5. 実装Step 2:自動テストとAIによる自己修正ループ
生成されたコードをそのまま使用することは推奨されません。生成された成果物に対して品質チェックを行い、問題があればAIに修正を依頼するループを構築します。
tfsec / tflint による静的解析の統合
Pythonスクリプト内で、生成されたコードをファイルに書き出した後、サブプロセスとしてバリデーションツールを呼び出します。
import subprocess
def validate_and_fix(file_path, retry_count=3):
for i in range(retry_count):
# 1. Terraform Format
subprocess.run(["terraform", "fmt", file_path])
# 2. Validation
result = subprocess.run(["terraform", "validate"], capture_output=True, text=True)
if result.returncode == 0:
return True # 成功
# エラー発生時:AIに修正依頼
error_msg = result.stderr
print(f"Validation failed (Attempt {i+1}): {error_msg}")
fix_prompt = f"""
以下のTerraformコードでエラーが発生しました。
修正したコードを出力してください。
【エラー内容】
{error_msg}
"""
# ここで再度 OpenAI API を呼び出してファイルを上書きする
# ... (AI呼び出しロジック)
return False # 修正しきれなかった場合
エラーログをAIにフィードバックする再生成ロジック
このループ処理は、AIエージェント化の第一歩です。単にコードを書くだけでなく、「自分の書いたコードの責任を持つ」振る舞いを実装します。
特に tfsec を組み込むことを推奨します。「S3バケットを公開設定にしてしまった」といったセキュリティリスクを、PR作成前にAI自身の手で修正させることができます。これは人間がレビューで指摘するよりも効率的です。
「terraform plan」の結果に基づく妥当性検証
構文エラーがなくなったら、最後に terraform plan を実行し、その結果(Plan出力)をPRのコメントに含めるようにします。これにより、レビュアーは「AIが何を変えようとしているか」を把握できます。
6. 実装Step 3:人間による承認とGitOps同期
AIが修正し、テストを通過したコードがPull Requestとして上がってきます。ここからは人間とGitOpsツールの役割です。
PRコメントへのAI自動応答システム
作成されたPRには、AIによる解説コメントが付与されます。
AI Bot:
「ご要望のS3バケット追加に関するコードを作成しました。
- リソース名:
aws_s3_bucket.data_lake- 設定: バージョニング有効、暗号化有効
- セキュリティチェック:
tfsec通過済み確認をお願いします。」
修正が必要な場合は、PRにコメントします。「バケット名に環境プレフィックスをつけて」など。これをWebhookで検知し、再度AIが修正コミットをpushするワークフローを追加すれば、対話型開発が実現します。
CODEOWNERSによる承認フローの強制
AIが生成したコードが自動的にマージされるのを防ぐため、GitHubの CODEOWNERS 機能を使用します。
# .github/CODEOWNERS
*.tf @my-org/sre-team
これにより、SREチームの承認がない限りマージボタンが押せなくなります。
マージ後のArgoCD同期ステータスの通知連携
PRがマージされると、ArgoCDが自動的に同期を開始します。ArgoCD Notificationsを設定し、同期完了(または失敗)をSlackに通知させます。
「Issue作成(人間)→ コード生成(AI)→ レビュー(人間)→ デプロイ(GitOps)」
この流れがスムーズにつながることで、インフラ運用の効率化が期待できます。
7. 運用と保守:AIエージェントの継続的改善
システム構築はゴールではなく、運用のスタートラインです。特にAIを組み込んだワークフローは、モデルの進化やプロジェクトの成長に合わせて継続的に「チューニング」していく必要があります。現在、AIは単なるコード生成ツールから、自律的にタスクを遂行する「エージェント」へと進化しており、運用手法もそれに適応させる必要があります。
チーム固有のコーディング規約を学習させる方法
汎用的なTerraformコードではなく、組織特有のルール(タグ付け規則、命名規則、特定のモジュール使用ルールなど)をAIに遵守させることは、インフラの品質維持において重要です。しかし、これらすべてをプロンプトに直接記述するとコンテキストウィンドウを圧迫し、コストも嵩んでしまいます。
ここで有効なのが、開発現場ではおなじみのRAG(Retrieval-Augmented Generation)的なアプローチです。docs/coding-guidelines.md のようなガイドラインファイルをリポジトリに配置し、AIがコード生成を行う前にこのファイルを参照するようにスクリプトを調整します。
さらに、GitHub CopilotやOpenAIのコーディング特化モデルであるGPT-5.3-Codexでは、リポジトリ全体をコンテキストとして理解する機能や、エージェントによる自律的な調査機能が強化されています。これらを活用し、過去の良質なPull Requestの差分をFew-Shot(例示)として参照させることで、AIの出力精度は劇的に向上します。これはまさに、新しいメンバーにチームの流儀を共有するプロセスと同じ感覚で設計できます。
予期せぬ破壊的変更を防ぐガードレール運用
AIのエージェント機能が強化され、大規模なリファクタリングやコード修正が可能になった反面、予期せぬ破壊的変更のリスクも管理する必要があります。AIは時として、リソースの再作成(Destroy & Create)が必要な、論理的には正しいが運用上は危険な変更を提案してくることがあります。
安全装置として、terraform plan の出力を解析し、destroy アクションが含まれている場合に警告を発する仕組みは必須です。例えば、Pull Requestに「⚠️ 警告: 削除を伴う変更が含まれています」というラベルを自動付与したり、特定のキーワードが含まれる場合はマージブロックをかけるロジックをGitHub Actionsに組み込む設計が推奨されます。
最新のエージェント型モデルでは、タスク実行中のリアルタイムな人間介入(指示調整)も想定されるようになっています。AIの自律性を最大限に引き出しつつも、最終的な安全確認(Human-in-the-loop)の権限は人間が確実に握るアーキテクチャが不可欠です。
トークン消費量の監視とコスト最適化テクニック
AIモデルの選択肢は広がっており、コスト管理の重要性は増しています。OpenAIのAPIでは、GPT-4oなどのレガシーモデルから、GPT-5.2(標準モデル)やGPT-5.3-Codexへの移行が進んでいます。複雑な推論やインフラコードの大規模生成にはGPT-5.3-Codexを使用し、単純な構文チェックや汎用的なドキュメント生成にはGPT-5.2を使い分けるルーティング設計が、費用対効果を高める鍵となります。
長期運用においては、以下の最適化テクニックが有効です:
- コンテキストの厳選:
.gitignoreの概念を応用した.aigignoreのようなリストを定義し、AIに読ませるファイルを厳選してトークン消費を抑える工夫は依然として重要です。 - 推論コストの調整: 最新のAPIでは、タスクの難易度に応じて推論レベル(ThinkingのExtendedレベルなど)を調整できる機能が提供されています。「思考時間」を最適化することで、過剰なトークン消費を防ぎつつ高い精度を維持できます。
- モデル移行と再テスト: レガシーモデルの廃止に伴い、既存のプロンプトが新モデル(GPT-5.2等)でも意図通りに機能するか、定期的な再テストとチューニングを実施する運用サイクルを回す必要があります。
- GitHub Actionsのランナー選定: GitHubホストランナーの料金体系や、セルフホストランナーの仕様など、プラットフォーム側のコスト構造も変化しています。AIワークフローを動作させる環境として、コストパフォーマンスの最も良いランナー構成を定期的に見直すことをお勧めします。
8. よくある質問とトラブルシューティング
導入時によくある疑問にお答えします。
Q: AIが既存のリソースを削除しようとした場合は?
A: 前述の通り、terraform plan の解析ロジックで対応します。また、Terraform側でも lifecycle { prevent_destroy = true } を重要なリソースに設定しておくことで、AIの動作を制限することができます。これはAI運用に限らず、GitOpsのベストプラクティスです。
Q: 複雑な依存関係を持つモジュールの変更は可能か?
A: 現段階のAIにとって「大規模なリファクタリング」や「複雑なモジュール依存関係の解消」は難しいと考えられます。こういった高難易度のタスクは人間が行い、AIには「新規リソース追加」や「パラメータ変更」といった定型タスクを任せるという役割分担が、現時点での最適解です。
Q: 秘匿情報(Secrets)の扱いはどうすべきか?
A: プロンプトにアカウント情報やパスワードを含めてはいけません。IaCコード内では変数を使い、実際の値はGitHub SecretsやAWS Secrets Manager、Vaultなどから注入する構成にしてください。AIには「変数の定義」までを行わせ、値の設定は人間またはCI/CDシステムが管理する境界線を守りましょう。
まとめ:インフラエンジニアの進化
AI×GitOpsによる自律運用の構築について解説しました。
AIにインフラを操作させることに不安を感じるかもしれませんが、適切なガードレール(テスト、Lint、Plan、そして人間の承認)を設けることで、リスクを軽減できます。
人間が手作業でYAMLやHCLを編集することによるリスクと比較すると、AIは疲れることなく、ルールを忠実に守るという利点があります。
このシステムを導入することで、チームは「コードを書く作業」から、「インフラのあり方を定義し、AIの成果物を評価する」役割へと進化することが期待できます。
コメント