mcpField
S
senior-devops

senior-devops

github.com/alirezarezvaniクラウド・DevOps29.0k1.0k 回インストール今日更新
リポジトリ

senior-devops について

CI/CDパイプライン、Terraformモジュール、Kubernetesのデプロイマニフェストと手順書を作成するDevOpsスキルです。ブルーグリーンまたはローリング方式に対応し、ヘルスチェックやロールバックの手順を生成しますが、クラスタへの適用は行いません。

主な機能

  1. 01GitHub ActionsまたはCircleCIのパイプライン生成
  2. 02Terraformモジュールの生成と検証
  3. 03Kubernetesデプロイマニフェストの作成
  4. 04デプロイ手順書とロールバック手順の生成
  5. 05デプロイ環境の状態分析

活用シーン

  1. 01ビルド、テスト、デプロイのパイプライン構築
  2. 02AWS、GCP、Azure向けIaCモジュールの作成
  3. 03ヘルスチェック付きKubernetesデプロイの準備

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alirezarezvani/claude-skills --skill senior-devops

インストール後、Claude Code で/senior-devopsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
cicd_pipeline_guide.md
deployment_strategies.md
infrastructure_as_code.md
scripts/
deployment_manager.py
pipeline_generator.py
terraform_scaffolder.py

詳細

シニア DevOps

最新のツールとベストプラクティスを備えた、シニア DevOps 向けの包括的なツールキットです。

クイックスタート

主な機能

このスキルでは、自動化スクリプトを通じて3つの主要な機能を提供します。

# Script 1: Pipeline Generator — scaffolds CI/CD pipelines for GitHub Actions or CircleCI
python scripts/pipeline_generator.py ./app --platform=github --stages=build,test,deploy

# Script 2: Terraform Scaffolder — generates and validates IaC modules for AWS/GCP/Azure
python scripts/terraform_scaffolder.py ./infra --provider=aws --module=ecs-service --verbose

# Script 3: Deployment Manager — generates deployment manifests + runbooks with rollback support
python3 scripts/deployment_manager.py deploy --env=staging --image=app:1.2.3 --strategy=blue-green --verbose --json

主な機能

1. パイプラインジェネレーター

GitHub Actions または CircleCI 向けの CI/CD パイプライン設定をひな形から作成します。ビルド、テスト、セキュリティスキャン、デプロイの各ステージを含みます。

例 — GitHub Actions のワークフロー:

# .github/workflows/ci.yml
name: CI/CD Pipeline
on:
  push:
    branches: [main, develop]
  pull_request:
    branches: [main]

jobs:
  build-and-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'npm'
      - run: npm ci
      - run: npm run lint
      - run: npm test -- --coverage
      - name: Upload coverage
        uses: codecov/codecov-action@v4

  build-docker:
    needs: build-and-test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build and push image
        uses: docker/build-push-action@v5
        with:
          push: ${{ github.ref == 'refs/heads/main' }}
          tags: ghcr.io/${{ github.repository }}:${{ github.sha }}

  deploy:
    needs: build-docker
    if: github.ref == 'refs/heads/main'
    runs-on: ubuntu-latest
    steps:
      - name: Deploy to ECS
        run: |
          aws ecs update-service \
            --cluster production \
            --service app-service \
            --force-new-deployment

使用方法:

python scripts/pipeline_generator.py <project-path> --platform=github|circleci --stages=build,test,deploy
2. Terraform スキャフォルダー

Terraform モジュールを生成、検証し、プランを作成します。モジュール構造の一貫性を保ち、apply の前に必ず terraform validate と terraform plan を実行します。

例 — AWS ECS サービスモジュール:

