- Codex CLIはTerraformコードの自動生成・リファクタリング・セキュリティレビューを一気通貫で実行可能
- 自然言語でインフラ要件を伝えるだけでHCLコードが生成され、初学者でもIaCの品質を担保できる
- IaC自動化スキルを持つSESエンジニアの単価は月80〜130万円と高水準
「Terraformを書けるようになりたいが、HCLの構文と各クラウドプロバイダーのリソース定義を覚えるのが大変」——インフラエンジニアを目指すSESエンジニアの多くが直面する壁です。
OpenAI Codex CLIを活用すれば、自然言語でインフラ要件を伝えるだけで、ベストプラクティスに沿ったTerraformコードを生成できます。 さらに既存コードのセキュリティレビューやコスト最適化の提案まで一気通貫で対応可能です。
本記事はOpenAI Codex CLI完全攻略シリーズ Ep.55として、TerraformとCodex CLIの連携テクニックを基礎から実践まで網羅的に解説します。
- Codex CLIでTerraformコードを自動生成する基本ワークフロー
- 既存Terraformコードのレビュー・リファクタリング手法
- セキュリティ・コンプライアンスチェックの自動化
- マルチクラウド対応のIaCコード管理戦略
- SES案件でIaCスキルを活かすためのキャリア戦略
Terraform × Codex CLIの基本セットアップ
前提条件と準備
Codex CLIでTerraform開発を始めるには、以下の環境が必要です。
# Codex CLIのインストール(最新版)
npm install -g @openai/codex
# Terraformのインストール
brew install terraform # macOS
# または tfenv で複数バージョン管理
brew install tfenv
tfenv install 1.9.0
tfenv use 1.9.0
# バージョン確認
codex --version
terraform --version
Codex CLIの設定最適化
Terraformプロジェクト用にCodex CLIの設定を最適化しましょう。
# codex.md(プロジェクトルートに配置)
## プロジェクト概要
AWS上にマルチAZ構成のWebアプリケーション基盤を構築するTerraformプロジェクト
## Terraformルール
- Terraform 1.9.x / AWS Provider 5.x を使用
- HCL2 形式で記述
- モジュール化を推奨(再利用可能な単位で分割)
- 変数はvariables.tfに集約
- 出力はoutputs.tfに集約
- 命名規則: リソース名はsnake_case、タグはPascalCase
## セキュリティ基準
- S3バケットは常に暗号化+バージョニング有効
- セキュリティグループは最小権限の原則
- IAMポリシーは最小権限、ワイルドカード禁止
- パブリックアクセスは明示的に許可された場合のみ
Terraformコードの自動生成
VPCネットワーク構築の例
自然言語でインフラ要件を伝え、Terraformコードを生成する基本的な流れです。
codex "以下の要件でAWS VPCを構築するTerraformコードを生成してください:
- CIDR: 10.0.0.0/16
- AZ: ap-northeast-1a, ap-northeast-1c の2つ
- パブリックサブネット: 各AZに1つ(/24)
- プライベートサブネット: 各AZに1つ(/24)
- NATゲートウェイ: 各AZに1つ(高可用性)
- インターネットゲートウェイ: 1つ
- タグ付け: Environment=production, Project=web-app"
Codex CLIは以下のような構造化されたTerraformコードを生成します。
# vpc.tf - 自動生成されたVPC構成
locals {
azs = ["ap-northeast-1a", "ap-northeast-1c"]
public_subnets = ["10.0.1.0/24", "10.0.2.0/24"]
private_subnets = ["10.0.11.0/24", "10.0.12.0/24"]
common_tags = {
Environment = "production"
Project = "web-app"
ManagedBy = "terraform"
}
}
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
enable_dns_hostnames = true
enable_dns_support = true
tags = merge(local.common_tags, {
Name = "web-app-vpc"
})
}
resource "aws_internet_gateway" "main" {
vpc_id = aws_vpc.main.id
tags = merge(local.common_tags, {
Name = "web-app-igw"
})
}
ECS Fargate構成の自動生成
コンテナ基盤の構成も自然言語で指示できます。
codex "以下のECS Fargate構成をTerraformで作成してください:
- クラスター名: web-app-cluster
- サービス: Nginx (ポート80)
- タスク定義: vCPU 0.5, メモリ 1024MB
- ALB: パブリックサブネットに配置
- オートスケーリング: CPU 70%で2-10台
- CloudWatch Logsにコンテナログを出力
- 既存のVPC (module.vpc) を参照"
モジュール化の自動生成
codex "現在のmain.tfを分析して、以下の再利用可能なモジュールに分割してください:
1. networking - VPC、サブネット、ルートテーブル
2. compute - ECS、タスク定義、オートスケーリング
3. loadbalancer - ALB、ターゲットグループ、リスナー
4. monitoring - CloudWatch、アラーム
各モジュールのvariables.tf、outputs.tf、README.mdも生成してください。"

