|
|
#!/bin/bash |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
echo "🚀 FitTürkAI için Yüksek RAM'li Google Cloud VM Oluşturucu" |
|
|
echo "============================================================" |
|
|
|
|
|
|
|
|
RED='\033[0;31m' |
|
|
GREEN='\033[0;32m' |
|
|
YELLOW='\033[1;33m' |
|
|
BLUE='\033[0;34m' |
|
|
NC='\033[0m' |
|
|
|
|
|
|
|
|
PROJECT_ID="" |
|
|
VM_NAME="fitturkrai-high-ram" |
|
|
ZONE="us-central1-a" |
|
|
REGION="us-central1" |
|
|
|
|
|
|
|
|
echo -e "${BLUE}📊 Mevcut RAM Seçenekleri:${NC}" |
|
|
echo "1. n2-highmem-2: 2 vCPU, 16 GB RAM (~$100/ay) [Temel]" |
|
|
echo "2. n2-highmem-4: 4 vCPU, 32 GB RAM (~$200/ay) [Önerilen]" |
|
|
echo "3. n2-highmem-8: 8 vCPU, 64 GB RAM (~$400/ay) [Yüksek Performans]" |
|
|
echo "4. n2-highmem-16: 16 vCPU, 128 GB RAM (~$800/ay) [Maksimum]" |
|
|
echo "5. n2-highmem-32: 32 vCPU, 256 GB RAM (~$1600/ay) [Ultra]" |
|
|
echo "6. m2-ultramem-416: 416 vCPU, 5.9 TB RAM (~$30000/ay) [Extreme - Sadece özel durumlar]" |
|
|
|
|
|
echo "" |
|
|
read -p "🔢 Seçiminizi yapın (1-6): " choice |
|
|
|
|
|
case $choice in |
|
|
1) |
|
|
MACHINE_TYPE="n2-highmem-2" |
|
|
RAM_GB="16" |
|
|
;; |
|
|
2) |
|
|
MACHINE_TYPE="n2-highmem-4" |
|
|
RAM_GB="32" |
|
|
;; |
|
|
3) |
|
|
MACHINE_TYPE="n2-highmem-8" |
|
|
RAM_GB="64" |
|
|
;; |
|
|
4) |
|
|
MACHINE_TYPE="n2-highmem-16" |
|
|
RAM_GB="128" |
|
|
;; |
|
|
5) |
|
|
MACHINE_TYPE="n2-highmem-32" |
|
|
RAM_GB="256" |
|
|
;; |
|
|
6) |
|
|
MACHINE_TYPE="m2-ultramem-416" |
|
|
RAM_GB="5888" |
|
|
echo -e "${RED}⚠️ UYARI: Bu çok pahalı bir seçenek! Sadece özel durumlar için.${NC}" |
|
|
read -p "Devam etmek istediğinizden emin misiniz? (y/N): " confirm |
|
|
if [[ $confirm != "y" ]]; then |
|
|
echo "İşlem iptal edildi." |
|
|
exit 1 |
|
|
fi |
|
|
;; |
|
|
*) |
|
|
echo -e "${RED}❌ Geçersiz seçim! Varsayılan olarak n2-highmem-4 kullanılacak.${NC}" |
|
|
MACHINE_TYPE="n2-highmem-4" |
|
|
RAM_GB="32" |
|
|
;; |
|
|
esac |
|
|
|
|
|
echo -e "${GREEN}✅ Seçilen: ${MACHINE_TYPE} (${RAM_GB} GB RAM)${NC}" |
|
|
|
|
|
|
|
|
if [ -z "$PROJECT_ID" ]; then |
|
|
echo "" |
|
|
echo -e "${YELLOW}🏗️ Google Cloud Project ID gerekli${NC}" |
|
|
read -p "Project ID'nizi girin: " PROJECT_ID |
|
|
fi |
|
|
|
|
|
|
|
|
echo "" |
|
|
echo -e "${BLUE}💽 Disk Boyutu Seçimi:${NC}" |
|
|
echo "1. 50 GB [Temel - Sadece sistem]" |
|
|
echo "2. 100 GB [Önerilen - Modeller + veri]" |
|
|
echo "3. 200 GB [Yüksek - Büyük veri setleri]" |
|
|
echo "4. 500 GB [Maksimum - Çok büyük modeller]" |
|
|
|
|
|
read -p "Disk boyutunu seçin (1-4): " disk_choice |
|
|
|
|
|
case $disk_choice in |
|
|
1) DISK_SIZE="50" ;; |
|
|
2) DISK_SIZE="100" ;; |
|
|
3) DISK_SIZE="200" ;; |
|
|
4) DISK_SIZE="500" ;; |
|
|
*) |
|
|
echo -e "${YELLOW}⚠️ Varsayılan 100GB kullanılacak${NC}" |
|
|
DISK_SIZE="100" |
|
|
;; |
|
|
esac |
|
|
|
|
|
|
|
|
echo "" |
|
|
echo -e "${BLUE}🚀 VM oluşturuluyor...${NC}" |
|
|
|
|
|
|
|
|
STARTUP_SCRIPT="#!/bin/bash |
|
|
# FitTürkAI Setup Script |
|
|
apt-get update && apt-get upgrade -y |
|
|
apt-get install -y python3 python3-pip python3-venv git htop tree curl wget |
|
|
|
|
|
# Python environment setup |
|
|
python3 -m pip install --upgrade pip |
|
|
pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu |
|
|
|
|
|
# Clone repository (replace with your repo) |
|
|
# git clone https://github.com/YOUR_USERNAME/FitTurkAI-RAG.git /home/ubuntu/FitTurkAI-RAG |
|
|
# chown -R ubuntu:ubuntu /home/ubuntu/FitTurkAI-RAG |
|
|
|
|
|
# System optimizations for high RAM |
|
|
echo 'vm.swappiness=10' >> /etc/sysctl.conf |
|
|
echo 'vm.vfs_cache_pressure=50' >> /etc/sysctl.conf |
|
|
sysctl -p |
|
|
|
|
|
# Install monitoring tools |
|
|
apt-get install -y iotop nethogs |
|
|
|
|
|
echo 'FitTürkAI VM setup completed!' >> /var/log/startup-script.log |
|
|
" |
|
|
|
|
|
|
|
|
gcloud compute instances create $VM_NAME \ |
|
|
--project=$PROJECT_ID \ |
|
|
--zone=$ZONE \ |
|
|
--machine-type=$MACHINE_TYPE \ |
|
|
--network-interface=network-tier=PREMIUM,stack-type=IPV4_ONLY,subnet=default \ |
|
|
--metadata="startup-script=$STARTUP_SCRIPT" \ |
|
|
--maintenance-policy=MIGRATE \ |
|
|
--provisioning-model=STANDARD \ |
|
|
--service-account=default \ |
|
|
--scopes=https://www.googleapis.com/auth/cloud-platform \ |
|
|
--tags=fitturkrai,http-server,https-server \ |
|
|
--create-disk=auto-delete=yes,boot=yes,device-name=$VM_NAME,image=projects/ubuntu-os-cloud/global/images/ubuntu-2204-jammy-v20240319,mode=rw,size=$DISK_SIZE,type=projects/$PROJECT_ID/zones/$ZONE/diskTypes/pd-balanced \ |
|
|
--no-shielded-secure-boot \ |
|
|
--shielded-vtpm \ |
|
|
--shielded-integrity-monitoring \ |
|
|
--labels=purpose=ml,project=fitturkrai \ |
|
|
--reservation-affinity=any |
|
|
|
|
|
if [ $? -eq 0 ]; then |
|
|
echo -e "${GREEN}✅ VM başarıyla oluşturuldu!${NC}" |
|
|
echo "" |
|
|
echo -e "${BLUE}📋 VM Bilgileri:${NC}" |
|
|
echo " Ad: $VM_NAME" |
|
|
echo " Tip: $MACHINE_TYPE" |
|
|
echo " RAM: ${RAM_GB} GB" |
|
|
echo " Disk: ${DISK_SIZE} GB" |
|
|
echo " Zone: $ZONE" |
|
|
echo "" |
|
|
|
|
|
|
|
|
EXTERNAL_IP=$(gcloud compute instances describe $VM_NAME --zone=$ZONE --format='get(networkInterfaces[0].accessConfigs[0].natIP)') |
|
|
echo -e "${GREEN}🌐 External IP: $EXTERNAL_IP${NC}" |
|
|
echo "" |
|
|
|
|
|
echo -e "${BLUE}🔗 Bağlantı Komutları:${NC}" |
|
|
echo " SSH: gcloud compute ssh $VM_NAME --zone=$ZONE" |
|
|
echo " SSH Direct: ssh ubuntu@$EXTERNAL_IP" |
|
|
echo "" |
|
|
|
|
|
echo -e "${YELLOW}⏳ VM'nin hazır olması için ~2-3 dakika bekleyin${NC}" |
|
|
echo -e "${BLUE}📦 Sonraki adımlar:${NC}" |
|
|
echo "1. SSH ile bağlanın" |
|
|
echo "2. Repository'yi klonlayın" |
|
|
echo "3. FitTürkAI sistemini kurun" |
|
|
|
|
|
|
|
|
echo "" |
|
|
read -p "🔌 Şimdi SSH ile bağlanmak ister misiniz? (y/N): " connect_now |
|
|
if [[ $connect_now == "y" ]]; then |
|
|
echo "SSH bağlantısı kuruluyor..." |
|
|
gcloud compute ssh $VM_NAME --zone=$ZONE |
|
|
fi |
|
|
|
|
|
else |
|
|
echo -e "${RED}❌ VM oluşturma başarısız!${NC}" |
|
|
exit 1 |
|
|
fi |