# modules/ecs-service/main.tf
resource "aws_ecs_task_definition" "app" {
  family                   = var.service_name
  requires_compatibilities = ["FARGATE"]
  network_mode             = "awsvpc"
  cpu                      = var.cpu
  memory                   = var.memory

  container_definitions = jsonencode([{
    name      = var.service_name
    image     = var.container_image
    essential = true
    portMappings = [{
      containerPort = var.container_port
      protocol      = "tcp"
    }]
    environment = [for k, v in var.env_vars : { name = k, value = v }]
    logConfiguration = {
      logDriver = "awslogs"
      options = {
        awslogs-group         = "/ecs/${var.service_name}"
        awslogs-region        = var.aws_region
        awslogs-stream-prefix = "ecs"
      }
    }
  }])
}

resource "aws_ecs_service" "app" {
  name            = var.service_name
  cluster         = var.cluster_id
  task_definition = aws_ecs_task_definition.app.arn
  desired_count   = var.desired_count
  launch_type     = "FARGATE"

  network_configuration {
    subnets          = var.private_subnet_ids
    security_groups  = [aws_security_group.app.id]
    assign_public_ip = false
  }

  load_balancer {
    target_group_arn = aws_lb_target_group.app.arn
    container_name   = var.service_name
    container_port   = var.container_port
  }
}

使用方法:

python scripts/terraform_scaffolder.py <target-path> --provider=aws|gcp|azure --module=ecs-service|gke-deployment|aks-service [--verbose]
3. デプロイマネージャー

ブルー/グリーンまたはローリング戦略向けの Kubernetes デプロイメントマニフェストと、順序立てた kubectl ランブックを生成します。トラフィック切り替え前のヘルスチェックゲートと、ロールバック用ランブックも含みます。このツールはマニフェストを書き込み、コマンドを表示しますが、クラスターに適用することはありません。そのため、すべての変更を人が確認できます。

例 — Kubernetes のブルー/グリーンデプロイ(blue-slot 固有の要素):

# k8s/deployment-blue.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-blue
  labels:
    app: myapp
    slot: blue      # slot label distinguishes blue from green
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
      slot: blue
  template:
    metadata:
      labels:
        app: myapp
        slot: blue
    spec:
      containers:
        - name: app
          image: ghcr.io/org/app:1.2.3
          readinessProbe:       # gate: pod must pass before traffic switches
            httpGet:
              path: /healthz
              port: 8080
            initialDelaySeconds: 10
            periodSeconds: 5
          resources:
            requests:
              cpu: "250m"
              memory: "256Mi"
            limits:
              cpu: "500m"
              memory: "512Mi"

使用方法:

python scripts/deployment_manager.py deploy \
  --env=staging|production \
  --image=app:1.2.3 \
  --strategy=blue-green|rolling \
  --health-check-url=https://app.example.com/healthz

python scripts/deployment_manager.py rollback --env=production --to-version=1.2.2
python scripts/deployment_manager.py --analyze --env=production   # audit current state

リソース

  • パターンリファレンス:references/cicd_pipeline_guide.md — CI/CD パターン、ベストプラクティス、アンチパターンの詳細
  • ワークフローガイド:references/infrastructure_as_code.md — IaC の手順、最適化、トラブルシューティング
  • 技術ガイド:references/deployment_strategies.md — デプロイ戦略の設定、セキュリティ上の考慮事項、スケーラビリティ
  • ツールスクリプト:scripts/ ディレクトリ

開発ワークフロー

1. インフラストラクチャの変更(Terraform)
# Scaffold or update module
python scripts/terraform_scaffolder.py ./infra --provider=aws --module=ecs-service --verbose

# Validate and plan — review diff before applying
terraform -chdir=infra init
terraform -chdir=infra validate
terraform -chdir=infra plan -out=tfplan

# Apply only after plan review
terraform -chdir=infra apply tfplan

# Verify resources are healthy
aws ecs describe-services --cluster production --services app-service \
  --query 'services[0].{Status:status,Running:runningCount,Desired:desiredCount}'
2. アプリケーションのデプロイ
# Generate or update pipeline config
python scripts/pipeline_generator.py . --platform=github --stages=build,test,security,deploy

# Build and tag image
docker build -t ghcr.io/org/app:$(git rev-parse --short HEAD) .
docker push ghcr.io/org/app:$(git rev-parse --short HEAD)

