
Gcp Compute
- 88 installs
- 44 repo stars
- Updated May 22, 2026
- bagelhole/devops-security-agent-skills
gcp-compute is a Claude skill that deploys, scales, and manages Compute Engine virtual machines and managed instance groups on GCP.
About
gcp-compute deploys, manages, and scales Compute Engine virtual machines on Google Cloud Platform. A developer uses it to provision VMs with full OS control, create managed instance groups with auto-healing and autoscaling, and cost-optimize with spot VMs. It includes machine-type references, snapshot policies, and Terraform config.
- Create instances with shielded VM, startup scripts, and data disks
- Managed instance groups with autoscaling and rolling updates
- Preemptible/spot VMs, snapshots, and Terraform config
Gcp Compute by the numbers
- 88 all-time installs (skills.sh)
- Ranked #594 of 1,039 Cloud & Infrastructure skills by installs in the Skillselion catalog
- Data as of Jul 28, 2026 (Skillselion catalog sync)
gcp-compute capabilities & compatibility
Skill is free; Compute Engine bills per VM, with spot VMs offered as a cost-optimization option.
- Capabilities
- vm provisioning · autoscaling · infrastructure management
- Works with
- gcp · terraform
- Use cases
- devops · ci cd
- Runs
- Hosted SaaS
- Pricing
- Freemium
What gcp-compute says it does
Manage Compute Engine instances and instance templates. Configure managed instance groups and preemptible VMs.
Deploy, manage, and scale Compute Engine virtual machines on Google Cloud Platform.
npx skills add https://github.com/bagelhole/devops-security-agent-skills --skill gcp-computeAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 88 |
|---|---|
| repo stars | ★ 44 |
| Last updated | May 22, 2026 |
| Repository | bagelhole/devops-security-agent-skills ↗ |
What it does
Provision and autoscale Compute Engine VMs and managed instance groups on GCP for backend workloads.
Who is it for?
Deploying and autoscaling VM-based workloads that need full OS control on GCP.
Skip if: Request-based or serverless workloads better suited to Cloud Run or Cloud Functions.
When should I use this skill?
You are deploying compute resources, managed instance groups, or spot VMs on GCP.
What you get
Compute Engine instances and autoscaling managed instance groups with snapshots and Terraform.
- gcloud instance and MIG commands
- autoscaling and health-check config
- snapshot policies and Terraform
By the numbers
- 5 machine-type families referenced (E2, N2, C2, plus custom)
Files
GCP Compute Engine
Deploy, manage, and scale Compute Engine virtual machines on Google Cloud Platform.
When to Use
- Deploying web servers, application backends, or batch-processing workloads on GCP
- Running workloads that need full OS-level control (unlike Cloud Run or App Engine)
- Creating managed instance groups for auto-healing and auto-scaling behind a load balancer
- Provisioning GPU-attached VMs for ML training or rendering pipelines
- Cost-optimizing non-critical workloads with preemptible or spot VMs
Prerequisites
- Google Cloud SDK (
gcloud) installed and authenticated - A GCP project with the Compute Engine API enabled
- IAM role
roles/compute.adminor scoped roles for instance management
gcloud auth list
gcloud config set project $PROJECT_ID
gcloud services enable compute.googleapis.comMachine Types Reference
| Family | Example | vCPUs | Memory | Use Case |
|---|---|---|---|---|
| E2 | e2-micro | 0.25 | 1 GB | Dev/test, microservices |
| E2 | e2-medium | 1 | 4 GB | Light web servers |
| N2 | n2-standard-4 | 4 | 16 GB | General-purpose production |
| N2 | n2-highmem-8 | 8 | 64 GB | In-memory caches, databases |
| C2 | c2-standard-16 | 16 | 64 GB | Compute-intensive, HPC |
# List machine types available in a zone
gcloud compute machine-types list --zones=us-central1-a --filter="name~'e2-'"
# Create a custom machine type (6 vCPUs, 24 GB RAM)
gcloud compute instances create custom-vm \
--custom-cpu=6 --custom-memory=24GB \
--zone=us-central1-a \
--image-family=debian-12 --image-project=debian-cloudCreate an Instance
# Production instance with shielded VM and startup script
gcloud compute instances create web-server \
--machine-type=e2-medium \
--zone=us-central1-a \
--image-family=debian-12 \
--image-project=debian-cloud \
--boot-disk-size=20GB \
--boot-disk-type=pd-balanced \
--tags=http-server,https-server \
--labels=env=production,team=backend \
--metadata=enable-oslogin=TRUE \
--shielded-secure-boot \
--shielded-vtpm \
--shielded-integrity-monitoring
# Instance with a startup script and service account
gcloud compute instances create app-server \
--machine-type=e2-standard-2 \
--zone=us-central1-a \
--image-family=ubuntu-2204-lts \
--image-project=ubuntu-os-cloud \
--boot-disk-size=50GB \
--metadata-from-file=startup-script=startup.sh \
--service-account=app-sa@${PROJECT_ID}.iam.gserviceaccount.com \
--scopes=cloud-platform
# Instance with an additional data disk
gcloud compute instances create db-server \
--machine-type=n2-highmem-4 \
--zone=us-central1-a \
--image-family=debian-12 --image-project=debian-cloud \
--boot-disk-size=20GB \
--create-disk=name=data-disk,size=200GB,type=pd-ssd,auto-delete=noStartup Script Example
#!/bin/bash
# startup.sh - runs on first boot and every reboot
set -euo pipefail
apt-get update && apt-get install -y nginx
systemctl enable nginx && systemctl start nginx
curl -X PUT -H "Metadata-Flavor: Google" \
"http://metadata.google.internal/computeMetadata/v1/instance/guest-attributes/startup/status" \
-d "complete"Instance Templates and Managed Instance Groups
# Create an instance template
gcloud compute instance-templates create web-template \
--machine-type=e2-medium \
--image-family=debian-12 --image-project=debian-cloud \
--boot-disk-size=20GB --tags=http-server \
--metadata-from-file=startup-script=startup.sh
# Create a regional managed instance group (MIG) with health check
gcloud compute health-checks create http http-health-check \
--port=80 --request-path=/healthz \
--check-interval=10s --timeout=5s \
--healthy-threshold=2 --unhealthy-threshold=3
gcloud compute instance-groups managed create web-mig \
--template=web-template --size=3 \
--region=us-central1 \
--health-check=http-health-check --initial-delay=120
# Configure autoscaling
gcloud compute instance-groups managed set-autoscaling web-mig \
--region=us-central1 \
--min-num-replicas=2 --max-num-replicas=10 \
--target-cpu-utilization=0.65 --cool-down-period=90
# Rolling update to a new template
gcloud compute instance-groups managed rolling-action start-update web-mig \
--version=template=web-template-v2 \
--region=us-central1 --max-surge=3 --max-unavailable=0Preemptible and Spot VMs
# Spot VM (recommended over legacy preemptible)
gcloud compute instances create spot-worker \
--machine-type=n2-standard-8 \
--zone=us-central1-a \
--image-family=debian-12 --image-project=debian-cloud \
--provisioning-model=SPOT \
--instance-termination-action=STOP
# Spot instance template for batch MIG
gcloud compute instance-templates create batch-template \
--machine-type=n2-standard-4 \
--image-family=debian-12 --image-project=debian-cloud \
--provisioning-model=SPOT \
--instance-termination-action=DELETESnapshots and Images
# Create a snapshot
gcloud compute disks snapshot web-server \
--zone=us-central1-a \
--snapshot-names=web-server-snap-$(date +%Y%m%d)
# Scheduled snapshot policy
gcloud compute resource-policies create snapshot-schedule daily-backup \
--region=us-central1 --max-retention-days=14 \
--daily-schedule --start-time=03:00
gcloud compute disks add-resource-policies web-server \
--zone=us-central1-a --resource-policies=daily-backup
# Create a custom image from an instance
gcloud compute instances stop web-server --zone=us-central1-a
gcloud compute images create web-golden-image \
--source-disk=web-server --source-disk-zone=us-central1-a \
--family=web-server --labels=version=v1Terraform Configuration
resource "google_compute_instance" "web" {
name = "web-server"
machine_type = "e2-medium"
zone = "us-central1-a"
tags = ["http-server", "https-server"]
boot_disk {
initialize_params {
image = "debian-cloud/debian-12"
size = 20
type = "pd-balanced"
}
}
network_interface {
subnetwork = google_compute_subnetwork.main.id
access_config {}
}
metadata_startup_script = file("${path.module}/startup.sh")
service_account {
email = google_service_account.app.email
scopes = ["cloud-platform"]
}
shielded_instance_config {
enable_secure_boot = true
enable_vtpm = true
enable_integrity_monitoring = true
}
}
resource "google_compute_instance_template" "web" {
name_prefix = "web-"
machine_type = "e2-medium"
disk {
source_image = "debian-cloud/debian-12"
auto_delete = true
boot = true
disk_size_gb = 20
}
network_interface {
subnetwork = google_compute_subnetwork.main.id
}
lifecycle { create_before_destroy = true }
}
resource "google_compute_region_instance_group_manager" "web" {
name = "web-mig"
base_instance_name = "web"
region = "us-central1"
version {
instance_template = google_compute_instance_template.web.id
}
target_size = 3
named_port { name = "http"; port = 80 }
auto_healing_policies {
health_check = google_compute_health_check.http.id
initial_delay_sec = 120
}
}
resource "google_compute_region_autoscaler" "web" {
name = "web-autoscaler"
region = "us-central1"
target = google_compute_region_instance_group_manager.web.id
autoscaling_policy {
min_replicas = 2
max_replicas = 10
cooldown_period = 90
cpu_utilization { target = 0.65 }
}
}Common Operations
# SSH into an instance
gcloud compute ssh web-server --zone=us-central1-a
# List all instances with status
gcloud compute instances list \
--format="table(name,zone,status,machineType.basename())"
# Stop / start / resize
gcloud compute instances stop web-server --zone=us-central1-a
gcloud compute instances set-machine-type web-server \
--machine-type=e2-standard-4 --zone=us-central1-a
gcloud compute instances start web-server --zone=us-central1-a
# View serial port output (debug startup scripts)
gcloud compute instances get-serial-port-output web-server --zone=us-central1-aTroubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| Instance stuck in STAGING | Quota exceeded or resource unavailable | Check quota with gcloud compute project-info describe; try another zone |
| Startup script not running | Syntax errors or wrong metadata key | Check serial output; ensure key is startup-script not startup_script |
| Cannot SSH | Firewall blocks port 22 or OS Login misconfigured | Add firewall rule for tcp:22; verify enable-oslogin metadata |
| Preempted too often | Zone resource pressure | Use Spot VM with STOP action; spread across zones in a MIG |
| Disk out of space | Boot disk too small | Use gcloud compute disks resize; enable --storage-auto-increase for data disks |
| MIG not healing | Health check misconfigured or initial delay too short | Verify health check path returns 200; increase --initial-delay |
Related Skills
- gcp-networking - VPC, firewall rules, and load balancers for Compute Engine
- terraform-gcp - Provision Compute Engine resources with Infrastructure as Code
- gcp-gke - When workloads are better suited for containers than VMs
- gcp-cloud-sql - Managed databases that Compute Engine applications connect to
Related skills
FAQ
How do you autoscale VMs on GCP?
Create a managed instance group from an instance template and configure autoscaling on CPU utilization.
How do you cut costs on non-critical VMs?
Use spot VMs with a provisioning model of SPOT and a termination action.