既存Terraformコードのレビューと改善
セキュリティレビューの自動化
codex "以下のTerraformコードをセキュリティ観点でレビューしてください:
$(cat main.tf)
チェック項目:
1. IAMポリシーのワイルドカード使用
2. セキュリティグループの過度に広いルール
3. S3バケットのパブリックアクセス設定
4. 暗号化設定の漏れ
5. ログ出力の設定漏れ
リスクレベル(Critical/High/Medium/Low)とともに修正案を提示してください。"
コスト最適化レビュー
codex "以下のTerraformコードのコスト最適化ポイントを分析してください:
$(cat main.tf)
以下の観点でアドバイスしてください:
1. リザーブドインスタンス vs オンデマンドの判断
2. 不要に高スペックなリソースの検出
3. 開発環境向けのコスト削減オプション
4. スケジュールによるリソース停止設定"
terraform planの差分レビュー
# terraform planの出力をCodex CLIで解析
terraform plan -no-color > plan_output.txt
codex "以下のterraform plan出力を分析して、
予期しない変更やリスクのある変更がないか確認してください:
$(cat plan_output.txt)
特に以下を重点チェック:
- destroyされるリソース
- in-place updateされるリソース
- セキュリティグループの変更
- データベースの変更(破壊的変更の可能性)"
IaCのテスト自動化
Terratest用テストコードの生成
codex "以下のTerraformモジュールに対するTerratestのテストコードを生成してください:
$(cat modules/networking/main.tf)
テスト項目:
1. VPCが正しいCIDRで作成されること
2. サブネットが指定AZに作成されること
3. NATゲートウェイが各AZに配置されること
4. プライベートサブネットからインターネットアクセスが可能なこと"
ポリシーテスト(OPA/Sentinel)の生成
codex "以下のセキュリティポリシーをOPA/Regoで実装してください:
1. S3バケットはサーバーサイド暗号化が必須
2. EC2インスタンスはIMDSv2のみ許可
3. RDSは暗号化ストレージが必須
4. セキュリティグループは0.0.0.0/0からのSSH(22番ポート)を禁止
5. すべてのリソースにEnvironmentタグが必要"
マルチクラウド対応戦略
AWS + GCP のマルチクラウドIaC
AWS VPCネットワークガイドとGoogle Cloud VPCネットワーキングの両方を扱うマルチクラウド案件も増えています。
codex "以下のAWS用Terraformモジュールを、
GCPでも動作するマルチクラウド対応に変換してください:
$(cat modules/networking/main.tf)
要件:
- terraform workspaceでAWS/GCPを切り替え可能
- 共通のvariables.tfで両クラウドのパラメータを管理
- プロバイダーはvariableで動的に選択"
Terraform Stateのリモートバックエンド設定
codex "Terraformのリモートバックエンドをセキュアに設定してください:
- バックエンド: S3 + DynamoDB(ステートロック)
- バケット暗号化: AES-256 + KMS
- バケットバージョニング: 有効
- アクセス制御: 特定IAMロールのみ許可
- ステートファイルのログ: CloudTrail連携"
CI/CDパイプラインとの統合
GitHub ActionsでのTerraform自動化
# .github/workflows/terraform.yml
name: Terraform CI/CD
on:
pull_request:
paths: ['terraform/**']
push:
branches: [main]
paths: ['terraform/**']
jobs:
terraform:
runs-on: ubuntu-latest
defaults:
run:
working-directory: terraform
steps:
- uses: actions/checkout@v4
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
- name: Terraform Init
run: terraform init
- name: Terraform Validate
run: terraform validate
- name: Terraform Plan
run: terraform plan -out=tfplan
- name: AI Review (PR only)
if: github.event_name == 'pull_request'
run: |
terraform show -no-color tfplan > plan.txt
codex --print "このterraform planをレビューし、
セキュリティ・コスト・可用性の観点でコメントしてください" \
< plan.txt >> $GITHUB_STEP_SUMMARY
Atlantisとの連携
codex "Atlantis用のatlantis.yamlを作成してください:
- projects: networking, compute, database
- 各projectはterraform/modules/配下
- autoplan: *.tf ファイル変更時に自動実行
- apply要件: 2名以上のApprove
- ワークフロー: plan → security-check → apply"
Terraformのリファクタリング
レガシーHCLコードのモダナイズ
SES現場では、Terraform 0.12以前の古いHCLコードに遭遇することがあります。
codex "以下のTerraform 0.11形式のコードをTerraform 1.9に移行してください:
$(cat legacy/main.tf)
移行ポイント:
1. HCL1 → HCL2 構文の更新
2. interpolation構文 '${var.xxx}' → var.xxx への変換
3. count → for_each への移行(適切な箇所)
4. 非推奨なリソース属性の更新
5. required_providers ブロックの追加"
Stateの安全な移行
codex "以下のterraform stateの移行スクリプトを作成してください:
- 旧: monolithic main.tf に全リソースが記述
- 新: modules/networking, modules/compute, modules/database に分割
移行手順:
1. terraform state mvコマンドのリスト生成
2. ドライランスクリプト(実際には実行しない)
3. 本番実行スクリプト(ロールバック手順付き)
4. 移行後の検証スクリプト(plan差分がないことを確認)"
SES案件でのIaCスキル活用
IaC案件の市場動向
Infrastructure as Code、特にTerraformスキルを持つSESエンジニアの需要は年々拡大しています。
| スキル | 単価目安(月額) | 需要傾向 |
|---|---|---|
| Terraform基本操作 | 60〜80万円 | 安定 |
| Terraform + AWS | 75〜100万円 | 高い |
| Terraform + マルチクラウド | 90〜120万円 | 急成長 |
| Terraform + CI/CD + セキュリティ | 100〜130万円 | 非常に高い |
スキルアップロードマップ
- フェーズ1(1-2ヶ月): Terraform基本構文 + AWSリソースの作成
- フェーズ2(2-3ヶ月): モジュール化 + State管理 + CI/CD連携
- フェーズ3(3-6ヶ月): セキュリティポリシー + コスト最適化 + マルチクラウド
- フェーズ4(6ヶ月〜): Codex CLIの高度な活用 + チームへの導入推進
面談でのアピールポイント
✅ TerraformでAWS環境を一から構築した実績
✅ CI/CDパイプラインとIaCの統合経験
✅ セキュリティポリシーのコード化(OPA/Sentinel)
✅ AI駆動開発ツールを活用したIaCの効率化
✅ マルチクラウド環境でのIaC運用経験
トラブルシューティング
よくある問題と解決方法
Q: Codex CLIが生成したコードでterraform validateがエラーになる
- プロバイダーバージョンを明示的に指定しているか確認
- codex.mdにTerraformバージョンとプロバイダーバージョンを記述する
- 生成後は必ず
terraform fmtとterraform validateを実行する
Q: 生成コードがベストプラクティスに沿っていない
- codex.mdにセキュリティ基準・命名規則を明記する
- Codex CLIのプロンプトエンジニアリングを参考に指示を具体化する
- tfsecやcheckovの出力をCodex CLIに渡して修正させる
Q: 大規模なTerraformプロジェクトでコンテキストが足りない
- モジュール単位でCodex CLIに渡す(全体を一度に渡さない)
- ワークスペース管理ガイドの手法でコンテキストを最適化する
まとめ — Codex CLIでIaCの品質と効率を両立する
OpenAI Codex CLIとTerraformの組み合わせは、インフラ構築の効率と品質を飛躍的に向上させます。
Codex CLI × Terraform活用のポイント:
- codex.mdにTerraformルールを明記して、生成コードの品質を担保する
- 自然言語→HCLの自動生成で、複雑なインフラ構成も素早く実装できる
- セキュリティ・コストのレビューを自動化し、本番投入前のリスクを低減する
- CI/CDパイプラインに統合して、IaCの継続的な品質管理を実現する
IaCスキルとAI駆動開発ツールの活用力を身につけて、SESエンジニアとしてのキャリアを加速させましょう。SES BASE でインフラ自動化・クラウドエンジニア案件を探してみてください。