mcpField
S
senior-devops

senior-devops

github.com/alirezarezvani云与 DevOps29.0k1.0k 次安装今天更新
代码仓库

关于 senior-devops

面向 DevOps 团队的技能,提供 CI/CD 流水线、Terraform 模块及 Kubernetes 部署清单和运行手册的生成工具。部署管理器支持蓝绿或滚动策略,并生成健康检查和回滚步骤;不会自行向集群应用更改。

主要功能

  1. 01生成 GitHub Actions 或 CircleCI 流水线
  2. 02生成并验证 Terraform 模块
  3. 03创建 Kubernetes 部署清单
  4. 04生成部署运行手册和回滚步骤
  5. 05分析部署环境状态

适用场景

  1. 01为应用搭建构建、测试和部署流水线
  2. 02为 AWS、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

详细介绍

Senior Devops

面向高级 DevOps 的完整工具包,融合现代工具与最佳实践。

快速开始

主要能力

本 Skill 通过自动化脚本提供三项核心能力:

# 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 蓝/绿部署(蓝色槽位专属元素):

# 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"

多云交叉参考

如需特定云平台的深入内容,请使用以下配套 Skill:

Skill云平台适用场景
aws-solution-architectAWSECS/EKS、Lambda、VPC 设计、成本优化
azure-cloud-architectAzureAKS、App Service、虚拟网络、Azure DevOps
gcp-cloud-architectGCPGKE、Cloud Run、VPC、Cloud Build (即将推出)

多云与单云的选择:

  • 单云(默认)— 运维复杂度更低,与托管服务集成更深,通过承诺使用折扣更容易获得成本优势
  • 多云 — 合规或数据驻留要求强制要求、收购了使用不同云的公司,或需要跨云提供者选用最佳服务时必需(例如 AWS 负责计算、GCP 负责 ML)
  • 混合云 — 本地部署加云端;当受监管的工作负载必须保留在本地,而突发性或非敏感工作负载运行在云端时使用

从单云起步。只有存在明确的业务或合规驱动因素时才增加第二个云平台,而不是为了理论上的冗余。


与云无关的 IaC

Terraform / OpenTofu(默认选择)

对于大多数团队,推荐使用 Terraform(或其开源分支 OpenTofu)作为 IaC 工具:

  • 在 AWS、Azure、GCP 及 3,000 多个提供商之间使用统一语言(HCL)
  • 通过远程后端(S3、GCS、Azure Blob)进行状态管理
  • 先规划后应用的工作流可避免配置漂移带来的意外
  • 模块结构、状态隔离及 CI/CD 集成请参考 terraform-patterns
Pulumi(编程语言式 IaC)

当团队强烈偏好 TypeScript、Python、Go 或 C# 而非 HCL 时,可选择 Pulumi:

  • 完整的编程语言支持 — 原生支持循环、条件判断和单元测试
  • 云平台覆盖范围与 Terraform 相同
  • 对于不愿学习 HCL 的开发团队,上手更容易
何时使用云原生 IaC
工具适用场景
CloudFormation仅使用 AWS 的团队;需要原生 AWS 支持(StackSets、Service Catalog)
Bicep仅使用 Azure 的团队;语法比 ARM 模板更简单
Cloud Deployment Manager仅使用 GCP;较少见,大多数 GCP 团队更倾向于 Terraform

经验法则: 除非你完全专注于单一云平台,并且云原生工具提供了 Terraform 无法复现的功能(例如 AWS Service Catalog 集成),否则请使用 Terraform/OpenTofu。


故障排查

请查看 references/deployment_strategies.md 中的完整故障排查章节。

评论

支持 Markdown