mcpField
D
devops-deploy

devops-deploy

github.com/sickn33クラウド・DevOps48.7k125 回インストール今日更新
リポジトリ

devops-deploy について

devops-deployは、アプリのインフラとリリースを担当する開発者向けのスキルです。Docker、CI/CD、AWSデプロイ、IaC、監視、ロールバック計画を扱い、本番環境の変更には慎重な確認を促します。

主な機能

  1. 01Docker設定とCompose
  2. 02GitHub ActionsのCI/CDパイプライン
  3. 03AWS LambdaとSAMのデプロイ
  4. 04TerraformによるIaC
  5. 05ヘルスチェックとCloudWatchアラート
  6. 06本番確認とロールバックのチェックリスト

活用シーン

  1. 01アプリのコンテナ化
  2. 02GitHub Actionsパイプラインの設定
  3. 03サービスのAWS Lambdaへのデプロイ
  4. 04監視とロールバック計画の準備

インストール

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

$npx skills add https://github.com/sickn33/agentic-awesome-skills --skill devops-deploy

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

詳細

DEVOPS-DEPLOY — アイデアから本番環境へ

概要

アプリケーションの DevOps とデプロイ — Docker、GitHub Actions による CI/CD、AWS Lambda、SAM、Terraform、Infrastructure as Code、モニタリング。次の用途で有効にしてください:アプリケーションの Docker 化、CI/CD パイプラインの設定、AWS へのデプロイ、Lambda、ECS、GitHub Actions の設定、Terraform、ロールバック、ブルーグリーンデプロイ、ヘルスチェック、アラート。

このスキルを使用する場合

  • この分野に関する専門的な支援が必要な場合

このスキルを使用しない場合

  • タスクが DevOps やデプロイに関係しない場合
  • よりシンプルで具体的なツールでリクエストに対応できる場合
  • ユーザーが専門知識を必要としない汎用的な支援を求めている場合

実行上の制限

例では有料のインフラストラクチャを変更し、リソースを公開または削除する可能性があります。実行前に、アカウント、リージョン、スタック、コスト、ロールバックを確認してください。Telegram 通知には明示的な許可が必要です。依頼されていない場合は、この手順を省略してください。スクリプトとアプリケーションのファイルは含まれていません。バージョンを固定し、確認を得ずにデプロイする前にプランを確認してください。

仕組み

「素早く進み、問題を起こさない。」— エリートエンジニアリングは遅くありません。 速さと信頼性を同時に実現します。


最適化された Dockerfile(Python)

FROM python:3.11-slim AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir --user -r requirements.txt

FROM python:3.11-slim
WORKDIR /app
COPY --from=builder /root/.local /root/.local
COPY . .
ENV PATH=/root/.local/bin:$PATH
ENV PYTHONUNBUFFERED=1
EXPOSE 8000
HEALTHCHECK --interval=30s --timeout=3s CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:8000/health', timeout=2)" || exit 1
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

Docker Compose(ローカル開発)

version: "3.9"
services:
  app:
    build: .
    ports: ["8000:8000"]
    environment:
      - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
    volumes:
      - .:/app
    depends_on: [db, redis]
  db:
    image: postgres:15
    environment:
      POSTGRES_DB: auri
      POSTGRES_USER: auri
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes:
      - pgdata:/var/lib/postgresql/data
  redis:
    image: redis:7-alpine
volumes:
  pgdata:

Sam テンプレート(サーバーレス)


## Template.Yaml

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31

Globals:
  Function:
    Timeout: 30
    Runtime: python3.11
    Environment:
      Variables:
        ANTHROPIC_API_KEY: !Ref AnthropicApiKey
        DYNAMODB_TABLE: !Ref AuriTable

Parameters:
  AnthropicApiKey:
    Type: String
    NoEcho: true

Resources:
  AuriFunction:
    Type: AWS::Serverless::Function
    Properties:
      CodeUri: src/
      Handler: lambda_function.handler
      MemorySize: 512
      Policies:
        - DynamoDBCrudPolicy:
            TableName: !Ref AuriTable

  AuriTable:
    Type: AWS::DynamoDB::Table
    Properties:
      TableName: auri-users
      BillingMode: PAY_PER_REQUEST
      AttributeDefinitions:
        - AttributeName: userId
          AttributeType: S
      KeySchema:
        - AttributeName: userId
          KeyType: HASH
      TimeToLiveSpecification:
        AttributeName: ttl
        Enabled: true

