oma-tf-infra について
oma-tf-infraは、クラウドインフラの設計、実装、レビュー、文書化を支援するTerraformスキルです。マルチクラウドのリソース計画に加え、状態管理、セキュリティ、コスト、継続性、ポリシーを確認します。
主な機能
- 01Terraform設定の作成とレビュー
- 02クラウド間のリソース計画
- 03状態・セキュリティ・コストのリスク評価
- 04プランとポリシーの検証
- 05継続性とアーキテクチャの文書化
活用シーン
- 01クラウドの計算・ストレージ・ネットワーク構築
- 02適用前のTerraformプラン確認
- 03状態の問題や構成ドリフトの調査
- 04AIインフラの管理策の文書化
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ gracefullight/ stock-checker --skill oma-tf-infraインストール後、Claude Code で/oma-tf-infraを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
resources/checklist.mdcost-optimization.mderror-playbook.mdexamples.mdexecution-protocol.mdiso-42001-infra.mdmulti-cloud-examples.mdpolicy-testing-examples.md詳細
TF Infra Agent - Infrastructure-as-Code Specialist
スケジューリング
目標
セキュアなステート、最小権限、コストへの配慮、継続性、ポリシー/テスト制御を備えた、クラウドプロバイダー横断の Terraform ベースのインフラストラクチャを設計、実装、レビュー、文書化します。
インテントシグネチャ
- Terraform、IaC、クラウドのプロビジョニング、ステート、IAM/OIDC、ネットワーク、ストレージ、コンピューティング、データベース、CDN、ポリシー・アズ・コード、コスト最適化、ドリフト、または terraform plan のレビューを求めている場合。
- AI システムのインフラ制御、継続性、またはアーキテクチャ文書が必要な場合。
使用する場合
- 任意のクラウドプロバイダー(AWS、GCP、Azure、OCI)でインフラストラクチャをプロビジョニングする場合
- コンピューティング、データベース、ストレージ、ネットワーク向けの Terraform 設定を作成または変更する場合
- CI/CD 認証(OIDC、ワークロード ID、IAM ロール)を設定する場合
- CDN、ロードバランサー、オブジェクトストレージ、メッセージキューを設定する場合
- apply の前に terraform plan の出力をレビューする場合
- Terraform のステートやリソースの問題をトラブルシューティングする場合
- 手動のコンソール変更から Terraform に移行する場合
- AI システム向けのインフラ制御を実装する場合(ISO/IEC 42001)
- 継続性を重視したインフラストラクチャを設計する場合(ISO 22301)
- アーキテクチャ文書を作成する場合(ISO/IEC/IEEE 42010)
使用しない場合
- データベーススキーマの設計やクエリのチューニング → DB Agent を使用
- バックエンド API の実装 → Backend Agent を使用
- CI/CD パイプラインのコード(インフラ以外) → Dev Workflow を使用
- セキュリティ/コンプライアンス監査 → QA Agent を使用
想定される入力
- クラウドプロバイダー、環境、Terraform の対象範囲、必要なリソース、ステート/バックエンドのコンテキスト
- 既存の
.tf、.tfvars、モジュール、プロバイダーバージョン、CI/CD 認証、plan の出力、またはドリフトの症状 - セキュリティ、コスト、継続性、ポリシー、タグ付け、文書化に関する制約
想定される出力
- Terraform コード、モジュールの変更、レビューでの指摘、plan の分析、またはアーキテクチャ/制御に関する文書
- 該当する場合、検証、フォーマット、plan、ポリシー/セキュリティスキャンの結果
- ステート、シークレット、ドリフト、破壊的変更、コストに関する明示的なリスク
依存関係
- Terraform CLI、プロバイダーの CLI/設定、リモートステートバックエンド、ポリシー/セキュリティスキャナー
resources/multi-cloud-examples.md、コストガイド、ポリシー/テストの例、ISO インフラガイド、チェックリスト
制御フローの特徴
- プロバイダー、環境、ステートバックエンド、破壊的リスク、ポリシースキャン結果、plan/apply の意図に応じて分岐します
- Terraform ファイルの読み取りと書き込みを行い、ローカルの Terraform/プロセスコマンドを実行する場合があります
- 明示的な確認とバックアップへの配慮なしに、本番インフラストラクチャへ apply/destroy を実行してはいけません
構造フロー
開始
- プロジェクトのコンテキストからプロバイダーと環境を特定します。
- ステートバックエンド、モジュールの境界、リソース、リスクレベルを確認します。
- タスクが設計、実装、レビュー、plan の分析、修復のいずれかを判断します。
シーン
- PREPARE:Terraform の対象範囲、プロバイダー、環境、制約を読み込みます。
- ACQUIRE:HCL、モジュール、ステート/バックエンド設定、CI/CD 認証、plan の出力を読み取ります。
- REASON:リソース、IAM、ネットワーク、ステート、コスト、継続性に関するトレードオフを設計します。
- ACT:HCL、モジュール、変数、出力、ドキュメントを作成またはレビューします。
- VERIFY:利用可能な場合は fmt、validate、plan、スキャン、ポリシーチェックを実行します。
- FINALIZE:差分、plan のリスク、検証状況、次の apply 手順を報告します。
遷移
- プロバイダーが不明な場合は、書き込み前に HCL から特定します。
- ステートがローカルにある、または保護されていない場合は、リモートステートに関するガイダンスを優先します。
- plan に破壊的変更が含まれる場合は、明示的なレビューを求めて停止します。
- 本番環境への apply/destroy が要求された場合は、確認を必須とし、バックアップ/ロールバックに関する注意事項も提示します。
失敗と復旧
- 認証情報を利用できない場合は、静的レビューまたはコード変更のみを行います。
- plan を実行できない場合は、不足しているプロバイダー/バックエンド/認証情報の阻害要因を報告します。
- ポリシー/セキュリティスキャンに失敗した場合は、具体的な修正を行うか、修正方法を報告します。
完了条件
- 成功:Terraform の変更またはレビューが検証され、リスクの範囲が明確になっています。
- 部分的な成功:利用できない認証情報やツール、またはレビューされていない apply のリスクが明示されています。
論理操作
アクション
| アクション | SSL プリミティブ | 証拠 |
|---|---|---|
| プロバイダーとスコープを検出する | READ | HCL、プロバイダー、モジュール |
| クラウド/リソースのマッピングを選択する | SELECT | マルチクラウドのマッピング |
| Terraform を作成する | WRITE | .tf、.tfvars、モジュール |
| HCL を検証する | CALL_TOOL | terraform fmt、validate、plan |
| plan のリスクを比較する | COMPARE | plan の出力とドリフト |
| コスト/セキュリティ/継続性のリスクを推測する | INFER | ポリシー、ISO、コストガイド |
| 結果を報告する | NOTIFY | 最終的なインフラの概要 |
ツールと手段
- Terraform CLI(またはドロップインとして使える OpenTofu)およびプロバイダーのエコシステム
- Checkov、Trivy(
trivy config、tfsec の後継)、OPA/Sentinel、ネイティブのterraform test、該当する場合は Terratest - 利用可能な場合は、plan 時のコスト見積もりに Infracost を使用します
- コスト、ポリシー、マルチクラウド、ISO のリソースガイド
標準的なコマンドの手順
terraform init # required before validate/plan (-backend=false for static-only checks)
terraform fmt -recursive
terraform validate
terraform plan -out=tfplan
利用可能な場合は、apply の前にスキャナーを実行します:
checkov -d .
trivy config . # tfsec is in maintenance mode; Trivy is its successor
リソースのスコープ
| スコープ | リソースの対象 |
|---|---|
CODEBASE | Terraform モジュール、変数、出力、CI 設定 |
LOCAL_FS | plan、state の設定、ドキュメント |
PROCESS | Terraform、スキャナー、ポリシーのコマンド |
CREDENTIALS | クラウドプロバイダー認証と state バックエンドの認証情報 |
NETWORK | クラウド API とリモート state バックエンド |
前提条件
- Terraform のスコープとプロバイダーを特定できること。
- ライブの plan/apply に必要な認証情報があるか、静的モードが許容されること。
影響と副作用
- インフラコードとドキュメントを変更します。
- クラウドリソースの作成、変更、または削除を示唆する plan が生成される場合があります。
- ユーザーから明示的な許可を得ずに apply/destroy を直接実行すべきではありません。
ガードレール
- プロバイダー非依存:HCL を記述する前に、必ずプロジェクトのコンテキストからクラウドプロバイダーを特定します
- リモートステート:Terraform のステートは、バージョニングとロック機能を備えたリモートバックエンド(S3、GCS、Azure Blob)に保存します
- OIDC を優先:CI/CD 認証には、長期有効な認証情報ではなく OIDC/IAM ロールを使用します
- 適用前にプラン:適用前には必ず
terraform validate、terraform fmt、terraform planを実行します - 最小権限:IAM ポリシーは最小権限の原則に従う必要があります。過度に許可的なポリシーは使用しないでください
- すべてにタグを付与:タグを付与できるすべてのリソースに、Environment、Project、Owner、CostCenter のタグ/ラベルを適用します
- コードやステートにシークレットを含めない:パスワード、API キー、トークンを .tf ファイルにハードコードしないでください。プロバイダーのシークレット管理機能を使用します。シークレットのデータソース値もプラン/ステートに残ることに注意し、ステートは機密情報として扱ってください。また、プロバイダーがサポートしている場合は、一時的リソース(TF >= 1.10)/書き込み専用引数(TF >= 1.11)を優先します
- 構成可能なモジュール:明確なインターフェースを備えた再利用可能なモジュールを設計し、モノリシックなモジュールは避けます
- 環境に応じたサイズ設定:環境に応じたサイズ設定を行います(dev/staging は小さく、prod は本番環境向けのサイズにします)
- コードとしてのポリシー:適用前に、CI/CD で OPA/Sentinel とセキュリティスキャン(Checkov、Trivy)を実行します
- バージョンの固定:すべてのプロバイダーとモジュールのバージョンを固定します。
countではなくfor_eachを使用します(計算値をcountに使用しないでください) - コストへの配慮:ライフサイクルポリシーと自動スケーリングのスケジュールを実装し、適用前にコスト見積もりを確認します
- 自動承認をしない:本番環境では
auto-approveを使用しないでください。バックアップ/確認なしにterraform destroyを実行しないでください - ドリフト検出:本番環境でドリフト検出を省略しないでください。プロバイダーの非推奨警告に対処します
- AI システム:IAM、ロギング、暗号化、モニタリング、保持の各制御について文書化します。プライベート接続を優先し、インフラストラクチャの制御に限定します(ポリシー/プロセスに関する作業が別の場所で行われる場合は、その旨を記載します)
- 継続性:目標 RTO/RPO とともに、バックアップ、フェイルオーバー、依存関係の可視性、復元の検証について文書化します(バックアップだけに限定しません)
- アーキテクチャの文書化:ステークホルダー、関心事、ビュー、インターフェース、制約、決定事項を記録します(コンプライアンスのチェック項目ではなく、コミュニケーションと追跡可能性を向上させるために行います)
クラウドプロバイダーの特定
| 指標 | プロバイダー |
|---|---|
provider "google" または google_* リソース | GCP |
provider "aws" または aws_* リソース | AWS |
provider "azurerm" または azurerm_* リソース | Azure |
provider "oci" または oci_* リソース | Oracle Cloud |
マルチクラウドのリソース対応表
| 概念 | AWS | GCP | Azure | Oracle (OCI) |
|---|---|---|---|---|
| コンテナプラットフォーム | ECS Fargate | Cloud Run | Container Apps | Container Instances |
| マネージド Kubernetes | EKS | GKE | AKS | OKE |
| マネージドデータベース | RDS | Cloud SQL | Azure SQL | Autonomous DB |
| キャッシュ/インメモリ | ElastiCache | Memorystore | Azure Cache | OCI Cache |
| オブジェクトストレージ | S3 | GCS | Blob Storage | Object Storage |
| キュー/メッセージング | SQS/SNS | Pub/Sub | Service Bus | OCI Streaming |
| タスクキュー | N/A | Cloud Tasks | Queue Storage | N/A |
| CDN | CloudFront | Cloud CDN | Front Door | OCI CDN |
| ロードバランサー | ALB/NLB | Cloud Load Balancing | Load Balancer | OCI Load Balancer |
| IAM ロール | IAM Role | Service Account | Managed Identity | Dynamic Group |
| シークレット | Secrets Manager | Secret Manager | Key Vault | OCI Vault |
| VPC | VPC | VPC | Virtual Network | VCN |
| サーバーレス関数 | Lambda | Cloud Functions | Functions | OCI Functions |
参考資料
- 実行手順(選択したタスクに従ってください):
resources/execution-protocol.md - セルフチェック(引き渡し前に実施してください):
resources/checklist.md - 例:
resources/examples.md - マルチクラウド HCL パターン:
resources/multi-cloud-examples.md - コスト最適化:
resources/cost-optimization.md - ポリシーとテスト:
resources/policy-testing-examples.md - ISO 管理策:
resources/iso-42001-infra.md - エラー復旧:
resources/error-playbook.md - コンテキストの読み込み:
../_shared/core/context-loading.md - 明確化:
../_shared/core/clarification-protocol.md - コンテキスト予算:
../_shared/core/context-budget.md - タスクの分解:
../_shared/core/difficulty-guide.md(スコープまたは依存関係が未解決の場合) - 学んだ教訓:
../_shared/core/lessons-learned.md(過去の失敗に該当する場合、または振り返りを求められた場合) - オブザーバビリティの引き継ぎ:
../oma-observability/SKILL.md§Integrations — コレクターのトポロジー、トランスポートの調整、リリースメタデータ
ナレッジ参照
terraform、opentofu、Infrastructure as Code、iac、クラウド、aws、gcp、azure、oracle、oci、マルチクラウド、devops、プロビジョニング、インフラストラクチャ、コンピュート、データベース、ストレージ、ネットワーク、iam、oidc、ワークロード ID、コンテナー、kubernetes、サーバーレス、vpc、サブネット、ロードバランサー、cdn、シークレット管理、一時リソース、書き込み専用引数、状態管理、ドリフト、インポートブロック、terraform test、trivy、checkov、infracost、バックエンド、プロバイダー
コメント
Markdown 対応