This commit is contained in:
Toby
2026-01-27 17:35:45 -05:00
commit 2639af6531
176 changed files with 27104 additions and 0 deletions
@@ -0,0 +1,59 @@
---
name: cdn-setup
description: Configure CDNs for content delivery. Set up CloudFront, Cloudflare, and Fastly. Use when optimizing global content delivery.
license: MIT
metadata:
author: devops-skills
version: "1.0"
---
# CDN Setup
Configure content delivery networks.
## AWS CloudFront
```bash
aws cloudfront create-distribution --distribution-config '{
"CallerReference": "my-distribution",
"Origins": {
"Quantity": 1,
"Items": [{
"Id": "myS3Origin",
"DomainName": "mybucket.s3.amazonaws.com",
"S3OriginConfig": {"OriginAccessIdentity": ""}
}]
},
"DefaultCacheBehavior": {
"TargetOriginId": "myS3Origin",
"ViewerProtocolPolicy": "redirect-to-https",
"CachePolicyId": "658327ea-f89d-4fab-a63d-7e88639e58f6"
},
"Enabled": true
}'
```
## Cloudflare
```bash
# Via API
curl -X POST "https://api.cloudflare.com/client/v4/zones" \
-H "Authorization: Bearer $TOKEN" \
-d '{"name":"example.com","jump_start":true}'
```
## Cache Headers
```nginx
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
```
## Best Practices
- Set appropriate cache headers
- Use cache invalidation sparingly
- Implement cache warming
- Monitor cache hit ratios
@@ -0,0 +1,67 @@
---
name: dns-management
description: Configure DNS zones and records. Manage Route53, Cloud DNS, and self-hosted DNS. Use when setting up DNS infrastructure.
license: MIT
metadata:
author: devops-skills
version: "1.0"
---
# DNS Management
Configure and manage DNS infrastructure.
## AWS Route 53
```bash
# Create hosted zone
aws route53 create-hosted-zone --name example.com --caller-reference $(date +%s)
# Create record
aws route53 change-resource-record-sets --hosted-zone-id ZXXXXX --change-batch '{
"Changes": [{
"Action": "CREATE",
"ResourceRecordSet": {
"Name": "www.example.com",
"Type": "A",
"TTL": 300,
"ResourceRecords": [{"Value": "1.2.3.4"}]
}
}]
}'
```
## BIND Configuration
```bash
# /etc/bind/zones/example.com.db
$TTL 86400
@ IN SOA ns1.example.com. admin.example.com. (
2024010101 ; Serial
3600 ; Refresh
1800 ; Retry
604800 ; Expire
86400 ) ; Minimum TTL
IN NS ns1.example.com.
IN A 1.2.3.4
www IN A 1.2.3.4
```
## Common Records
```
A - IPv4 address
AAAA - IPv6 address
CNAME - Alias to another domain
MX - Mail server
TXT - Text record (SPF, DKIM)
NS - Name server
```
## Best Practices
- Low TTL during migrations
- Implement DNSSEC
- Use multiple name servers
- Monitor DNS resolution
@@ -0,0 +1,64 @@
---
name: load-balancing
description: Configure load balancers and traffic distribution. Implement health checks and SSL termination. Use when distributing traffic across servers.
license: MIT
metadata:
author: devops-skills
version: "1.0"
---
# Load Balancing
Distribute traffic across application servers.
## nginx Load Balancer
```nginx
upstream backend {
least_conn;
server backend1:8080 weight=3;
server backend2:8080;
server backend3:8080 backup;
}
server {
listen 80;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
```
## HAProxy
```
frontend http_front
bind *:80
default_backend http_back
backend http_back
balance roundrobin
option httpchk GET /health
server web1 10.0.0.1:8080 check
server web2 10.0.0.2:8080 check
```
## AWS ALB
```bash
aws elbv2 create-load-balancer \
--name my-alb \
--subnets subnet-xxx subnet-yyy \
--security-groups sg-xxx \
--type application
```
## Best Practices
- Implement health checks
- Use sticky sessions when needed
- Enable connection draining
- Monitor backend health
@@ -0,0 +1,68 @@
---
name: reverse-proxy
description: Configure nginx and Traefik as reverse proxies. Implement SSL termination and routing. Use when setting up application gateways.
license: MIT
metadata:
author: devops-skills
version: "1.0"
---
# Reverse Proxy
Configure reverse proxies for application routing.
## nginx
```nginx
server {
listen 80;
server_name api.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name api.example.com;
ssl_certificate /etc/ssl/certs/api.crt;
ssl_certificate_key /etc/ssl/private/api.key;
location / {
proxy_pass http://backend:8080;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location /ws {
proxy_pass http://backend:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
```
## Traefik
```yaml
# traefik.yml
entryPoints:
web:
address: ":80"
websecure:
address: ":443"
providers:
docker:
exposedByDefault: false
```
## Best Practices
- Implement SSL termination
- Set proper headers
- Configure timeouts
- Enable gzip compression
@@ -0,0 +1,70 @@
---
name: service-mesh
description: Implement Istio and Linkerd service meshes. Configure mTLS, traffic management, and observability. Use when managing microservices communication.
license: MIT
metadata:
author: devops-skills
version: "1.0"
---
# Service Mesh
Implement service-to-service communication management.
## Istio Installation
```bash
istioctl install --set profile=demo
# Enable sidecar injection
kubectl label namespace default istio-injection=enabled
```
## Traffic Management
```yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: myapp
spec:
hosts:
- myapp
http:
- match:
- headers:
canary:
exact: "true"
route:
- destination:
host: myapp
subset: canary
- route:
- destination:
host: myapp
subset: stable
weight: 90
- destination:
host: myapp
subset: canary
weight: 10
```
## mTLS
```yaml
apiVersion: security.istio.io/v1beta1
kind: PeerAuthentication
metadata:
name: default
spec:
mtls:
mode: STRICT
```
## Best Practices
- Enable strict mTLS
- Implement circuit breakers
- Use traffic shifting for deployments
- Monitor with Kiali and Jaeger