smithery/takemo101

infra-workflow

Terraform/Docker Composeによるインフラ構築のワークフロー、ベストプラクティス、Well-Architected Framework対応を定義

Installation

$ npx skills add smithery/takemo101 --skill infra-workflow

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery/takemo101 · top by installs.

npx skills add smithery/takemo101

Browse all from smithery/takemo101

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 9,770 B
  • docs SUMMARY.md 168 B

History

  1. First recorded snapshot · 0 installs

SKILL.md

インフラワークフロー

本ドキュメントは、Terraform/Docker Composeによるインフラ構築のワークフローを定義します。


1. インフラワークフロー概要

flowchart TB
    subgraph INFRA["インフラワークフロー"]
        direction TB
        
        %% インフラ設計
        subgraph DESIGN["インフラ設計フェーズ"]
            D1["インフラ要件確認"]
            D2["インフラ設計書作成<br/>@infra-reviewer"]
            D3{"設計レビュー<br/>9点以上"}
            
            D1 --> D2 --> D3
            D3 -->|"不合格"| D2
        end
        
        %% Terraform
        subgraph TF["Terraform実装フェーズ"]
            TF1["Terraformコード実装"]
            TF2["terraform plan"]
            TF3{"Plan成功?"}
            TF4["セキュリティチェック<br/>@security-reviewer"]
            TF5{"レビュー<br/>9点以上"}
            
            TF1 --> TF2 --> TF3
            TF3 -->|"失敗"| TF1
            TF3 -->|"成功"| TF4 --> TF5
            TF5 -->|"不合格"| TF1
        end
        
        %% Docker Compose
        subgraph DC["Docker Compose実装フェーズ"]
            DC1["Docker Compose作成"]
            DC2["docker-compose up"]
            DC3{"起動成功?"}
            DC4{"レビュー<br/>9点以上"}
            
            DC1 --> DC2 --> DC3
            DC3 -->|"失敗"| DC1
            DC3 -->|"成功"| DC4
            DC4 -->|"不合格"| DC1
        end
        
        %% フロー接続
        D3 -->|"合格"| TF
        D3 -->|"合格"| DC
        TF5 -->|"合格"| TF_OUT[["terraform apply<br/>待機"]]
        DC4 -->|"合格"| DC_OUT[["ローカル環境<br/>準備完了"]]
    end

2. Terraformワークフロー

2.1 フェーズ

# フェーズ 内容 完了条件
1 要件確認 インフラ要件の確認 要件が明確
2 設計 インフラ設計書作成 レビュー9点以上
3 実装 Terraformコード実装 terraform plan 成功
4 セキュリティレビュー セキュリティチェック レビュー9点以上
5 適用 terraform apply(手動) 人間の承認後

2.2 Terraform ベストプラクティス

ディレクトリ構成

infrastructure/
├── terraform/
│   ├── environments/
│   │   ├── dev/
│   │   │   ├── main.tf
│   │   │   ├── variables.tf
│   │   │   ├── outputs.tf
│   │   │   └── terraform.tfvars
│   │   ├── staging/
│   │   └── production/
│   │
│   └── modules/
│       ├── networking/
│       │   ├── main.tf
│       │   ├── variables.tf
│       │   └── outputs.tf
│       ├── compute/
│       ├── database/
│       └── security/
│
└── docs/
    └── インフラ設計書.md

命名規則

リソース 命名規則 例
リソース名 {project}-{env}-{resource} myapp-prod-vpc
モジュール名 機能を表す単語 networking, compute
変数名 snake_case instance_type

必須設定

# provider バージョン固定
terraform {
  required_version = ">= 1.0.0"
  
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 5.0"
    }
  }
}

# 全変数にdescription必須
variable "instance_type" {
  type        = string
  description = "EC2インスタンスタイプ"
  default     = "t3.micro"
}

# 重要なoutputにはdescription必須
output "vpc_id" {
  description = "作成されたVPCのID"
  value       = aws_vpc.main.id
}

2.3 セキュリティチェック項目

カテゴリ チェック項目
ネットワーク セキュリティグループが最小権限か
IAM IAMポリシーが最小権限か
暗号化 RDS、S3、EBSが暗号化されているか
ログ CloudTrail、VPCフローログが有効か
公開設定 S3バケットがパブリックでないか
シークレット Secrets Managerが使用されているか

3. Docker Composeワークフロー

3.1 フェーズ

