workspace-v1/control-plane/devtools/scripts/bootstrap/init-workspace.sh
rckrdmrd 66161b1566 feat: Workspace-v1 complete migration with NEXUS v3.4
Sistema NEXUS v3.4 migrado con:

Estructura principal:
- core/orchestration: Sistema SIMCO + CAPVED (27 directivas, 28 perfiles)
- core/catalog: Catalogo de funcionalidades reutilizables
- shared/knowledge-base: Base de conocimiento compartida
- devtools/scripts: Herramientas de desarrollo
- control-plane/registries: Control de servicios y CI/CD
- orchestration/: Configuracion de orquestacion de agentes

Proyectos incluidos (11):
- gamilit (submodule -> GitHub)
- trading-platform (OrbiquanTIA)
- erp-suite con 5 verticales:
  - erp-core, construccion, vidrio-templado
  - mecanicas-diesel, retail, clinicas
- betting-analytics
- inmobiliaria-analytics
- platform_marketing_content
- pos-micro, erp-basico

Configuracion:
- .gitignore completo para Node.js/Python/Docker
- gamilit como submodule (git@github.com:rckrdmrd/gamilit-workspace.git)
- Sistema de puertos estandarizado (3005-3199)

Generated with NEXUS v3.4 Migration System
EPIC-010: Configuracion Git y Repositorios
2026-01-04 03:37:42 -06:00

207 lines
6.2 KiB
Bash
Executable File

#!/bin/bash
# ==============================================================================
# init-workspace.sh - Inicializa el workspace para desarrollo
# ==============================================================================
# Uso: ./init-workspace.sh
#
# Este script:
# 1. Verifica prerequisitos (Docker, etc.)
# 2. Crea las redes Docker necesarias
# 3. Levanta Traefik
# 4. Verifica que todo este funcionando
# ==============================================================================
set -e
# Colores
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
# Rutas
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
CONTROL_PLANE="${SCRIPT_DIR}/../../.."
DOCKER_DIR="${CONTROL_PLANE}/devtools/docker"
echo -e "${BLUE}============================================${NC}"
echo -e "${BLUE} INICIALIZACION DEL WORKSPACE${NC}"
echo -e "${BLUE}============================================${NC}"
echo ""
# ------------------------------------------------------------------------------
# 1. Verificar prerequisitos
# ------------------------------------------------------------------------------
echo -e "${YELLOW}[1/4] Verificando prerequisitos...${NC}"
# Docker
if ! command -v docker &> /dev/null; then
echo -e "${RED}ERROR: Docker no esta instalado${NC}"
echo "Por favor instala Docker Desktop: https://www.docker.com/products/docker-desktop"
exit 1
fi
echo -e " ${GREEN}[OK]${NC} Docker instalado"
# Docker Compose
if ! docker compose version &> /dev/null; then
if ! command -v docker-compose &> /dev/null; then
echo -e "${RED}ERROR: Docker Compose no esta instalado${NC}"
exit 1
fi
fi
echo -e " ${GREEN}[OK]${NC} Docker Compose instalado"
# Docker daemon running
if ! docker info &> /dev/null; then
echo -e "${RED}ERROR: Docker daemon no esta corriendo${NC}"
echo "Por favor inicia Docker Desktop"
exit 1
fi
echo -e " ${GREEN}[OK]${NC} Docker daemon corriendo"
# Python3 (para scripts de validacion)
if ! command -v python3 &> /dev/null; then
echo -e "${YELLOW}WARN: Python3 no instalado - algunas validaciones no funcionaran${NC}"
else
echo -e " ${GREEN}[OK]${NC} Python3 instalado"
fi
# ------------------------------------------------------------------------------
# 2. Crear redes Docker
# ------------------------------------------------------------------------------
echo ""
echo -e "${YELLOW}[2/4] Creando redes Docker...${NC}"
# Red de infraestructura
echo " Creando red: infra_shared"
docker network create infra_shared 2>/dev/null && echo -e " ${GREEN}[CREATED]${NC}" || echo -e " ${YELLOW}[EXISTS]${NC}"
# Redes por proyecto
PROJECTS=("gamilit" "erp_core" "erp_construccion" "erp_mecanicas" "trading" "betting")
ENVIRONMENTS=("local" "dev")
for project in "${PROJECTS[@]}"; do
for env in "${ENVIRONMENTS[@]}"; do
network_name="${project}_${env}"
echo " Creando red: $network_name"
docker network create "$network_name" 2>/dev/null && echo -e " ${GREEN}[CREATED]${NC}" || echo -e " ${YELLOW}[EXISTS]${NC}"
done
done
# ------------------------------------------------------------------------------
# 3. Configurar Traefik
# ------------------------------------------------------------------------------
echo ""
echo -e "${YELLOW}[3/4] Configurando Traefik...${NC}"
TRAEFIK_DIR="${DOCKER_DIR}/traefik"
# Crear directorio si no existe
mkdir -p "${TRAEFIK_DIR}/dynamic"
# Crear traefik.yml si no existe
if [ ! -f "${TRAEFIK_DIR}/traefik.yml" ]; then
echo " Creando traefik.yml..."
cat > "${TRAEFIK_DIR}/traefik.yml" << 'EOF'
# Traefik Configuration
api:
dashboard: true
insecure: true
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
EOF
echo -e " ${GREEN}[OK]${NC} traefik.yml creado"
else
echo -e " ${GREEN}[OK]${NC} traefik.yml existe"
fi
# Crear docker-compose para Traefik
if [ ! -f "${TRAEFIK_DIR}/docker-compose.yml" ]; then
echo " Creando docker-compose.yml para Traefik..."
cat > "${TRAEFIK_DIR}/docker-compose.yml" << 'EOF'
version: "3.8"
services:
traefik:
image: traefik:v2.10
container_name: traefik
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "8080:8080"
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
EOF
echo -e " ${GREEN}[OK]${NC} docker-compose.yml creado"
else
echo -e " ${GREEN}[OK]${NC} docker-compose.yml existe"
fi
# Levantar Traefik
echo " Levantando Traefik..."
cd "${TRAEFIK_DIR}"
docker compose up -d 2>/dev/null || docker-compose up -d
# ------------------------------------------------------------------------------
# 4. Verificar
# ------------------------------------------------------------------------------
echo ""
echo -e "${YELLOW}[4/4] Verificando...${NC}"
sleep 2
# Verificar Traefik
if curl -s http://localhost:8080/api/overview > /dev/null 2>&1; then
echo -e " ${GREEN}[OK]${NC} Traefik dashboard accesible en http://localhost:8080"
else
echo -e " ${YELLOW}[WARN]${NC} Traefik dashboard no responde aun (puede tomar unos segundos)"
fi
# Listar redes
echo ""
echo "Redes Docker creadas:"
docker network ls --filter "driver=bridge" --format " - {{.Name}}" | grep -E "(infra|gamilit|erp|trading|betting)" || true
# ------------------------------------------------------------------------------
# Resultado
# ------------------------------------------------------------------------------
echo ""
echo -e "${BLUE}============================================${NC}"
echo -e "${GREEN} WORKSPACE INICIALIZADO${NC}"
echo -e "${BLUE}============================================${NC}"
echo ""
echo "Proximos pasos:"
echo " 1. Clonar un proyecto: cd repos && git clone <repo-url>"
echo " 2. Ir al proyecto: cd repos/<proyecto>"
echo " 3. Levantar servicios: cd docker && docker-compose up -d"
echo ""
echo "URLs utiles:"
echo " - Traefik Dashboard: http://localhost:8080"
echo ""