{"id":28855588,"url":"https://github.com/libops/terraform-cloudrun-v2","last_synced_at":"2026-03-01T09:32:00.129Z","repository":{"id":300020095,"uuid":"1004222524","full_name":"libops/terraform-cloudrun-v2","owner":"libops","description":null,"archived":false,"fork":false,"pushed_at":"2026-02-22T11:47:00.000Z","size":35,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-22T17:19:26.049Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/libops.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-18T09:52:25.000Z","updated_at":"2026-02-22T11:47:03.000Z","dependencies_parsed_at":"2025-06-19T13:40:58.784Z","dependency_job_id":"997aa580-fcec-493a-8f09-400b1946fde9","html_url":"https://github.com/libops/terraform-cloudrun-v2","commit_stats":null,"previous_names":["libops/terraform-cloudrun-v2"],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/libops/terraform-cloudrun-v2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libops%2Fterraform-cloudrun-v2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libops%2Fterraform-cloudrun-v2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libops%2Fterraform-cloudrun-v2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libops%2Fterraform-cloudrun-v2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/libops","download_url":"https://codeload.github.com/libops/terraform-cloudrun-v2/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libops%2Fterraform-cloudrun-v2/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29965586,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-01T06:55:38.174Z","status":"ssl_error","status_checked_at":"2026-03-01T06:53:04.810Z","response_time":124,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-19T23:42:56.665Z","updated_at":"2026-03-01T09:32:00.112Z","avatar_url":"https://github.com/libops.png","language":"HCL","readme":"# terraform-cloudrun-v2\n\nTerraform module for a multi-region [Google Cloud Run v2 Service](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_run_v2_service) behind a [serverless Network Endpoint Group (NEG)](https://cloud.google.com/load-balancing/docs/negs/serverless-neg-concepts).\n\nVariables support GPUs, GCS mounts, multi-containers.\n\n\u003c!-- BEGIN_TF_DOCS --\u003e\n## Requirements\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"requirement_google\"\u003e\u003c/a\u003e [google](#requirement\\_google) | ~\u003e 7.0 |\n\n## Providers\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"provider_google\"\u003e\u003c/a\u003e [google](#provider\\_google) | ~\u003e 7.0 |\n\n## Modules\n\nNo modules.\n\n## Resources\n\n| Name | Type |\n|------|------|\n| [google_cloud_run_v2_service.cloudrun](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_run_v2_service) | resource |\n| [google_cloud_run_v2_service_iam_member.invoker](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_run_v2_service_iam_member) | resource |\n| [google_compute_backend_service.backend](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_backend_service) | resource |\n| [google_compute_region_network_endpoint_group.neg](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_region_network_endpoint_group) | resource |\n| [google_service_account.service_account](https://registry.terraform.io/providers/hashicorp/google/latest/docs/data-sources/service_account) | data source |\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_addl_env_vars\"\u003e\u003c/a\u003e [addl\\_env\\_vars](#input\\_addl\\_env\\_vars) | Additional environment variables to set in containers | \u003cpre\u003elist(object({\u003cbr/\u003e    name  = string\u003cbr/\u003e    value = string\u003cbr/\u003e  }))\u003c/pre\u003e | `[]` | no |\n| \u003ca name=\"input_containers\"\u003e\u003c/a\u003e [containers](#input\\_containers) | List of container configurations to run in the service. At least one container needs a port. This allows easily configuring multi-container deployments. | \u003cpre\u003elist(object({\u003cbr/\u003e    image          = string\u003cbr/\u003e    name           = string\u003cbr/\u003e    command        = optional(list(string), null)\u003cbr/\u003e    args           = optional(list(string), null)\u003cbr/\u003e    port           = optional(number, 0)\u003cbr/\u003e    memory         = optional(string, \"512Mi\")\u003cbr/\u003e    cpu            = optional(string, \"1000m\")\u003cbr/\u003e    liveness_probe = optional(string, \"\")\u003cbr/\u003e    gpus           = optional(string, \"\")\u003cbr/\u003e    volume_mounts = optional(list(object({\u003cbr/\u003e      name       = string\u003cbr/\u003e      mount_path = string\u003cbr/\u003e    })), [])\u003cbr/\u003e  }))\u003c/pre\u003e | n/a | yes |\n| \u003ca name=\"input_empty_dir_volumes\"\u003e\u003c/a\u003e [empty\\_dir\\_volumes](#input\\_empty\\_dir\\_volumes) | List of empty directory volumes to create and mount | \u003cpre\u003elist(object({\u003cbr/\u003e    name       = string\u003cbr/\u003e    size_limit = optional(string, \"2Mi\")\u003cbr/\u003e  }))\u003c/pre\u003e | `[]` | no |\n| \u003ca name=\"input_gcs_volumes\"\u003e\u003c/a\u003e [gcs\\_volumes](#input\\_gcs\\_volumes) | List of Google Cloud Storage buckets to mount as volumes. Must ensure the Cloud Run GSA has proper IAM set on the bucket | \u003cpre\u003elist(object({\u003cbr/\u003e    name      = string\u003cbr/\u003e    bucket    = string\u003cbr/\u003e    read_only = optional(bool, true)\u003cbr/\u003e  }))\u003c/pre\u003e | `[]` | no |\n| \u003ca name=\"input_gsa\"\u003e\u003c/a\u003e [gsa](#input\\_gsa) | Service account name the Cloud Run service will run as. If empty, creates a new one. | `string` | n/a | yes |\n| \u003ca name=\"input_invokers\"\u003e\u003c/a\u003e [invokers](#input\\_invokers) | List of members to grant Cloud Run invoker role | `list(string)` | \u003cpre\u003e[\u003cbr/\u003e  \"allUsers\"\u003cbr/\u003e]\u003c/pre\u003e | no |\n| \u003ca name=\"input_max_instances\"\u003e\u003c/a\u003e [max\\_instances](#input\\_max\\_instances) | Maximum number of instances to scale to | `string` | `\"100\"` | no |\n| \u003ca name=\"input_min_instances\"\u003e\u003c/a\u003e [min\\_instances](#input\\_min\\_instances) | Minimum number of instances to keep running | `string` | `\"0\"` | no |\n| \u003ca name=\"input_name\"\u003e\u003c/a\u003e [name](#input\\_name) | Name of the Cloud Run service | `string` | n/a | yes |\n| \u003ca name=\"input_project\"\u003e\u003c/a\u003e [project](#input\\_project) | The GCP project to use | `string` | n/a | yes |\n| \u003ca name=\"input_regions\"\u003e\u003c/a\u003e [regions](#input\\_regions) | The GCP region(s) to deploy to | `list(string)` | \u003cpre\u003e[\u003cbr/\u003e  \"us-east4\",\u003cbr/\u003e  \"us-east5\",\u003cbr/\u003e  \"us-central1\",\u003cbr/\u003e  \"us-west3\",\u003cbr/\u003e  \"us-west1\",\u003cbr/\u003e  \"us-west4\",\u003cbr/\u003e  \"us-south1\",\u003cbr/\u003e  \"northamerica-northeast1\",\u003cbr/\u003e  \"northamerica-northeast2\",\u003cbr/\u003e  \"northamerica-south1\",\u003cbr/\u003e  \"australia-southeast1\",\u003cbr/\u003e  \"australia-southeast2\"\u003cbr/\u003e]\u003c/pre\u003e | no |\n| \u003ca name=\"input_secrets\"\u003e\u003c/a\u003e [secrets](#input\\_secrets) | List of Secret Manager secrets to mount as environment variables | \u003cpre\u003elist(object({\u003cbr/\u003e    name        = string\u003cbr/\u003e    secret_id   = string\u003cbr/\u003e    secret_name = string\u003cbr/\u003e  }))\u003c/pre\u003e | `[]` | no |\n| \u003ca name=\"input_skipNeg\"\u003e\u003c/a\u003e [skipNeg](#input\\_skipNeg) | Skip creating Network Endpoint Group and Backend Service | `bool` | `false` | no |\n| \u003ca name=\"input_vpc_direct_egress\"\u003e\u003c/a\u003e [vpc\\_direct\\_egress](#input\\_vpc\\_direct\\_egress) | Traffic VPC egress settings. Possible values are: `ALL_TRAFFIC`, `PRIVATE_RANGES_ONLY`. | `string` | `\"OFF\"` | no |\n| \u003ca name=\"input_vpc_direct_egress_network\"\u003e\u003c/a\u003e [vpc\\_direct\\_egress\\_network](#input\\_vpc\\_direct\\_egress\\_network) | The VPC network that the Cloud Run resource will be able to send traffic to | `string` | `\"default\"` | no |\n| \u003ca name=\"input_vpc_direct_egress_subnetwork\"\u003e\u003c/a\u003e [vpc\\_direct\\_egress\\_subnetwork](#input\\_vpc\\_direct\\_egress\\_subnetwork) | The VPC subnetwork that the Cloud Run resource will get IPs from | `string` | `\"default\"` | no |\n| \u003ca name=\"input_vpc_direct_egress_tags\"\u003e\u003c/a\u003e [vpc\\_direct\\_egress\\_tags](#input\\_vpc\\_direct\\_egress\\_tags) | Network tags applied to this Cloud Run service | `list(string)` | `null` | no |\n\n## Outputs\n\n| Name | Description |\n|------|-------------|\n| \u003ca name=\"output_backend\"\u003e\u003c/a\u003e [backend](#output\\_backend) | Backend service ID for load balancer (empty if skipNeg is true) |\n| \u003ca name=\"output_name\"\u003e\u003c/a\u003e [name](#output\\_name) | Map of region to Cloud Run service names |\n| \u003ca name=\"output_url\"\u003e\u003c/a\u003e [url](#output\\_url) | Primary Cloud Run service URL (first region) |\n| \u003ca name=\"output_urls\"\u003e\u003c/a\u003e [urls](#output\\_urls) | Map of region to Cloud Run service URLs |\n\u003c!-- END_TF_DOCS --\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibops%2Fterraform-cloudrun-v2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flibops%2Fterraform-cloudrun-v2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibops%2Fterraform-cloudrun-v2/lists"}