# フェーズ 内容 完了条件
1 要件確認 ローカル環境要件の確認 要件が明確
2 実装 Docker Compose作成 docker-compose up 成功
3 レビュー 設定レビュー レビュー9点以上
4 ドキュメント化 セットアップ手順の記載 README更新

3.2 Docker Compose ベストプラクティス

ディレクトリ構成

docker/
├── docker-compose.yml          # 本番用
├── docker-compose.dev.yml      # 開発用(上書き)
├── docker-compose.test.yml     # テスト用
├── .env.example                # 環境変数テンプレート
└── services/
    ├── backend/
    │   └── Dockerfile
    ├── frontend/
    │   └── Dockerfile
    └── nginx/
        └── nginx.conf

必須設定

version: '3.8'

services:
  backend:
    build:
      context: ./services/backend
      dockerfile: Dockerfile
    env_file:
      - .env
    networks:
      - app-network
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
      interval: 30s
      timeout: 10s
      retries: 3
    depends_on:
      db:
        condition: service_healthy

  db:
    image: postgres:15-alpine
    volumes:
      - db-data:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: ${DB_USER}
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_DB: ${DB_NAME}
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U ${DB_USER}"]
      interval: 10s
      timeout: 5s
      retries: 5

networks:
  app-network:
    driver: bridge

volumes:
  db-data:

3.3 開発環境用オーバーライド

# docker-compose.dev.yml
version: '3.8'

services:
  backend:
    volumes:
      - ./backend:/app          # ホットリロード用
      - /app/node_modules       # node_modules除外
    environment:
      - DEBUG=true
    ports:
      - "3000:3000"
      - "9229:9229"             # デバッグポート

  frontend:
    volumes:
      - ./frontend:/app
      - /app/node_modules
    ports:
      - "5173:5173"

3.4 チェック項目

カテゴリ チェック項目
バージョン version: '3.8' 以上か
ネットワーク 適切なネットワーク分離がされているか
ボリューム データ永続化が適切に設定されているか
環境変数 .env ファイルから参照しているか
ヘルスチェック healthcheckが設定されているか
依存関係 depends_onで適切な依存関係が設定されているか
セキュリティ 機密情報がハードコードされていないか

4. Well-Architected Framework対応

4.1 5つの柱

柱 確認項目
セキュリティ 暗号化、最小権限、ネットワーク分離、監査ログ
信頼性 Multi-AZ、Auto Scaling、バックアップ、DR
パフォーマンス効率 適切なインスタンスサイズ、キャッシュ、CDN
コスト最適化 不要リソース削除、Reserved/Spot活用
運用上の優秀性 IaC、CloudWatch、タグ付け、自動化

4.2 各柱のチェックリスト

セキュリティ

  • 全データの暗号化(at rest / in transit)
  • IAMポリシーは最小権限
  • セキュリティグループは最小権限
  • CloudTrailが有効
  • VPCフローログが有効
  • WAFの設定(該当する場合)

信頼性

  • Multi-AZ構成
  • Auto Scalingの設定
  • RDSの自動バックアップ
  • S3のバージョニング
  • DR計画の文書化

パフォーマンス効率

  • 適切なインスタンスタイプの選択
  • ElastiCacheの活用(該当する場合)
  • CloudFrontの活用(該当する場合)
  • RDSのリードレプリカ(該当する場合)

コスト最適化

  • 不要なリソースの削除
  • Reserved Instancesの検討
  • Spot Instancesの検討
  • S3ライフサイクルポリシー

運用上の優秀性

  • 全リソースにタグ付け
  • CloudWatch Alarmの設定
  • CloudWatch Logsへのログ集約
  • IaCによる完全な管理

5. 環境変数管理

5.1 Terraformからの環境変数出力

# outputs.tf
output "backend_env_vars" {
  description = "バックエンド用環境変数(非機密)"
  value = {
    DATABASE_HOST = aws_db_instance.main.address
    REDIS_HOST    = aws_elasticache_cluster.main.cache_nodes[0].address
    S3_BUCKET     = aws_s3_bucket.main.id
  }
}

output "backend_secrets_arn" {
  description = "Secrets Manager ARN"
  value       = aws_secretsmanager_secret.backend.arn
}

5.2 機密情報の管理

環境 管理方法
ローカル .env ファイル(.gitignore)
AWS Secrets Manager
CI/CD GitHub Secrets / GitLab CI Variables

変更履歴

日付 バージョン 変更内容
2026-01-02 1.0.0 初版作成(ai-frameworkからの取り込み)