Structure: - control-plane/: Registries, SIMCO directives, CI/CD templates - projects/: Gamilit, ERP-Suite, Trading-Platform, Betting-Analytics - shared/: Libs catalog, knowledge-base Key features: - Centralized port, domain, database, and service registries - 23 SIMCO directives + 6 fundamental principles - NEXUS agent profiles with delegation rules - Validation scripts for workspace integrity - Dockerfiles for all services - Path aliases for quick reference 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
7.6 KiB
FASE 3 - TAREAS DE IMPLEMENTACION
Fase: 3 - Shared Infrastructure Estado: Planificado Responsable: DevOps-Agent
RESUMEN DE TAREAS
| Grupo | Tareas | Esfuerzo Total |
|---|---|---|
| T3.1 Docker Networks | 3 | 3 horas |
| T3.2 Traefik | 4 | 6 horas |
| T3.3 Templates | 4 | 5 horas |
| T3.4 Environment | 3 | 3 horas |
| T3.5 Scripts | 3 | 3 horas |
| TOTAL | 17 | 20 horas |
T3.1 DOCKER NETWORKS
T3.1.1 Crear networks.yml
Esfuerzo: 1 hora
Ubicacion: control-plane/devtools/docker/networks/networks.yml
Contenido:
# networks.yml - Definicion de redes Docker
version: "1.0.0"
networks:
# Infraestructura compartida
infra:
name: infra_shared
driver: bridge
description: "Red para servicios de infraestructura (Traefik, monitoring)"
# Por proyecto - patron: {proyecto}_{ambiente}
projects:
gamilit:
environments: [local, dev, staging, prod]
pattern: "gamilit_{env}"
erp_suite:
environments: [local, dev, staging, prod]
pattern: "erp_{env}"
trading:
environments: [local, dev, staging, prod]
pattern: "trading_{env}"
betting:
environments: [local, dev, staging, prod]
pattern: "betting_{env}"
T3.1.2 Crear create-networks.sh
Esfuerzo: 1 hora
Ubicacion: control-plane/devtools/docker/networks/create-networks.sh
Funcionalidad:
- Lee networks.yml
- Crea redes Docker especificadas
- Idempotente (no falla si red existe)
T3.1.3 Documentar uso de redes
Esfuerzo: 1 hora
Ubicacion: control-plane/devtools/docker/networks/README.md
T3.2 TRAEFIK CONFIGURATION
T3.2.1 Crear traefik.yml
Esfuerzo: 2 horas
Ubicacion: control-plane/devtools/docker/traefik/traefik.yml
Contenido:
# traefik.yml - Configuracion principal
api:
dashboard: true
insecure: true # Solo para desarrollo
entryPoints:
web:
address: ":80"
websecure:
address: ":443"
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false
network: infra_shared
file:
directory: /etc/traefik/dynamic
watch: true
log:
level: INFO
T3.2.2 Crear routers.yml
Esfuerzo: 1.5 horas
Ubicacion: control-plane/devtools/docker/traefik/dynamic/routers.yml
Contenido base:
# routers.yml - Routers dinamicos
http:
routers:
# Gamilit
gamilit-api:
rule: "Host(`api.gamilit.localhost`)"
service: gamilit-api
entryPoints:
- web
gamilit-web:
rule: "Host(`gamilit.localhost`)"
service: gamilit-web
entryPoints:
- web
# ERP Suite - Core
erp-api:
rule: "Host(`api.erp.localhost`)"
service: erp-api
entryPoints:
- web
# ... mas routers segun domains.registry.yml
T3.2.3 Crear middlewares.yml
Esfuerzo: 1 hora
Ubicacion: control-plane/devtools/docker/traefik/dynamic/middlewares.yml
Contenido:
# middlewares.yml - Middlewares comunes
http:
middlewares:
# Rate limiting
rate-limit:
rateLimit:
average: 100
burst: 50
# CORS
cors-headers:
headers:
accessControlAllowMethods:
- GET
- POST
- PUT
- DELETE
- OPTIONS
accessControlAllowOriginList:
- "*"
accessControlAllowHeaders:
- "*"
# Security headers
security-headers:
headers:
frameDeny: true
browserXssFilter: true
contentTypeNosniff: true
T3.2.4 Crear docker-compose.traefik.yml
Esfuerzo: 1.5 horas
Ubicacion: control-plane/devtools/docker/traefik/docker-compose.traefik.yml
Contenido:
version: "3.8"
services:
traefik:
image: traefik:v2.10
container_name: traefik
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "8080:8080" # Dashboard
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./traefik.yml:/etc/traefik/traefik.yml:ro
- ./dynamic:/etc/traefik/dynamic:ro
networks:
- infra_shared
networks:
infra_shared:
external: true
T3.3 DOCKER COMPOSE TEMPLATES
T3.3.1 Crear docker-compose.base.yml
Esfuerzo: 1.5 horas
Contenido base para todos los servicios:
# docker-compose.base.yml
# Template base - NO usar directamente
x-logging: &default-logging
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
x-healthcheck: &default-healthcheck
interval: 30s
timeout: 5s
retries: 3
start_period: 10s
T3.3.2 Crear docker-compose.backend.yml
Esfuerzo: 1.5 horas
Template para servicios backend:
# docker-compose.backend.yml
# Template para backend services
version: "3.8"
services:
{{SERVICE_NAME}}:
build:
context: .
dockerfile: Dockerfile
container_name: {{SERVICE_NAME}}
restart: unless-stopped
expose:
- "{{PORT}}"
environment:
- NODE_ENV=${NODE_ENV:-development}
- PORT={{PORT}}
- DATABASE_URL=${DATABASE_URL}
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:{{PORT}}/health"]
<<: *default-healthcheck
labels:
- "traefik.enable=true"
- "traefik.http.routers.{{SERVICE_NAME}}.rule=Host(`{{DOMAIN}}`)"
- "traefik.http.services.{{SERVICE_NAME}}.loadbalancer.server.port={{PORT}}"
networks:
- {{PROJECT}}_${ENV:-local}
- infra_shared
logging:
<<: *default-logging
networks:
{{PROJECT}}_${ENV:-local}:
external: true
infra_shared:
external: true
T3.3.3 Crear docker-compose.frontend.yml
Esfuerzo: 1 hora
T3.3.4 Crear docker-compose.fullstack.yml
Esfuerzo: 1 hora
T3.4 ENVIRONMENT CONFIGURATION
T3.4.1 Crear .env.template
Esfuerzo: 1 hora
Contenido:
# .env.template - Variables comunes
# Copiar a .env.{ambiente} y completar valores
# Ambiente
NODE_ENV=development
ENV=local
# Database
DATABASE_HOST=localhost
DATABASE_PORT=5432
DATABASE_NAME=
DATABASE_USER=
DATABASE_PASSWORD=
# Redis
REDIS_HOST=localhost
REDIS_PORT=6379
# JWT
JWT_SECRET=
JWT_EXPIRES_IN=1d
# Logging
LOG_LEVEL=info
LOG_FORMAT=json
T3.4.2 Crear .env.local.template
Esfuerzo: 0.5 horas
T3.4.3 Crear generate-env.sh
Esfuerzo: 1.5 horas
Script que genera .env desde template:
#!/bin/bash
# generate-env.sh
# Genera archivo .env desde template
TEMPLATE="$1"
OUTPUT="$2"
VALUES_FILE="$3"
if [ -z "$TEMPLATE" ] || [ -z "$OUTPUT" ]; then
echo "Uso: generate-env.sh <template> <output> [values-file]"
exit 1
fi
# Copiar template
cp "$TEMPLATE" "$OUTPUT"
# Si hay archivo de valores, sustituir
if [ -n "$VALUES_FILE" ] && [ -f "$VALUES_FILE" ]; then
while IFS='=' read -r key value; do
sed -i "s|{{$key}}|$value|g" "$OUTPUT"
done < "$VALUES_FILE"
fi
echo "Generado: $OUTPUT"
T3.5 SCRIPTS DE SETUP
T3.5.1 Crear init-workspace.sh
Esfuerzo: 1 hora
Funcionalidad:
- Crea redes Docker
- Levanta Traefik
- Verifica prerequisitos
T3.5.2 Crear init-project.sh
Esfuerzo: 1 hora
Funcionalidad:
- Genera docker-compose desde template
- Genera .env desde template
- Conecta a redes correspondientes
T3.5.3 Documentacion de uso
Esfuerzo: 1 hora
CRONOGRAMA SUGERIDO
DIA 1:
- T3.1.1-T3.1.3 Docker Networks
- T3.2.1-T3.2.2 Traefik base
DIA 2:
- T3.2.3-T3.2.4 Traefik completo
- T3.3.1-T3.3.2 Templates base y backend
DIA 3:
- T3.3.3-T3.3.4 Templates frontend y fullstack
- T3.4.1-T3.4.3 Environment configs
- T3.5.1-T3.5.3 Scripts
- Validacion
Documento generado por: DevOps-Agent