feat: dual-mode GCP vm-rs service + gcp load_balancer modules#369
Merged
Conversation
Two new GCP modules, both dual-mode (greenfield provision AND zero-change import/adoption of an existing estate): - modules/service/vm-rs — VM-backed service modelled as Deployment/StatefulSet on raw GCE VMs (zonal + regional PD, shielded, per-replica placement). Boot image is an artifact input (Packer/GCE image → CI → release replaces the VM). - modules/load_balancer/gcp — global external/internal HTTP(S) L7 LB stack (address → forwarding rule → proxy → url map → backend service → unmanaged instance group), managed-cert greenfield path + 0-change adoption of hand-rolled stacks. Placed under the load_balancer intent to match modules/load_balancer/vultr. Battle-tested adopting a full production GCP estate (44 standalone VMs + 28 LB stacks) at 0-change, and greenfield-validated in a fresh region. Generalized (no customer-specific values). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RsiV1JkMqt96ZQb1brv4zq
…at it Replaces the @custom/load_balancer placeholder with a proper repo-convention output type under outputs/, matching outputs/vultr-load-balancer. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RsiV1JkMqt96ZQb1brv4zq
anshulsao
marked this pull request as ready for review
July 3, 2026 07:05
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Two new dual-mode GCP modules (greenfield provision and zero-change import/adoption of an existing estate), plus the
@facets/gcp-load-balanceroutput type.modules/service/vm-rs/1.0service/vm-rs@facets/service.modules/load_balancer/gcp/1.0load_balancer/gcp@facets/gcp-load-balancer(new, underoutputs/).Dual mode
Both select behaviour by whether the
imports.*pins are set:vm-rsprovisions fresh VMs+disks;load_balancercreates the IP + a managed SSL cert + the full stack.ignore_changeson the volatile/computed/ForceNew attributes; foundation (static IP, SSL certs) is referenced, never created.Provenance / testing
Both modules were built and hardened adopting a full production GCP estate — 44 standalone VMs + 28 LB stacks — at a verified 0-change (0 add/change/destroy), then greenfield-validated in a fresh region (VM + full LB stack create cleanly, zero import blocks). Generalized here (no customer-specific values).
Placement / taxonomy — maintainer input welcome
load_balancer/gcp— placed under the first-classload_balancerintent to matchmodules/load_balancer/vultr. ✅service/vm-rs— kept asintent: service(a VM-backed service, deliberately modelled Deployment/StatefulSet for a clean path to MIG/GKE later), with a functional flavorvm-rsalongside the cloud-named service flavors. Alternative:intent: compute/flavor: gcp(there is amodules/compute/vultr). Happy to move it if you prefer that taxonomy.output.facets.yamlis gitignored per repo convention; the LB output type lives inoutputs/gcp-load-balancer/outputs.yaml.version.tfpinshashicorp/google(module resources) +Facets-cloud/facets.Still to do before un-drafting
raptor module validate).🤖 Generated with Claude Code
https://claude.ai/code/session_01RsiV1JkMqt96ZQb1brv4zq