关于 senior-devops
面向 DevOps 团队的技能,提供 CI/CD 流水线、Terraform 模块及 Kubernetes 部署清单和运行手册的生成工具。部署管理器支持蓝绿或滚动策略,并生成健康检查和回滚步骤;不会自行向集群应用更改。
主要功能
- 01生成 GitHub Actions 或 CircleCI 流水线
- 02生成并验证 Terraform 模块
- 03创建 Kubernetes 部署清单
- 04生成部署运行手册和回滚步骤
- 05分析部署环境状态
适用场景
- 01为应用搭建构建、测试和部署流水线
- 02为 AWS、GCP 或 Azure 构建 IaC 模块
- 03准备带健康检查门控的 Kubernetes 部署
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ alirezarezvani/ claude-skills --skill senior-devops安装后在 Claude Code 中输入/senior-devops确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/cicd_pipeline_guide.mddeployment_strategies.mdinfrastructure_as_code.mdscripts/deployment_manager.pypipeline_generator.pyterraform_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-architect | AWS | ECS/EKS、Lambda、VPC 设计、成本优化 |
| azure-cloud-architect | Azure | AKS、App Service、虚拟网络、Azure DevOps |
| gcp-cloud-architect | GCP | GKE、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 中的完整故障排查章节。