Summary
Adds Google Cloud as a first-class provider for single-server deployments, alongside AWS — same wizard, same .env flows, same setup step.
- Terraform stack (
templates/gcp/single-server/): VPC + regional subnet, firewall rules (SSH restricted to the operator IP; health checks from Google's probe ranges), Compute Engine VM (Ubuntu 22.04, metadata SSH keys), unmanaged instance group behind a global external Application Load Balancer with a static IP, Google-managed SSL certificate (all platform subdomains, async validation), Cloud DNS A-records (existing zone auto-detected, or created with nameservers printed for registrar delegation) - Health check probes the LMS heartbeat with a
learn.<domain>Host header — GCP accepts only a literal 200, and probing/hits the platform nginx catch-all's 301, marking the backend UNHEALTHY and serving 503 "no healthy upstream" for everything (hit live on the first bootstrap; designed out + regression-tested) CloudProvideraxis onInfraConfig(defaultaws; existing state files deserialize unchanged) +GCPCredentials(ADC or service-account key); runner dispatches templates/tfvars/env on itPROVIDER=gcpnon-interactive path +.env.provision.gcp.example;iblai infra permissions --provider gcp [--check]- One version prompt: setup/resetup ask for the prod-images release tag and resolve the matching
iblai-cli-opstag from its[tool.uv.sources]pin (uv ignores that table on git-URL installs, so the explicit install stays — only the question goes away). Stale3.19.0default removed from every input layer - Fixes: setup prompts crashed on GCP-provisioned states (no AWS credential block);
iblai infra wafnow cleanly rejects non-AWS stacks; GCP env builder surfaces validation errors instead of tracebacks - Docs: README rewrite (quick start, both clouds, ADC vs service-account walkthroughs, sample
.envindex) + step-by-stepdocs/GCP.md - Object storage remains on AWS S3 by design — operators supply credentials at the setup step (documented)
Test plan
- 750 unit tests passing (GCP provider/runner/prompts/env suites mirror the AWS patterns)
terraform validate+fmtclean on the GCP templates- Verified live end-to-end on a real GCP project: provision (37 resources) → full 16-role bootstrap → platform serving over HTTPS behind the LB → teardown clean
🤖 Generated with Claude Code