.cursorrules (deprecated)
rules/devops-infrastructure/.cursorrules.cursorrules
Quality
93/100
Scores the file, not the repository.Length
1,050 words
13 headings · 7 code blocksRepository
16
— · pushed 108 days agoLast changed
2 days ago
First indexed 2 days ago.1# DevOps & Infrastructure — Cursor Rules2# Production infrastructure: Terraform, Docker, CI/CD, Kubernetes, and operational excellence34# Project Context5You are managing infrastructure-as-code and CI/CD pipelines for a production system. The project6uses Terraform for cloud infrastructure provisioning, Docker for containerization, GitHub Actions7for CI/CD, and Kubernetes for orchestration. All infrastructure changes are version-controlled,8reviewed, and applied through automation.910# Terraform Patterns11- Organize Terraform by environment and component:12```13 infrastructure/14 modules/15 networking/ # VPC, subnets, security groups16 database/ # RDS, ElastiCache17 compute/ # ECS, EKS, EC218 monitoring/ # CloudWatch, alerts19 environments/20 production/21 main.tf # Module composition22 variables.tf # Environment variables23 terraform.tfvars # Variable values24 backend.tf # Remote state config25 staging/26 ...27```28- Use modules for reusable infrastructure components.29- Use remote state (S3 + DynamoDB for AWS) with state locking.30- Tag ALL resources with: `Environment`, `Project`, `ManagedBy=terraform`, `Owner`.31- Use `data` sources to reference existing resources, not hardcoded IDs.32- Use `terraform plan` output in PR reviews before applying.3334# Terraform Best Practices35- Use variables for all configurable values:36```hcl37 variable "instance_type" {38 description = "EC2 instance type for application servers"39 type = string40 default = "t3.medium"41 validation {42 condition = can(regex("^t3\\.", var.instance_type))43 error_message = "Only t3 instances are allowed."44 }45 }46```47- Use `locals` for computed values used multiple times.48- Use `output` to expose values needed by other configurations.49- Use `lifecycle` blocks for zero-downtime updates:50```hcl51 resource "aws_instance" "web" {52 lifecycle {53 create_before_destroy = true54 }55 }56```57- Use `prevent_destroy` on critical resources (databases, S3 buckets with data).58- DON'T: Store secrets in Terraform state — use a secrets manager.59- DON'T: Use `terraform apply -auto-approve` in production.60- DON'T: Hardcode AWS account IDs, regions, or ARNs — use data sources and variables.6162# Docker Best Practices63- Multi-stage builds for minimal production images:64```dockerfile65 # Build stage66 FROM node:20-alpine AS builder67 WORKDIR /app68 COPY package*.json ./69 RUN npm ci --only=production && npm cache clean --force70 COPY . .71 RUN npm run build7273 # Production stage74 FROM node:20-alpine75 RUN addgroup -S appgroup && adduser -S appuser -G appgroup76 WORKDIR /app77 COPY --from=builder --chown=appuser:appgroup /app/dist ./dist78 COPY --from=builder --chown=appuser:appgroup /app/node_modules ./node_modules79 USER appuser80 EXPOSE 300081 HEALTHCHECK --interval=30s --timeout=3s CMD wget -qO- http://localhost:3000/health || exit 182 CMD ["node", "dist/main.js"]83```84- Always use specific image tags, never `latest`: `node:20.11-alpine`, not `node:latest`.85- Scan images for vulnerabilities: `docker scout`, `trivy`, or `snyk container`.86- Keep images small: use Alpine base, multi-stage builds, minimal dependencies.87- One process per container — don't run multiple services in one container.88- Use `.dockerignore` to exclude: `.git`, `node_modules`, `tests`, `docs`, `.env`.8990# CI/CD Pipeline (GitHub Actions)91- Standard pipeline stages: lint -> test -> build -> deploy:92```yaml93 name: CI/CD94 on:95 push:96 branches: [main]97 pull_request:98 branches: [main]99100 jobs:101 lint:102 runs-on: ubuntu-latest103 steps:104 - uses: actions/checkout@v4105 - uses: actions/setup-node@v4106 with: { node-version: 20, cache: npm }107 - run: npm ci108 - run: npm run lint109110 test:111 needs: lint112 runs-on: ubuntu-latest113 services:114 postgres:115 image: postgres:16116 env: { POSTGRES_PASSWORD: test }117 ports: ['5432:5432']118 steps:119 - uses: actions/checkout@v4120 - run: npm ci121 - run: npm test -- --coverage122 - uses: actions/upload-artifact@v4123 with: { name: coverage, path: coverage/ }124125 deploy:126 needs: test127 if: github.ref == 'refs/heads/main'128 runs-on: ubuntu-latest129 environment: production130 steps:131 - uses: actions/checkout@v4132 - run: docker build -t app:${{ github.sha }} .133 - run: docker push registry/app:${{ github.sha }}134 - run: kubectl set image deployment/app app=registry/app:${{ github.sha }}135```136- Cache dependencies between runs (npm cache, Docker layer cache).137- Run security scans (SAST, dependency audit) in CI.138- Use GitHub Environments with approval gates for production deploys.139- Store secrets in GitHub Secrets, not in code or CI config.140141# Kubernetes Patterns142- Use Deployments for stateless services, StatefulSets for stateful.143- Define resource requests AND limits on every container:144```yaml145 resources:146 requests:147 cpu: 100m148 memory: 128Mi149 limits:150 cpu: 500m151 memory: 512Mi152```153- Use ConfigMaps for configuration, Secrets for sensitive data.154- Define liveness, readiness, and startup probes:155```yaml156 livenessProbe:157 httpGet: { path: /health, port: 3000 }158 initialDelaySeconds: 15159 periodSeconds: 10160 readinessProbe:161 httpGet: { path: /ready, port: 3000 }162 initialDelaySeconds: 5163 periodSeconds: 5164```165- Use Horizontal Pod Autoscaler (HPA) based on CPU/memory or custom metrics.166- Use PodDisruptionBudget to ensure availability during node maintenance.167- Use Ingress with TLS termination for external traffic.168- Use NetworkPolicies to restrict pod-to-pod communication.169170# Monitoring and Alerting171- Monitor the Four Golden Signals: latency, traffic, errors, saturation.172- Set up alerts for:173 - Error rate > 1% for 5 minutes174 - P99 latency > 2 seconds for 5 minutes175 - CPU/memory utilization > 80% for 10 minutes176 - Disk space > 85%177 - Certificate expiry within 30 days178 - Health check failures179- Use Prometheus + Grafana or cloud-native monitoring (CloudWatch, Datadog).180- Create dashboards for: service health, infrastructure metrics, business metrics.181- Set up PagerDuty or Opsgenie for on-call alerting.182183# Secret Management184- Never store secrets in code, environment files committed to git, or CI config files.185- Use a secrets manager: AWS Secrets Manager, HashiCorp Vault, or cloud-native equivalent.186- Rotate secrets regularly (automated rotation preferred).187- Use separate secrets per environment (dev/staging/prod).188- Audit secret access with logging.189190# Disaster Recovery191- Define RTO (Recovery Time Objective) and RPO (Recovery Point Objective) for each service.192- Automated database backups with tested restoration procedures.193- Multi-AZ deployment for high availability.194- Document runbooks for common failure scenarios.195- Conduct regular disaster recovery drills.196- Use infrastructure-as-code for fast environment recreation.197198# Security199- Enable MFA on all cloud accounts and CI/CD systems.200- Use IAM roles with least-privilege permissions.201- Enable VPC flow logs and CloudTrail for audit trails.202- Scan Docker images and dependencies for vulnerabilities in CI.203- Use HTTPS everywhere — no exceptions.204- Implement WAF rules for public-facing services.205206# Common Mistakes to Avoid207- DON'T: Store secrets in Terraform state or version control.208- DON'T: Use `latest` Docker tags — pin specific versions for reproducibility.209- DON'T: Skip health checks in Kubernetes deployments.210- DON'T: Deploy directly to production without a staging environment.211- DON'T: Set CPU limits without load testing — too low causes throttling.212- DON'T: Ignore Terraform plan output — review every change before applying.213- DON'T: Use root user/account for daily operations — use service accounts with limited permissions.214
Also in survivorforge/cursor-rules
Diff this repo’s formatsOne repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| survivorforge/cursor-rulesrules/aws-serverless/.cursorrules · 16 | .cursorrules | teststylearchtypes+6 | 73/100 | 2 days ago | |
| survivorforge/cursor-rulesrules/ai-ml-python/.cursorrules · 16 | .cursorrules | teststylearchdeployment+2 | 81/100 | 2 days ago | |
| survivorforge/cursor-rulesrules/api-design-rest/.cursorrules · 16 | .cursorrules | lint-formatstylesecurityapi+3 | 69/100 | 2 days ago | |
| survivorforge/cursor-rulesrules/api-microservices/.cursorrules · 16 | .cursorrules | buildteststylearch+5 | 92/100 | 2 days ago | |
| survivorforge/cursor-rulesrules/chrome-extension/.cursorrules · 16 | .cursorrules | teststylearchtesting-strategy+4 | 81/100 | 2 days ago | |
| survivorforge/cursor-rulesrules/clean-code/.cursorrules · 16 | .cursorrules | styledo-notagent-behaviourdocs | 57/100 | 2 days ago | |
| survivorforge/cursor-rulesrules/database-sql/.cursorrules · 16 | .cursorrules | styletypessecuritydatabase+3 | 65/100 | 2 days ago | |
| survivorforge/cursor-rulesrules/devops-docker/.cursorrules · 16 | .cursorrules | setupbuildteststyle+4 | 93/100 | 2 days ago | |
| survivorforge/cursor-rulesrules/django-rest/.cursorrules · 16 | .cursorrules | buildteststylearch+5 | 84/100 | 2 days ago | |
| survivorforge/cursor-rulesrules/docker-devops/.cursorrules · 16 | .cursorrules | setupteststylearch+6 | 85/100 | 2 days ago | |
| survivorforge/cursor-rulesrules/flutter-dart/.cursorrules · 16 | .cursorrules | teststylearchtypes+5 | 89/100 | 2 days ago | |
| survivorforge/cursor-rulesrules/fullstack-nextjs-prisma/.cursorrules · 16 | .cursorrules | teststylearchtypes+7 | 96/100 | 2 days ago | |
| survivorforge/cursor-rulesrules/go-gin/.cursorrules · 16 | .cursorrules | testlint-formatstylearch+5 | 84/100 | 2 days ago | |
| survivorforge/cursor-rulesrules/go-production/.cursorrules · 16 | .cursorrules | teststylearchtesting-strategy+3 | 89/100 | 2 days ago | |
| survivorforge/cursor-rulesrules/golang-api/.cursorrules · 16 | .cursorrules | buildteststylearch+6 | 84/100 | 2 days ago | |
| survivorforge/cursor-rulesrules/langchain-ai/.cursorrules · 16 | .cursorrules | testlint-formatstylearch+4 | 84/100 | 2 days ago | |
| survivorforge/cursor-rulesrules/mcp-server/.cursorrules · 16 | .cursorrules | testlint-formatstylearch+7 | 68/100 | 2 days ago | |
| survivorforge/cursor-rulesrules/mern-stack/.cursorrules · 16 | .cursorrules | setupteststylearch+6 | 81/100 | 2 days ago | |
| survivorforge/cursor-rulesrules/mobile-react-native/.cursorrules · 16 | .cursorrules | teststylearchtypes+7 | 89/100 | 2 days ago | |
| survivorforge/cursor-rulesrules/nextjs-14-app-router/.cursorrules · 16 | .cursorrules | teststyletypestesting-strategy+3 | 71/100 | 2 days ago |
Diff against rules/aws-serverless/.cursorrules Diff against rules/ai-ml-python/.cursorrules Diff against rules/api-design-rest/.cursorrules Diff against rules/api-microservices/.cursorrules Diff against rules/chrome-extension/.cursorrules Diff against rules/clean-code/.cursorrules Diff against rules/database-sql/.cursorrules Diff against rules/devops-docker/.cursorrules Diff against rules/django-rest/.cursorrules Diff against rules/docker-devops/.cursorrules Diff against rules/flutter-dart/.cursorrules Diff against rules/fullstack-nextjs-prisma/.cursorrules Diff against rules/go-gin/.cursorrules Diff against rules/go-production/.cursorrules Diff against rules/golang-api/.cursorrules Diff against rules/langchain-ai/.cursorrules Diff against rules/mcp-server/.cursorrules Diff against rules/mern-stack/.cursorrules Diff against rules/mobile-react-native/.cursorrules Diff against rules/nextjs-14-app-router/.cursorrules
Similar configs
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| SkeneTechnologies/skene-cookbook.cursorrules · 51 | .cursorrules | setuptestlint-formatstyle+11 | 96/100 | 2 days ago | |
| HerringtonDarkholme/megarepo.cursorrules · 17 | .cursorrules | setupbuildtestlint-format+13 | 96/100 | 3 days ago | |
| survivorforge/cursor-rulesrules/devops-docker/.cursorrules · 16 | .cursorrules | setupbuildteststyle+4 | 93/100 | 2 days ago | |
| survivorforge/cursor-rulesrules/api-microservices/.cursorrules · 16 | .cursorrules | buildteststylearch+5 | 92/100 | 2 days ago | |
| fall-out-bug/sdp_lab.cursorrules · 0 | .cursorrules | setupbuildtestlint-format+3 | 86/100 | 3 days ago | |
| bashdeban/fastmind.cursorrules · 5 | .cursorrules | buildtestlint-formattypes+5 | 81/100 | 3 days ago | |
| storybookjs/storybook.cursorrules · 91k | .cursorrules | teststylearchdo-not+1 | 78/100 | 3 days ago | |
| forem/forem.cursorrules · 23k | .cursorrules | teststyletypesdatabase+4 | 71/100 | 3 days ago |
