terraform-aws-modules について
AWS インフラエンジニア向けの Terraform スキルです。再利用可能なモジュールや本番向け HCL の作成・レビューを支援し、state 管理、構成、バージョン固定、運用上の安全策を扱います。
主な機能
- 01再利用可能な AWS モジュール設計
- 02Terraform state と workspace の戦略
- 03Provider とモジュールのバージョン固定
- 04HCL の整形と検証
- 05リソース識別とタグ付けの実践
- 06state ロックの問題解決
活用シーン
- 01再利用可能な AWS インフラモジュールの作成
- 02Terraform コードのセキュリティレビュー
- 03チーム向け remote state の設計
- 04インフラの Terraform への移行
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill terraform-aws-modulesインストール後、Claude Code で/terraform-aws-modulesを入力して読み込まれたか確認します。
詳細
AWS 向け Terraform のエキスパートです。再利用可能なモジュール設計、状態管理、本番環境向けの HCL パターンを専門としています。
このスキルを使用する場合
- AWS リソース向けの再利用可能な Terraform モジュールを作成する場合
- Terraform コードをベストプラクティスとセキュリティの観点からレビューする場合
- リモート状態とワークスペースの戦略を設計する場合
- CloudFormation や手動セットアップから Terraform に移行する場合
このスキルを使用しない場合
- ユーザーが Terraform ではなく AWS CDK または CloudFormation を必要としている場合
- インフラストラクチャが AWS 以外のプロバイダー上にある場合
手順
- モジュールを
variables.tf、outputs.tf、main.tf、versions.tfに明確に分けて構成します。 - 破壊的変更を避けるため、プロバイダーとモジュールのバージョンを固定します。
- チーム環境ではリモート状態(S3 + DynamoDB ロック)を使用します。
- コミット前に
terraform fmtとterraform validateを実行します。 - 安定した ID が必要なリソースには
countではなくfor_eachを使用します。 - プロバイダーの
default_tagsブロックを使用して、すべてのリソースに一貫したタグを付けます。
例
例 1:再利用可能な VPC モジュール
# modules/vpc/variables.tf
variable "name" { type = string }
variable "cidr" {
type = string
default = "10.0.0.0/16"
}
variable "azs" { type = list(string) }
# modules/vpc/main.tf
resource "aws_vpc" "this" {
cidr_block = var.cidr
enable_dns_support = true
enable_dns_hostnames = true
tags = { Name = var.name }
}
# modules/vpc/outputs.tf
output "vpc_id" { value = aws_vpc.this.id }
例 2:リモート状態バックエンド
terraform {
backend "s3" {
bucket = "my-tf-state"
key = "prod/terraform.tfstate"
region = "us-east-1"
dynamodb_table = "tf-lock"
encrypt = true
}
}
ベストプラクティス
- ✅ 推奨:
versions.tfでプロバイダーのバージョンを固定します - ✅ 推奨: PR レビューで
terraform planの出力を使用します - ✅ 推奨: 状態を S3 に保存し、DynamoDB ロックと暗号化を使用します
- ❌ 非推奨: リソースの ID が重要な場合に
countを使用すること。代わりにfor_eachを使用します - ❌ 非推奨:
.tfstateファイルをバージョン管理にコミットすること
トラブルシューティング
問題: 失敗した apply の後に状態ロックが解除されない
解決策: ほかの操作が実行されていないことを確認してから、terraform force-unlock <LOCK_ID> を実行します。
制限事項
- タスクが上記の対象範囲に明確に該当する場合にのみ、このスキルを使用してください。
- 出力を、環境固有の検証、テスト、専門家によるレビューの代わりとして扱わないでください。
- 必要な入力、権限、安全上の境界、または成功基準が不足している場合は、作業を中止して確認を求めてください。
実行の境界
実際の Terraform バージョンでサポートされているバックエンドロックを選択してください。DynamoDB の例はバージョンに依存する旧式の設定であり、普遍的な要件ではありません。承認を得て適用する前に、アカウント、バックエンド、保存済みの plan を確認してください。状態や plan に含まれるシークレットは非公開に保ち、別の操作が実行中の場合は決して強制的にロックを解除しないでください。
コメント
Markdown 対応