デプロイコマンド


## Build E Deploy

sam build
sam deploy --guided  # primeira vez
sam deploy           # deploys seguintes

## Deploy Rapido (Sem Confirmacao)

sam deploy --no-confirm-changeset --no-fail-on-empty-changeset

## Ver Logs Em Tempo Real

sam logs -n AuriFunction --tail

## Deletar Stack

sam delete

.Github/Workflows/Deploy.Yml


name: Deploy Auri

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with: { python-version: "3.11" }
      - run: pip install -r requirements.txt
      - run: pytest tests/ -v --cov=src --cov-report=xml
      - uses: codecov/codecov-action@v4

  security:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: pip install bandit safety
      - run: bandit -r src/ -ll
      - run: safety check -r requirements.txt

  deploy:
    needs: [test, security]
    if: github.ref == 'refs/heads/main'
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: aws-actions/setup-sam@v2
      - uses: aws-actions/configure-aws-credentials@v4
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
          aws-region: us-east-1
      - run: sam build
      - run: sam deploy --no-confirm-changeset
      - name: Notify Telegram on Success
        run: |
          curl -s -X POST "https://api.telegram.org/bot${{ secrets.TELEGRAM_BOT_TOKEN }}/sendMessage" \
            -d "chat_id=${{ secrets.TELEGRAM_CHAT_ID }}" \
            -d "text=Auri deployed successfully! Commit: ${{ github.sha }}"

ヘルスチェックエンドポイント

from fastapi import FastAPI
import time, os

app = FastAPI()
START_TIME = time.time()

@app.get("/health")
async def health():
    return {
        "status": "healthy",
        "uptime_seconds": time.time() - START_TIME,
        "version": os.environ.get("APP_VERSION", "unknown"),
        "environment": os.environ.get("ENV", "production")
    }

Cloudwatch アラート

import boto3

def create_error_alarm(function_name: str, sns_topic_arn: str):
    cw = boto3.client("cloudwatch")
    cw.put_metric_alarm(
        AlarmName=f"{function_name}-errors",
        MetricName="Errors",
        Namespace="AWS/Lambda",
        Dimensions=[{"Name": "FunctionName", "Value": function_name}],
        Period=300,
        EvaluationPeriods=1,
        Statistic="Sum",
        Threshold=5,
        ComparisonOperator="GreaterThanThreshold",
        AlarmActions=[sns_topic_arn],
        TreatMissingData="notBreaching"
    )

5. 本番環境チェックリスト

  • Secrets Manager 経由で環境変数を設定する(ハードコードは厳禁)
  • ヘルスチェックエンドポイントが応答する
  • request_id を含む構造化ログ(JSON)
  • レート制限を設定する
  • CORS を許可されたドメインに制限する
  • DynamoDB の自動バックアップを有効にする
  • Lambda に適切なタイムアウトを設定する(10~30 秒)
  • エラーとレイテンシーの CloudWatch アラーム
  • ロールバック計画を文書化する
  • リリース前に負荷テストを行う

6. コマンド

コマンドアクション
/docker-setupアプリケーションを Docker 化します
/sam-deployAWS Lambda に完全デプロイします
/ci-cd-setupGitHub Actions パイプラインを設定します
/monitoring-setupCloudWatch とアラートを設定します
/production-checklistリリース前チェックリストを実行します
/rollback以前のバージョンへのロールバック計画

ベストプラクティス

  • プロジェクトと要件について、明確で具体的なコンテキストを提示してください
  • 提案を本番コードに適用する前に、すべて確認してください
  • 包括的な分析を行うため、他の補完的なスキルと組み合わせてください

よくある落とし穴

  • このスキルの専門分野以外のタスクに使用する
  • 独自のコンテキストを理解せずに推奨事項を適用する
  • 正確な分析に必要なプロジェクトのコンテキストを十分に提示しない

制限事項

  • タスクが上記の説明にある範囲に明確に該当する場合にのみ、このスキルを使用してください。
  • 出力を、環境固有の検証、テスト、専門家によるレビューの代わりとして扱わないでください。
  • 必要な入力、権限、安全上の境界、または成功基準が不足している場合は、作業を中断して確認を求めてください。

コメント