Add Vultr cloud module set (live-validated)#354
Merged
Conversation
Mirrors the Linode redesign module set one-for-one for Vultr, using the official vultr/vultr provider (v2.31.2). All modules pass terraform validate and raptor create iac-module --dry-run; uploaded + published to the demo CP and wired into a vultr-demo sample blueprint (account -> vpc -> vke -> node pool + object storage + managed postgres). Modules: - cloud_account/vultr_provider -> @facets/vultr_cloud_account (exposes vultr provider, API key from secret store) - network/vultr_vpc -> @facets/vultr-vpc-details (legacy vultr_vpc; VKE is NOT compatible with VPC 2.0) - kubernetes_cluster/vke -> @facets/vke + @facets/kubernetes-details (client-cert auth; exposes kubernetes + helm) - kubernetes_node_pool/vke -> @facets/kubernetes_nodepool - object_storage/vultr -> @facets/vultr-object-storage (S3 subscription, not a bucket) - datastore/postgres/vultr -> @facets/postgres (Vultr Managed Database) Also: vultr project type, ONBOARDING guide, README Vultr section, and a cloud-neutral object_storage icon (was missing for the object_storage intent). Vultr-specific deviations from the Linode template (provider-driven): - VKE requires the original VPC (vultr_vpc), not the deprecated VPC 2.0 - VKE auth is client certificate/key, not a bearer token - Vultr object storage is a subscription (S3 endpoint + keys), no ACL/versioning - DB plan is a single slug; k8s version is a volatile full string (v1.35.0+1) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The vultr_object_storage_cluster data source errored with 'too many results' during live deploy because Vultr now exposes multiple object storage clusters per region (e.g. ewr -> ewr1, ewr2). The singular data source rejects a filter that matches >1 cluster, and the provider offers no list-and-pick variant. Select the cluster by its unique hostname instead of the ambiguous region. Spec: region -> cluster_hostname (default ewr1.vultrobjects.com). Fix tier docs (1=Legacy, 2=Standard) and default tier_id to 2 (Standard, validated for ewr1). Live-validated: object storage subscription created active on ewr1.vultrobjects.com. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…age-cluster # Conflicts: # README.md
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.
Vultr cloud module set (mirror of Linode)
Adds a full Vultr cloud module set — 6 modules + 4 output types + a
vultrproject type + ONBOARDING + README + a wired sample blueprint — mirroring the Linode set one-for-one.Modules
cloud_account/vultr_provider→@facets/vultr_cloud_account(exposes the vultr provider; API key as secret-ref)network/vultr_vpc→@facets/vultr-vpc-detailskubernetes_cluster/vke→@facets/vke+@facets/kubernetes-details(exposes kubernetes + helm)kubernetes_node_pool/vke→@facets/kubernetes_nodepoolobject_storage/vultr→@facets/vultr-object-storagedatastore/postgres/vultr→@facets/postgresLive end-to-end validation ✅
Deployed the full sample stack on real Vultr infra (demo CP, region
ewr) and confirmed it stands up end to end: cloud → VPC → VKE cluster (v1.35.5+1, 5×vc2-2c-4gbnodes) → object storage (ewr1) + managed Postgres (pg16). ReleaseSUCCEEDED, environmentRUNNING.Fix found during live validation
Object storage cluster selection (
906477e): thevultr_object_storage_clusterdata source failed with "too many results" because Vultr now exposes multiple object-storage clusters per region (e.g.ewr→ewr1,ewr2). The singular data source rejects a filter matching >1 cluster and the provider has no list-and-pick variant. Switched selection from the ambiguousregionto the uniquecluster_hostname(defaultewr1.vultrobjects.com); fixed tier docs (1=Legacy, 2=Standard) and defaultedtier_idto Standard. Live-validated: object storage created active onewr1.vultrobjects.com.Note for reviewers (volatile, not code issues)
k8s_versionis a volatile full string; Vultr rotated supported versions (nowv1.36.1+1/v1.35.5+1/v1.34.8+1). The module correctly models it as a free-string; blueprint values must track Vultr's current list.🤖 Generated with Claude Code