-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsetup_infrastructure.sh
More file actions
72 lines (58 loc) · 2.21 KB
/
setup_infrastructure.sh
File metadata and controls
72 lines (58 loc) · 2.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#!/bin/bash
set -e
echo "🚀 Setting up Forge Master Infrastructure..."
# Variables
PROJECT_ID="forge-master-$(date +%s)"
REGION="europe-west1"
BUCKET_NAME="forge-master-models-$PROJECT_ID"
# Create project
echo "Creating project..."
gcloud projects create $PROJECT_ID --name="Forge Master"
gcloud config set project $PROJECT_ID
# Enable APIs
echo "Enabling APIs..."
gcloud services enable run.googleapis.com cloudbuild.googleapis.com \
artifactregistry.googleapis.com storage.googleapis.com \
firestore.googleapis.com aiplatform.googleapis.com \
generativelanguage.googleapis.com logging.googleapis.com \
monitoring.googleapis.com iam.googleapis.com secretmanager.googleapis.com
# Create bucket
echo "Creating Cloud Storage bucket..."
gcloud storage buckets create gs://$BUCKET_NAME --location=$REGION
# Configure CORS
echo '[{"origin":["*"],"method":["GET","HEAD"],"responseHeader":["Content-Type"],"maxAgeSeconds":3600}]' > cors.json
gcloud storage buckets update gs://$BUCKET_NAME --cors-file=cors.json
# Public access
gcloud storage buckets add-iam-policy-binding gs://$BUCKET_NAME \
--member=allUsers --role=roles/storage.objectViewer
# Create Firestore
echo "Creating Firestore database..."
gcloud firestore databases create --location=eur3 --type=firestore-native
# Create service account
echo "Creating service account..."
gcloud iam service-accounts create forge-master-sa
SA_EMAIL="forge-master-sa@$PROJECT_ID.iam.gserviceaccount.com"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SA_EMAIL" \
--role="roles/storage.objectAdmin"
gcloud projects add-iam-policy-binding $PROJECT_ID \
--member="serviceAccount:$SA_EMAIL" \
--role="roles/datastore.user"
gcloud iam service-accounts keys create forge-master-key.json \
--iam-account=$SA_EMAIL
# Create .env
cat > .env << EOF
PROJECT_ID=$PROJECT_ID
REGION=$REGION
BUCKET_NAME=$BUCKET_NAME
GOOGLE_API_KEY=GET_FROM_AI_STUDIO
GOOGLE_APPLICATION_CREDENTIALS=./forge-master-key.json
EOF
echo ""
echo "✅ Infrastructure setup complete!"
echo ""
echo "📋 Next steps:"
echo "1. Get API key from https://aistudio.google.com/app/apikey"
echo "2. Update .env file with your API key"
echo "3. Project ID: $PROJECT_ID"
echo "4. Bucket: $BUCKET_NAME"