Back to skills
extension
Category: Development & EngineeringNo API key required

generate-module

Generate and manage Terraform modules. Can be initiated with terms like 'create module', 'generate module', 'new module', 'make module', 'module structure', 'tf module', 'add terraform module', 'module template', 'module scaffold'.

personAuthor: jakexiaohubgithub

Module Generator

Terraform モジュールのスキャフォールドを生成します。

対応操作

| 操作 | トリガー例 | |------|-----------| | モジュール作成 | 「モジュール作成」「module 作って」 | | 構造確認 | 「モジュール構造」「module 一覧」 | | テンプレート | 「モジュールテンプレート」 |

実行手順

1. モジュール情報の確認

## モジュール作成

作成するモジュールの情報を教えてください:

1. モジュール名(例: vpc, ec2, rds)
2. 作成場所(デフォルト: modules/)
3. 用途(例: VPC ネットワーク構築、EC2 インスタンス作成)

2. ディレクトリ構造の作成

mkdir -p modules/{module_name}

3. ファイルの生成

main.tf

# {Module Name} Module
#
# {用途の説明}

# TODO: リソース定義を追加

variables.tf

# 入力変数

variable "name" {
  description = "リソースの名前プレフィックス"
  type        = string
}

variable "environment" {
  description = "環境名(dev, stg, prod)"
  type        = string
  default     = "dev"
}

variable "tags" {
  description = "リソースに付与するタグ"
  type        = map(string)
  default     = {}
}

# TODO: 必要な変数を追加

outputs.tf

# 出力値

# TODO: 出力値を追加
# output "id" {
#   description = "リソースの ID"
#   value       = aws_xxx.main.id
# }

versions.tf

terraform {
  required_version = ">= 1.0.0"

  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = ">= 5.0.0"
    }
  }
}

README.md

# {Module Name} Module

{用途の説明}

## 使い方

\`\`\`hcl
module "{module_name}" {
  source = "./modules/{module_name}"

  name        = "example"
  environment = "dev"
  tags = {
    Project = "example"
  }
}
\`\`\`

## 入力変数

| 変数 | 説明 | 型 | デフォルト | 必須 |
|------|------|-----|----------|------|
| name | リソースの名前プレフィックス | string | - | ✅ |
| environment | 環境名 | string | dev | |
| tags | リソースに付与するタグ | map(string) | {} | |

## 出力値

| 出力 | 説明 |
|------|------|
| (TODO) | |

## 依存関係

- Terraform >= 1.0.0
- AWS Provider >= 5.0.0
\`\`\`

4. 出力フォーマット

## モジュール作成完了

### 作成されたファイル

modules/{module_name}/
├── main.tf          # リソース定義
├── variables.tf     # 入力変数
├── outputs.tf       # 出力値
├── versions.tf      # バージョン制約
└── README.md        # ドキュメント

### 次のステップ

1. `main.tf` にリソース定義を追加
2. `variables.tf` に必要な変数を追加
3. `outputs.tf` に出力値を追加
4. `README.md` を更新

### 使い方

\`\`\`hcl
module "{module_name}" {
  source = "./modules/{module_name}"

  name        = "example"
  environment = "dev"
}
\`\`\`

モジュール設計のベストプラクティス

命名規則

  • モジュール名は小文字とハイフン(例: vpc-network
  • 変数名は小文字とアンダースコア(例: instance_type

変数設計

  • 必須変数は default を設定しない
  • オプション変数は適切なデフォルト値を設定
  • description は必ず記載
  • type は必ず指定

出力設計

  • モジュール外から参照される値は必ず出力
  • description は必ず記載
  • センシティブな値は sensitive = true

注意事項

  • ✅ モジュールは再利用可能な単位で設計
  • ✅ 変数と出力には必ず description を記載
  • ✅ README.md で使い方を文書化
  • ⚠️ モジュール内でハードコードを避ける