Generate Compute Engine instances, templates, and managed instance groups with autoscaling, networking, and security configs. Use when the user wants to create or manage GCE virtual machines.
You are a Google Compute Engine expert. Generate production-ready VM instances, instance templates, and managed instance groups.
Determine from user input or $ARGUMENTS:
General-purpose (most workloads):
e2-*: Cost-optimized, burst-capable (e2-micro, e2-small, e2-medium, e2-standard-2/4/8)n2-* / n2d-*: Balanced performance, sustained use discountsn4-*: Latest generation, best price-performanceCompute-optimized:
c3-* / c3d-*: Highest per-core performance (HPC, gaming, single-threaded)h3-*: High-performance computingMemory-optimized:
m3-*: Large in-memory databases (SAP HANA, in-memory analytics)Accelerator-optimized:
a2-* / a3-*: NVIDIA GPUs (ML training, rendering)g2-*: NVIDIA L4 GPUs (inference, graphics)gcloud CLI - single instance:
gcloud compute instances create my-instance \
--project=$PROJECT_ID \
--zone=us-central1-a \
--machine-type=e2-standard-4 \
--image-family=debian-12 \
--image-project=debian-cloud \
--boot-disk-size=50GB \
--boot-disk-type=pd-balanced \
--network-interface=network=my-vpc,subnet=my-subnet,no-address \
--service-account=my-instance-sa@$PROJECT_ID.iam.gserviceaccount.com \
--scopes=cloud-platform \
--metadata-from-file=startup-script=startup.sh \
--tags=http-server,https-server \
--labels=env=production,team=backend \
--shielded-secure-boot \
--shielded-vtpm \
--shielded-integrity-monitoring
Instance with attached persistent disk:
# Create additional data disk
gcloud compute disks create data-disk \
--zone=us-central1-a \
--size=200GB \
--type=pd-ssd
# Create instance with attached disk
gcloud compute instances create my-instance \
--zone=us-central1-a \
--machine-type=n2-standard-4 \
--image-family=ubuntu-2204-lts \
--image-project=ubuntu-os-cloud \
--boot-disk-size=20GB \
--boot-disk-type=pd-balanced \
--disk=name=data-disk,device-name=data-disk,mode=rw,auto-delete=no
Instance with GPU:
gcloud compute instances create gpu-instance \
--zone=us-central1-a \
--machine-type=g2-standard-4 \
--accelerator=count=1,type=nvidia-l4 \
--image-family=common-cu123-debian-12 \
--image-project=deeplearning-platform-release \
--boot-disk-size=200GB \
--boot-disk-type=pd-ssd \
--maintenance-policy=TERMINATE \
--restart-on-failure
Linux startup script:
#!/bin/bash
set -euo pipefail
# Log startup
echo "Starting instance configuration..." | logger -t startup-script
# Update and install packages
apt-get update -y
apt-get install -y nginx docker.io
# Mount data disk
if [ -e /dev/disk/by-id/google-data-disk ]; then
mkdir -p /mnt/data
if ! blkid /dev/disk/by-id/google-data-disk; then
mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0 /dev/disk/by-id/google-data-disk
fi
mount -o discard,defaults /dev/disk/by-id/google-data-disk /mnt/data
echo '/dev/disk/by-id/google-data-disk /mnt/data ext4 discard,defaults 0 2' >> /etc/fstab
fi
# Fetch config from metadata
APP_ENV=$(curl -s "http://metadata.google.internal/computeMetadata/v1/instance/attributes/app-env" \
-H "Metadata-Flavor: Google")
# Fetch secrets from Secret Manager
DB_PASSWORD=$(gcloud secrets versions access latest --secret="db-password" --project="$PROJECT_ID")
# Configure application
cat > /etc/app/config.yaml <<EOF