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
204 lines
6.2 KiB
Bash
Executable File
204 lines
6.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# ==============================================================================
|
|
# CREATE-NETWORKS.SH - Script para crear redes Docker del workspace
|
|
# ==============================================================================
|
|
# Proposito: Crea todas las redes Docker definidas en networks.yml
|
|
# Mantenido por: DevOps-Agent
|
|
# Actualizado: 2025-12-18
|
|
#
|
|
# USO:
|
|
# ./create-networks.sh # Crear todas las redes
|
|
# ./create-networks.sh gamilit # Crear solo redes de un proyecto
|
|
# ./create-networks.sh --clean # Eliminar todas las redes
|
|
# ==============================================================================
|
|
|
|
set -e
|
|
|
|
# Colores
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# CONFIGURACION
|
|
# ------------------------------------------------------------------------------
|
|
|
|
# Red de infraestructura compartida
|
|
INFRA_NETWORK="infra_shared"
|
|
|
|
# Proyectos y ambientes
|
|
declare -A PROJECTS
|
|
PROJECTS["gamilit"]="local dev staging prod"
|
|
PROJECTS["erp_core"]="local dev staging prod"
|
|
PROJECTS["erp_construccion"]="local dev"
|
|
PROJECTS["erp_mecanicas"]="local dev"
|
|
PROJECTS["trading"]="local dev staging prod"
|
|
PROJECTS["betting"]="local dev"
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# FUNCIONES
|
|
# ------------------------------------------------------------------------------
|
|
|
|
print_header() {
|
|
echo ""
|
|
echo -e "${BLUE}========================================${NC}"
|
|
echo -e "${BLUE}$1${NC}"
|
|
echo -e "${BLUE}========================================${NC}"
|
|
echo ""
|
|
}
|
|
|
|
create_network() {
|
|
local network_name=$1
|
|
local description=$2
|
|
|
|
if docker network inspect "$network_name" >/dev/null 2>&1; then
|
|
echo -e " ${YELLOW}[EXISTE]${NC} $network_name"
|
|
else
|
|
docker network create "$network_name" --driver bridge >/dev/null 2>&1
|
|
echo -e " ${GREEN}[CREADA]${NC} $network_name ${description:+- $description}"
|
|
fi
|
|
}
|
|
|
|
remove_network() {
|
|
local network_name=$1
|
|
|
|
if docker network inspect "$network_name" >/dev/null 2>&1; then
|
|
# Verificar si tiene contenedores conectados
|
|
local containers=$(docker network inspect "$network_name" -f '{{range .Containers}}{{.Name}} {{end}}')
|
|
if [ -n "$containers" ]; then
|
|
echo -e " ${YELLOW}[EN USO]${NC} $network_name - Contenedores: $containers"
|
|
else
|
|
docker network rm "$network_name" >/dev/null 2>&1
|
|
echo -e " ${RED}[ELIMINADA]${NC} $network_name"
|
|
fi
|
|
else
|
|
echo -e " ${YELLOW}[NO EXISTE]${NC} $network_name"
|
|
fi
|
|
}
|
|
|
|
create_infra_network() {
|
|
print_header "Creando red de infraestructura"
|
|
create_network "$INFRA_NETWORK" "Red compartida para servicios de infraestructura"
|
|
}
|
|
|
|
create_project_networks() {
|
|
local project=$1
|
|
|
|
if [ -n "$project" ]; then
|
|
# Crear redes para un proyecto especifico
|
|
if [ -z "${PROJECTS[$project]}" ]; then
|
|
echo -e "${RED}Error: Proyecto '$project' no encontrado${NC}"
|
|
echo "Proyectos disponibles: ${!PROJECTS[@]}"
|
|
exit 1
|
|
fi
|
|
|
|
print_header "Creando redes para: $project"
|
|
for env in ${PROJECTS[$project]}; do
|
|
create_network "${project}_${env}"
|
|
done
|
|
else
|
|
# Crear redes para todos los proyectos
|
|
for proj in "${!PROJECTS[@]}"; do
|
|
print_header "Creando redes para: $proj"
|
|
for env in ${PROJECTS[$proj]}; do
|
|
create_network "${proj}_${env}"
|
|
done
|
|
done
|
|
fi
|
|
}
|
|
|
|
clean_networks() {
|
|
print_header "Eliminando red de infraestructura"
|
|
remove_network "$INFRA_NETWORK"
|
|
|
|
for proj in "${!PROJECTS[@]}"; do
|
|
print_header "Eliminando redes de: $proj"
|
|
for env in ${PROJECTS[$proj]}; do
|
|
remove_network "${proj}_${env}"
|
|
done
|
|
done
|
|
}
|
|
|
|
list_networks() {
|
|
print_header "Redes del Workspace"
|
|
|
|
echo -e "${BLUE}Red de Infraestructura:${NC}"
|
|
if docker network inspect "$INFRA_NETWORK" >/dev/null 2>&1; then
|
|
echo -e " ${GREEN}[OK]${NC} $INFRA_NETWORK"
|
|
else
|
|
echo -e " ${RED}[NO EXISTE]${NC} $INFRA_NETWORK"
|
|
fi
|
|
|
|
for proj in "${!PROJECTS[@]}"; do
|
|
echo ""
|
|
echo -e "${BLUE}Proyecto: $proj${NC}"
|
|
for env in ${PROJECTS[$proj]}; do
|
|
local net="${proj}_${env}"
|
|
if docker network inspect "$net" >/dev/null 2>&1; then
|
|
echo -e " ${GREEN}[OK]${NC} $net"
|
|
else
|
|
echo -e " ${RED}[NO EXISTE]${NC} $net"
|
|
fi
|
|
done
|
|
done
|
|
}
|
|
|
|
show_usage() {
|
|
echo "Uso: $0 [OPCION] [PROYECTO]"
|
|
echo ""
|
|
echo "Opciones:"
|
|
echo " (sin opcion) Crear todas las redes"
|
|
echo " --list Listar estado de redes"
|
|
echo " --clean Eliminar todas las redes"
|
|
echo " --help Mostrar esta ayuda"
|
|
echo ""
|
|
echo "Proyectos disponibles:"
|
|
for proj in "${!PROJECTS[@]}"; do
|
|
echo " - $proj"
|
|
done
|
|
echo ""
|
|
echo "Ejemplos:"
|
|
echo " $0 # Crear todas las redes"
|
|
echo " $0 gamilit # Crear redes de gamilit"
|
|
echo " $0 --list # Ver estado de redes"
|
|
echo " $0 --clean # Eliminar todas las redes"
|
|
}
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# MAIN
|
|
# ------------------------------------------------------------------------------
|
|
|
|
case "${1:-}" in
|
|
--help|-h)
|
|
show_usage
|
|
;;
|
|
--list|-l)
|
|
list_networks
|
|
;;
|
|
--clean|-c)
|
|
echo -e "${YELLOW}ADVERTENCIA: Esto eliminara todas las redes del workspace${NC}"
|
|
read -p "Continuar? (y/N): " confirm
|
|
if [ "$confirm" = "y" ] || [ "$confirm" = "Y" ]; then
|
|
clean_networks
|
|
echo ""
|
|
echo -e "${GREEN}Limpieza completada${NC}"
|
|
else
|
|
echo "Operacion cancelada"
|
|
fi
|
|
;;
|
|
"")
|
|
create_infra_network
|
|
create_project_networks
|
|
echo ""
|
|
echo -e "${GREEN}Todas las redes creadas exitosamente${NC}"
|
|
;;
|
|
*)
|
|
create_infra_network
|
|
create_project_networks "$1"
|
|
echo ""
|
|
echo -e "${GREEN}Redes creadas para: $1${NC}"
|
|
;;
|
|
esac
|