Deploy Docker Compose projects to VMs. The repository root is a compatibility
entrypoint for existing GCP callers. New callers should select exactly one
Terraform entrypoint under providers/: providers/gcp, providers/do, or
providers/linode. Each entrypoint loads only its target cloud provider.
Existing Debian/Ubuntu hosts can consume the same runtime contract through the
Ansible role or Salt formula.
The compatibility root is frozen to GCP compatibility fixes and will not gain
new public features after 2027-02-01. Existing state remains supported; plan a
reviewed move to providers/gcp before that date. Runtime behavior remains
contract-tested across entrypoints while the compatibility address exists.
Template defaults live in templates/apps.json and are shared by Terraform,
Ansible, and Salt. The default deployment shape is one app per VM or host; pass
runtime.compose.projects when several apps should share the same machine.
Terraform template presets include an exact, reviewed sitectl core/plugin
release set. Override individual selectors with
runtime.sitectl.package_versions when intentionally testing or promoting a
different compatible release set.
Renovate tracks both the Compose tags and sitectl release tags in the registry. Its pull requests are promotion candidates: keep the complete compatible set together and require the hosted application smoke before merging them.
All presets pin sitectl v1.9.1 plus the latest reviewed application plugin.
ISLE selects the libops/isle v1.3.1 template, ArchivesSpace selects v1.0.1,
WordPress selects v1.1.1, and Drupal, OJS, Omeka Classic, and Omeka S select
v1.2.1. Keep each preset's complete template and package set together when
promoting an override.
GCP deployments have two Terraform ownership layers. Apply
modules/gcp-foundation once per service
project from a small, long-lived state; it owns required APIs, the Cloud Run
service identity, the reusable least-privilege power roles, and any Shared VPC
attachment and service-agent grants. Per-application states consume the role
names and bind their service accounts only to their own Compute Engine instance.
They must not recreate or destroy the singleton foundation. The
runtime contracts
cover the state boundary, Shared VPC setup, and Cloud Run Direct VPC egress
requirements.
Production operators can require the provider-neutral
runtime.disaster_recovery contract. Cloud Compose
then hands complete database, application-file, and volume-topology coverage to
a root-owned operator driver and accepts only an encrypted off-host receipt plus
scheduled disposable restore proof. Storage credentials remain outside
Terraform and the runtime environment. Same-disk logical dumps and provider
snapshots are never presented as disaster recovery.
| Name | Version |
|---|---|
| terraform | >= 1.3.0 |
| cloudinit | ~> 2.3 |
| ~> 7.0 | |
| time | ~> 0.14 |
No providers.
| Name | Source | Version |
|---|---|---|
| gcp | ./modules/gcp | n/a |
| managed_artifacts | ./modules/managed-artifacts | n/a |
No resources.
| Name | Description | Type | Default | Required |
|---|---|---|---|---|
| name | Deployment name. | string |
n/a | yes |
| cloud_provider | Compatibility selector for the root GCP entrypoint. Use providers/do or providers/linode for other clouds. | string |
"gcp" |
no |
| gcp | Google Cloud infrastructure settings. | object({ |
{} |
no |
| runtime | Provider-neutral compose/runtime settings. | object({ |
{} |
no |
| template | Optional compose template preset. Supported values are archivesspace, ojs, isle, drupal, wp, omeka-s, and omeka-classic. Explicit runtime settings override preset defaults. | string |
"" |
no |
| Name | Description |
|---|---|
| appGsa | The Google Service Account the app can use for app-scoped auth. |
| backend | Backend service ID for attaching Cloud Run ingress to an external HTTPS load balancer. |
| cloud_provider | Root entrypoint cloud provider (gcp). |
| compose_projects | Normalized compose project manifest. |
| external_ip | GCP VM public IPv4 address. |
| instance | GCP VM instance details. |
| instance_id | GCP VM instance ID. |
| internal_ip | GCP VM private IPv4 address. |
| network | Resolved GCP network and regional subnetwork. |
| primary_compose_project | Normalized primary compose project. |
| rollout | Optional rollout API endpoint details. |
| serviceGsa | The Google Service Account internal services run as. |
| sitectl_package_versions | Effective release selector for every installed sitectl package; values may be exact tags or latest. |
| template | Selected compose template preset. |
| urls | Cloud Run ingress URLs by region. |
| volumes | GCP persistent application-data and Docker-volume details. |