# Deploy with health-check gate
python scripts/deployment_manager.py deploy \
  --env=production \
  --image=app:$(git rev-parse --short HEAD) \
  --strategy=blue-green \
  --health-check-url=https://app.example.com/healthz

# Verify pods are running
kubectl get pods -n production -l app=myapp
kubectl rollout status deployment/app-blue -n production

# Switch traffic after verification
kubectl patch service app-svc -n production \
  -p '{"spec":{"selector":{"slot":"blue"}}}'
3. ロールバック手順
# Immediate rollback via deployment manager
python scripts/deployment_manager.py rollback --env=production --to-version=1.2.2

# Or via kubectl
kubectl rollout undo deployment/app -n production
kubectl rollout status deployment/app -n production

# Verify rollback succeeded
kubectl get pods -n production -l app=myapp
curl -sf https://app.example.com/healthz || echo "ROLLBACK FAILED — escalate"

マルチクラウドの相互参照

クラウド固有の詳細については、以下の関連スキルを使用してください。

スキルクラウド使用する場面
aws-solution-architectAWSECS/EKS、Lambda、VPC 設計、コスト最適化
azure-cloud-architectAzureAKS、App Service、Virtual Networks、Azure DevOps
gcp-cloud-architectGCPGKE、Cloud Run、VPC、Cloud Build (近日公開)

マルチクラウドと単一クラウドの選択:

  • 単一クラウド(デフォルト)— 運用の複雑さを軽減し、マネージドサービスとの統合を深め、コミットメント割引によるコスト削減効果を高めます
  • マルチクラウド — コンプライアンス/データレジデンシーの要件、異なるクラウドを利用する企業の買収、または各プロバイダーの最適なサービスの組み合わせが必要な場合(例:コンピューティングに AWS、ML に GCP)に必要です
  • ハイブリッド — オンプレミスとクラウドの併用です。規制対象のワークロードをオンプレミスに置く必要がある一方、バーストワークロードや非機密ワークロードはクラウドで実行する場合に使用します

まずは単一クラウドから始めてください。理論上の冗長性のためではなく、具体的なビジネス上またはコンプライアンス上の要件がある場合にのみ、2つ目のクラウドを追加してください。


クラウドに依存しない IaC

Terraform / OpenTofu(デフォルトの選択肢)

Terraform(またはそのオープンソースフォークである OpenTofu)は、ほとんどのチームに推奨される IaC ツールです。

  • AWS、Azure、GCP、その他3,000以上のプロバイダーで共通の言語(HCL)を使用できます
  • リモートバックエンド(S3、GCS、Azure Blob)によるステート管理に対応しています
  • apply 前にプランを確認するワークフローにより、予期しないドリフトを防ぎます
  • モジュール構造、ステートの分離、CI/CD との統合については、terraform-patterns を参照してください
Pulumi(プログラミング言語による IaC)

チームが HCL よりも TypeScript、Python、Go、または C# を強く希望する場合は、Pulumi を選択してください。

  • 完全なプログラミング言語なので、ループ、条件分岐、単体テストを標準で利用できます
  • Terraform と同等のクラウドプロバイダーをカバーしています
  • HCL の習得に抵抗がある開発チームでも、オンボーディングが容易です
クラウドネイティブな IaC を使うタイミング
ツール使用するタイミング
CloudFormationAWS のみを利用している場合。AWS ネイティブのサポート(StackSets、Service Catalog)が必要な場合
BicepAzure のみを利用している場合。ARM テンプレートよりもシンプルな構文を使いたい場合
Cloud Deployment ManagerGCP のみを利用している場合。まれです。ほとんどの GCP チームは Terraform を好みます

経験則: 単一のクラウドに完全にコミットしており、かつクラウドネイティブツールに Terraform では再現できない機能(例:AWS Service Catalog との統合)がある場合を除き、Terraform/OpenTofu を使用してください。


トラブルシューティング

包括的なトラブルシューティングのセクションについては、references/deployment_strategies.md を確認してください。

コメント