#!/bin/bash # Script interativo para setup no Google Cloud # Execute: bash setup-gcp.sh set -e echo "╔══════════════════════════════════════════════════════════╗" echo "║ 🚀 Setup Google Cloud para Orquestrador MVP ║" echo "╚══════════════════════════════════════════════════════════╝" echo "" # Cores para output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # Função para perguntar ask() { local prompt="$1" local default="$2" local input read -p "$prompt [$default]: " input echo "${input:-$default}" } # Função para sucesso success() { echo -e "${GREEN}✅ $1${NC}" } # Função para erro error() { echo -e "${RED}❌ $1${NC}" exit 1 } # Função para info info() { echo -e "${BLUE}ℹ️ $1${NC}" } # Função para aviso warning() { echo -e "${YELLOW}⚠️ $1${NC}" } # ============================================================================ # STEP 1: Verificar pré-requisitos # ============================================================================ echo "" echo "📋 STEP 1: Verificando pré-requisitos..." echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" # Verificar gcloud if ! command -v gcloud &> /dev/null; then error "Google Cloud SDK não instalado. Acesse: https://cloud.google.com/sdk/docs/install" fi success "Google Cloud SDK instalado" # Verificar autenticação if ! gcloud auth list --filter=status:ACTIVE --format="value(account)" | grep -q "@"; then warning "Você não está autenticado no Google Cloud" info "Executando: gcloud auth login" gcloud auth login fi success "Autenticado no Google Cloud" echo "" # ============================================================================ # STEP 2: Definir ou escolher projeto # ============================================================================ echo "" echo "📦 STEP 2: Configurar Projeto Google Cloud..." echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" # Listar projetos existentes echo "" info "Seus projetos atuais:" gcloud projects list --format="table(projectId,name)" | head -10 echo "" PROJECT_ID=$(ask "Digite seu PROJECT_ID (ex: orquestrador-mvp)" "orquestrador-mvp") # Verificar se projeto existe if gcloud projects describe "$PROJECT_ID" &> /dev/null; then success "Projeto '$PROJECT_ID' encontrado" else warning "Projeto '$PROJECT_ID' não existe. Criando..." gcloud projects create "$PROJECT_ID" --name="Orquestrador MVP" success "Projeto criado" fi # Configurar como padrão gcloud config set project "$PROJECT_ID" success "Projeto configurado como padrão" echo "" # ============================================================================ # STEP 3: Habilitar APIs # ============================================================================ echo "" echo "🔧 STEP 3: Habilitando APIs necessárias..." echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" info "Habilitando: Cloud Run, Vertex AI, Cloud Build, Cloud SQL..." gcloud services enable \ run.googleapis.com \ aiplatform.googleapis.com \ cloudbuild.googleapis.com \ sqladmin.googleapis.com \ cloudresourcemanager.googleapis.com \ --quiet success "APIs habilitadas" echo "" # ============================================================================ # STEP 4: Configurar Cloud SQL # ============================================================================ echo "" echo "🗄️ STEP 4: Configurar Banco de Dados (Cloud SQL)..." echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" DB_INSTANCE_NAME="orquestrador-db" REGION="us-central1" # Verificar se instância existe if gcloud sql instances describe "$DB_INSTANCE_NAME" --region="$REGION" &> /dev/null; then success "Instância Cloud SQL já existe" else warning "Criando instância Cloud SQL PostgreSQL..." warning "Isso pode levar 2-3 minutos..." gcloud sql instances create "$DB_INSTANCE_NAME" \ --database-version=POSTGRES_15 \ --region="$REGION" \ --tier=db-f1-micro \ --no-assign-ip \ --quiet success "Instância Cloud SQL criada" fi # Criar banco de dados if gcloud sql databases describe orquestrador --instance="$DB_INSTANCE_NAME" &> /dev/null; then success "Banco de dados já existe" else info "Criando banco de dados 'orquestrador'..." gcloud sql databases create orquestrador \ --instance="$DB_INSTANCE_NAME" \ --quiet success "Banco de dados criado" fi # Definir senha echo "" read -s -p "Defina uma senha segura para o usuário 'postgres': " DB_PASSWORD echo "" gcloud sql users set-password postgres \ --instance="$DB_INSTANCE_NAME" \ --password="$DB_PASSWORD" \ --quiet success "Senha do usuário postgres definida" echo "" # ============================================================================ # STEP 5: Configurar variáveis de ambiente # ============================================================================ echo "" echo "🔐 STEP 5: Configurar Variáveis de Ambiente..." echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" MOCKAROO_API_KEY=$(ask "Cole sua API Key do Mockaroo (https://www.mockaroo.com)" "") if [ -z "$MOCKAROO_API_KEY" ]; then error "API Key do Mockaroo é obrigatória" fi # Criar arquivo .env.prod cat > .env.prod << EOF GOOGLE_PROJECT_ID=$PROJECT_ID GOOGLE_LOCATION=$REGION DB_HOST=/cloudsql/$PROJECT_ID:$REGION:$DB_INSTANCE_NAME DB_PORT=5432 DB_USER=postgres DB_PASSWORD=$DB_PASSWORD DB_NAME=orquestrador MOCKAROO_API_KEY=$MOCKAROO_API_KEY MOCKAROO_BASE_URL=https://my.api.mockaroo.com USE_MOCKAROO_WRITES=false EOF success "Arquivo .env.prod criado" warning "O arquivo .env.prod contém senhas. Nunca commite!" echo "" # ============================================================================ # STEP 6: Resumo # ============================================================================ echo "" echo "╔══════════════════════════════════════════════════════════╗" echo "║ ✅ Setup Completo! ║" echo "╚══════════════════════════════════════════════════════════╝" echo "" echo "📋 Configuração Resumida:" echo " Projeto: $PROJECT_ID" echo " Banco de dados: orquestrador-db ($REGION)" echo " Usuário: postgres" echo " Banco: orquestrador" echo "" echo "🚀 Próximos passos:" echo "" echo " 1. Teste a aplicação localmente (opcional):" echo " docker-compose up" echo " bash test-local.sh http://localhost:8000" echo "" echo " 2. Faça o deploy no Google Cloud:" echo " bash deploy.sh $PROJECT_ID $REGION" echo "" echo " 3. Pegue a URL do seu serviço:" echo " gcloud run services describe orquestrador --region=$REGION --format='value(status.url)'" echo "" echo "💡 Dicas:" echo " - Docs: cat README.md" echo " - Troubleshooting: cat TROUBLESHOOTING.md" echo " - Deploy Simples: cat DEPLOY_SIMPLES.md" echo ""