initial commit
This commit is contained in:
296
scripts/env-setup.sh
Executable file
296
scripts/env-setup.sh
Executable file
@@ -0,0 +1,296 @@
|
||||
#!/bin/bash
|
||||
# ====================================
|
||||
# SCRIPT DE CONFIGURACIÓN DE ENTORNO
|
||||
# Balotario Licencia A-I
|
||||
# ====================================
|
||||
|
||||
set -e # Salir en caso de error
|
||||
|
||||
# Colores para output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# Función para imprimir con colores
|
||||
print_info() {
|
||||
echo -e "${ $1${NC}"
|
||||
}
|
||||
|
||||
print_success() {
|
||||
echo -e "${GREEN}✅ $1${NC}"
|
||||
}
|
||||
|
||||
print_warning() {
|
||||
echo -e "${YELLOW}⚠️ $1${NC}"
|
||||
}
|
||||
|
||||
print_error() {
|
||||
echo -e "${RED}❌ $1${NC}"
|
||||
}
|
||||
|
||||
print_header() {
|
||||
echo -e "${BLUE}"
|
||||
echo "======================================"
|
||||
echo "🌍 CONFIGURACIÓN DE ENTORNO"
|
||||
echo "Balotario Licencia A-I"
|
||||
echo "======================================"
|
||||
echo -e "${NC}"
|
||||
}
|
||||
|
||||
# Función para generar SECRET_KEY
|
||||
generate_secret_key() {
|
||||
if command -v python3 &> /dev/null; then
|
||||
python3 -c "import secrets; print(secrets.token_hex(32))"
|
||||
elif command -v python &> /dev/null; then
|
||||
python -c "import secrets; print(secrets.token_hex(32))"
|
||||
elif command -v openssl &> /dev/null; then
|
||||
openssl rand -hex 32
|
||||
else
|
||||
# Fallback básico
|
||||
date +%s | sha256sum | base64 | head -c 32
|
||||
fi
|
||||
}
|
||||
|
||||
# Función para configurar desarrollo
|
||||
setup_development() {
|
||||
print_info "Configurando entorno de desarrollo..."
|
||||
|
||||
SECRET_KEY=$(generate_secret_key)
|
||||
|
||||
cat > .env << EOF
|
||||
# ====================================
|
||||
# CONFIGURACIÓN DE DESARROLLO
|
||||
# Generado automáticamente: $(date)
|
||||
# ====================================
|
||||
|
||||
# Configuración de Flask
|
||||
SECRET_KEY=${SECRET_KEY}
|
||||
FLASK_ENV=development
|
||||
FLASK_CONFIG=development
|
||||
FLASK_DEBUG=true
|
||||
|
||||
# Configuración del servidor
|
||||
HOST=127.0.0.1
|
||||
PORT=5000
|
||||
|
||||
# Configuración de Docker
|
||||
DOCKER_CONTAINER=false
|
||||
|
||||
# Configuración de logging
|
||||
LOG_LEVEL=DEBUG
|
||||
AUTO_RELOAD=true
|
||||
SHOW_DEBUG_TOOLBAR=false
|
||||
|
||||
# ====================================
|
||||
# NOTAS:
|
||||
# - Cambia SECRET_KEY antes de ir a producción
|
||||
# - Revisa .env.sample para más opciones
|
||||
# ====================================
|
||||
EOF
|
||||
|
||||
print_success "Configuración de desarrollo creada en .env"
|
||||
}
|
||||
|
||||
# Función para configurar producción
|
||||
setup_production() {
|
||||
print_info "Configurando entorno de producción..."
|
||||
|
||||
SECRET_KEY=$(generate_secret_key)
|
||||
|
||||
cat > .env << EOF
|
||||
# ====================================
|
||||
# CONFIGURACIÓN DE PRODUCCIÓN
|
||||
# Generado automáticamente: $(date)
|
||||
# ====================================
|
||||
|
||||
# Configuración de Flask
|
||||
SECRET_KEY=${SECRET_KEY}
|
||||
FLASK_ENV=production
|
||||
FLASK_CONFIG=production
|
||||
FLASK_DEBUG=false
|
||||
|
||||
# Configuración del servidor
|
||||
HOST=0.0.0.0
|
||||
PORT=5000
|
||||
|
||||
# Configuración de Docker
|
||||
DOCKER_CONTAINER=true
|
||||
|
||||
# Configuración de logging
|
||||
LOG_LEVEL=INFO
|
||||
|
||||
# ====================================
|
||||
# IMPORTANTE:
|
||||
# - Guarda SECRET_KEY en lugar seguro
|
||||
# - Revisa todas las configuraciones antes de desplegar
|
||||
# - Considera usar variables de entorno del sistema
|
||||
# ====================================
|
||||
EOF
|
||||
|
||||
print_success "Configuración de producción creada en .env"
|
||||
print_warning "IMPORTANTE: Guarda la SECRET_KEY en un lugar seguro"
|
||||
}
|
||||
|
||||
# Función para configurar Docker
|
||||
setup_docker() {
|
||||
print_info "Configurando entorno para Docker..."
|
||||
|
||||
SECRET_KEY=$(generate_secret_key)
|
||||
|
||||
cat > .env << EOF
|
||||
# ====================================
|
||||
# CONFIGURACIÓN PARA DOCKER
|
||||
# Generado automáticamente: $(date)
|
||||
# ====================================
|
||||
|
||||
# Configuración de Flask
|
||||
SECRET_KEY=${SECRET_KEY}
|
||||
FLASK_ENV=production
|
||||
FLASK_CONFIG=production
|
||||
FLASK_DEBUG=false
|
||||
|
||||
# Configuración del servidor
|
||||
HOST=0.0.0.0
|
||||
PORT=5000
|
||||
|
||||
# Configuración de Docker
|
||||
DOCKER_CONTAINER=true
|
||||
|
||||
# Configuración de logging
|
||||
LOG_LEVEL=INFO
|
||||
|
||||
# ====================================
|
||||
# DOCKER NOTES:
|
||||
# - Estas variables pueden ser sobrescritas en docker-compose.yml
|
||||
# - Para desarrollo con Docker, cambia FLASK_ENV=development
|
||||
# ====================================
|
||||
EOF
|
||||
|
||||
print_success "Configuración para Docker creada en .env"
|
||||
}
|
||||
|
||||
# Función para validar configuración
|
||||
validate_env() {
|
||||
print_info "Validando configuración..."
|
||||
|
||||
if [ ! -f ".env" ]; then
|
||||
print_error "Archivo .env no encontrado"
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Verificar variables esenciales
|
||||
if ! grep -q "SECRET_KEY=" .env; then
|
||||
print_error "SECRET_KEY no encontrada en .env"
|
||||
return 1
|
||||
fi
|
||||
|
||||
if ! grep -q "FLASK_ENV=" .env; then
|
||||
print_error "FLASK_ENV no encontrada en .env"
|
||||
return 1
|
||||
fi
|
||||
|
||||
print_success "Configuración válida"
|
||||
|
||||
# Mostrar resumen
|
||||
echo ""
|
||||
print_info "Resumen de configuración:"
|
||||
echo "------------------------"
|
||||
grep -E "^(SECRET_KEY|FLASK_ENV|FLASK_DEBUG|HOST|PORT)=" .env | while read line; do
|
||||
key=$(echo $line | cut -d'=' -f1)
|
||||
value=$(echo $line | cut -d'=' -f2)
|
||||
if [ "$key" = "SECRET_KEY" ]; then
|
||||
echo " $key=***OCULTA***"
|
||||
else
|
||||
echo " $key=$value"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# Función para mostrar ayuda
|
||||
show_help() {
|
||||
echo "Uso: $0 [COMANDO]"
|
||||
echo ""
|
||||
echo "Comandos disponibles:"
|
||||
echo " dev Configurar para desarrollo local"
|
||||
echo " prod Configurar para producción"
|
||||
echo " docker Configurar para Docker"
|
||||
echo " validate Validar configuración actual"
|
||||
echo " backup Crear backup de .env actual"
|
||||
echo " restore Restaurar desde .env.sample"
|
||||
echo " help Mostrar esta ayuda"
|
||||
echo ""
|
||||
echo "Ejemplos:"
|
||||
echo " $0 dev # Configuración de desarrollo"
|
||||
echo " $0 prod # Configuración de producción"
|
||||
echo " $0 docker # Configuración para Docker"
|
||||
}
|
||||
|
||||
# Función para crear backup
|
||||
backup_env() {
|
||||
if [ -f ".env" ]; then
|
||||
backup_file=".env.backup.$(date +%Y%m%d_%H%M%S)"
|
||||
cp .env "$backup_file"
|
||||
print_success "Backup creado: $backup_file"
|
||||
else
|
||||
print_warning "No hay archivo .env para respaldar"
|
||||
fi
|
||||
}
|
||||
|
||||
# Función para restaurar desde sample
|
||||
restore_env() {
|
||||
if [ -f ".env.sample" ]; then
|
||||
cp .env.sample .env
|
||||
print_success "Configuración restaurada desde .env.sample"
|
||||
print_warning "Recuerda personalizar los valores en .env"
|
||||
else
|
||||
print_error "Archivo .env.sample no encontrado"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
# Función principal
|
||||
main() {
|
||||
print_header
|
||||
|
||||
case "${1:-help}" in
|
||||
"dev"|"development")
|
||||
backup_env
|
||||
setup_development
|
||||
validate_env
|
||||
;;
|
||||
"prod"|"production")
|
||||
backup_env
|
||||
setup_production
|
||||
validate_env
|
||||
;;
|
||||
"docker")
|
||||
backup_env
|
||||
setup_docker
|
||||
validate_env
|
||||
;;
|
||||
"validate"|"check")
|
||||
validate_env
|
||||
;;
|
||||
"backup")
|
||||
backup_env
|
||||
;;
|
||||
"restore")
|
||||
backup_env
|
||||
restore_env
|
||||
;;
|
||||
"help"|"--help"|"-h")
|
||||
show_help
|
||||
;;
|
||||
*)
|
||||
print_error "Comando desconocido: $1"
|
||||
echo ""
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Ejecutar función principal
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user