Skip to content

v1.13.0

Latest

Choose a tag to compare

@bnsoni bnsoni released this 03 Jul 00:46
f5fb13a

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)
  • CloudProvider axis on InfraConfig (default aws; existing state files deserialize unchanged) + GCPCredentials (ADC or service-account key); runner dispatches templates/tfvars/env on it
  • PROVIDER=gcp non-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-ops tag from its [tool.uv.sources] pin (uv ignores that table on git-URL installs, so the explicit install stays — only the question goes away). Stale 3.19.0 default removed from every input layer
  • Fixes: setup prompts crashed on GCP-provisioned states (no AWS credential block); iblai infra waf now 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 .env index) + step-by-step docs/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 + fmt clean 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