{"id":24233840,"url":"https://github.com/memes/terraform-google-volterra","last_synced_at":"2026-03-07T17:05:58.668Z","repository":{"id":46672924,"uuid":"353781386","full_name":"memes/terraform-google-volterra","owner":"memes","description":null,"archived":false,"fork":false,"pushed_at":"2025-03-31T21:40:23.000Z","size":167,"stargazers_count":0,"open_issues_count":3,"forks_count":2,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-31T22:29:02.559Z","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/memes.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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}},"created_at":"2021-04-01T17:47:38.000Z","updated_at":"2025-03-12T21:19:08.000Z","dependencies_parsed_at":"2022-09-13T07:22:52.970Z","dependency_job_id":"0c249959-92e6-4135-9a5a-fa3a277ba218","html_url":"https://github.com/memes/terraform-google-volterra","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":"memes/repo-template","purl":"pkg:github/memes/terraform-google-volterra","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memes%2Fterraform-google-volterra","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memes%2Fterraform-google-volterra/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memes%2Fterraform-google-volterra/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memes%2Fterraform-google-volterra/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/memes","download_url":"https://codeload.github.com/memes/terraform-google-volterra/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/memes%2Fterraform-google-volterra/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30222548,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T17:00:40.062Z","status":"ssl_error","status_checked_at":"2026-03-07T17:00:39.026Z","response_time":53,"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-01-14T16:02:04.588Z","updated_at":"2026-03-07T17:05:58.653Z","avatar_url":"https://github.com/memes.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# F5 Distributed Cloud GCP VPC Site module\n\n![GitHub release](https://img.shields.io/github/v/release/memes/terraform-google-volterra?sort=semver)\n![Maintenance](https://img.shields.io/maintenance/yes/2024)\n[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](CODE_OF_CONDUCT.md)\n\nThis Terraform module creates an opinionated F5 Distributed Cloud [GCP VPC Site].\n\n\u003e NOTE: The intent of this module is to easily repeat a common use-case when\n\u003e deploying an F5 XC [GCP VPC Site]. It does not expose every option available.\n\n## Opinions\n\n1. The F5XC Site will use *existing* VPC network(s)\n2. The F5XC Site will be configured as an *ingress-egress gateway* with 2 network interfaces\n\n## Examples\n\n\u003c!-- TODO @memes - add examples --\u003e\n\n\u003c!-- markdownlint-disable MD033 MD034--\u003e\n\u003c!-- BEGIN_TF_DOCS --\u003e\n## Requirements\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"requirement_terraform\"\u003e\u003c/a\u003e [terraform](#requirement\\_terraform) | \u003e= 1.2 |\n| \u003ca name=\"requirement_google\"\u003e\u003c/a\u003e [google](#requirement\\_google) | \u003e= 5.22 |\n| \u003ca name=\"requirement_time\"\u003e\u003c/a\u003e [time](#requirement\\_time) | \u003e= 0.11 |\n| \u003ca name=\"requirement_volterra\"\u003e\u003c/a\u003e [volterra](#requirement\\_volterra) | \u003e= 0.11.31 |\n\n## Modules\n\n| Name | Source | Version |\n|------|--------|---------|\n| \u003ca name=\"module_regions\"\u003e\u003c/a\u003e [regions](#module\\_regions) | memes/region-detail/google | 1.1.6 |\n\n## Resources\n\n| Name | Type |\n|------|------|\n| [time_sleep.pause_before_action](https://registry.terraform.io/providers/hashicorp/time/latest/docs/resources/sleep) | resource |\n| [volterra_gcp_vpc_site.site](https://registry.terraform.io/providers/volterraedge/volterra/latest/docs/resources/gcp_vpc_site) | resource |\n| [volterra_tf_params_action.apply](https://registry.terraform.io/providers/volterraedge/volterra/latest/docs/resources/tf_params_action) | resource |\n| [volterra_tf_params_action.plan](https://registry.terraform.io/providers/volterraedge/volterra/latest/docs/resources/tf_params_action) | resource |\n| [google_compute_subnetwork.inside](https://registry.terraform.io/providers/hashicorp/google/latest/docs/data-sources/compute_subnetwork) | data source |\n| [google_compute_subnetwork.outside](https://registry.terraform.io/providers/hashicorp/google/latest/docs/data-sources/compute_subnetwork) | data source |\n| [google_compute_zones.zones](https://registry.terraform.io/providers/hashicorp/google/latest/docs/data-sources/compute_zones) | data source |\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_cloud_credential_name\"\u003e\u003c/a\u003e [cloud\\_credential\\_name](#input\\_cloud\\_credential\\_name) | The name of an existing Cloud Credential to use when generating this site. | `string` | n/a | yes |\n| \u003ca name=\"input_name\"\u003e\u003c/a\u003e [name](#input\\_name) | The name to apply to the GCP VPC site. | `string` | n/a | yes |\n| \u003ca name=\"input_ssh_key\"\u003e\u003c/a\u003e [ssh\\_key](#input\\_ssh\\_key) | The SSH Public Key that will be installed on CE nodes to allow access.\u003cbr/\u003e\u003cbr/\u003eE.g.\u003cbr/\u003essh\\_key = \"ssh-rsa AAAAB3...acw==\" | `string` | n/a | yes |\n| \u003ca name=\"input_subnets\"\u003e\u003c/a\u003e [subnets](#input\\_subnets) | Provides the Compute Engine subnetworks to use for outside and, optionally,\u003cbr/\u003einside networking of deployed gateway. | \u003cpre\u003eobject({\u003cbr/\u003e    inside  = string\u003cbr/\u003e    outside = string\u003cbr/\u003e  })\u003c/pre\u003e | n/a | yes |\n| \u003ca name=\"input_annotations\"\u003e\u003c/a\u003e [annotations](#input\\_annotations) | An optional set of key:value annotations that will be added to generated XC\u003cbr/\u003eresources. | `map(string)` | `{}` | no |\n| \u003ca name=\"input_dc_cluster_group\"\u003e\u003c/a\u003e [dc\\_cluster\\_group](#input\\_dc\\_cluster\\_group) | n/a | \u003cpre\u003eobject({\u003cbr/\u003e    interface = string\u003cbr/\u003e    name      = string\u003cbr/\u003e    namespace = string\u003cbr/\u003e    tenant    = string\u003cbr/\u003e  })\u003c/pre\u003e | `null` | no |\n| \u003ca name=\"input_description\"\u003e\u003c/a\u003e [description](#input\\_description) | An optional description to apply to the GCP VPC Site. If empty, a generated\u003cbr/\u003edescription will be applied. | `string` | `null` | no |\n| \u003ca name=\"input_forward_proxy_policies\"\u003e\u003c/a\u003e [forward\\_proxy\\_policies](#input\\_forward\\_proxy\\_policies) | n/a | \u003cpre\u003elist(object({\u003cbr/\u003e    name      = string\u003cbr/\u003e    namespace = string\u003cbr/\u003e    tenant    = string\u003cbr/\u003e  }))\u003c/pre\u003e | `null` | no |\n| \u003ca name=\"input_gcp_labels\"\u003e\u003c/a\u003e [gcp\\_labels](#input\\_gcp\\_labels) | An optional set of key:value string pairs that will be added on the | `map(string)` | `{}` | no |\n| \u003ca name=\"input_global_networks\"\u003e\u003c/a\u003e [global\\_networks](#input\\_global\\_networks) | n/a | \u003cpre\u003eobject({\u003cbr/\u003e    inside = object({\u003cbr/\u003e      name      = string\u003cbr/\u003e      namespace = string\u003cbr/\u003e      tenant    = string\u003cbr/\u003e    })\u003cbr/\u003e    outside = object({\u003cbr/\u003e      name      = string\u003cbr/\u003e      namespace = string\u003cbr/\u003e      tenant    = string\u003cbr/\u003e    })\u003cbr/\u003e  })\u003c/pre\u003e | `null` | no |\n| \u003ca name=\"input_labels\"\u003e\u003c/a\u003e [labels](#input\\_labels) | An optional set of key:value string pairs that will be added generated XC\u003cbr/\u003eresources. | `map(string)` | `{}` | no |\n| \u003ca name=\"input_network_policies\"\u003e\u003c/a\u003e [network\\_policies](#input\\_network\\_policies) | n/a | \u003cpre\u003eobject({\u003cbr/\u003e    type = string\u003cbr/\u003e    refs = list(object({\u003cbr/\u003e      name      = string\u003cbr/\u003e      namespace = string\u003cbr/\u003e      tenant    = string\u003cbr/\u003e  })) })\u003c/pre\u003e | `null` | no |\n| \u003ca name=\"input_site_options\"\u003e\u003c/a\u003e [site\\_options](#input\\_site\\_options) | n/a | \u003cpre\u003eobject({\u003cbr/\u003e    blocked_services = map(object({\u003cbr/\u003e      dns                = bool\u003cbr/\u003e      ssh                = bool\u003cbr/\u003e      web_user_interface = bool\u003cbr/\u003e    }))\u003cbr/\u003e    log_receiver = object({\u003cbr/\u003e      name      = string\u003cbr/\u003e      namespace = string\u003cbr/\u003e      tenant    = string\u003cbr/\u003e    })\u003cbr/\u003e    offline_survivability_mode = bool\u003cbr/\u003e    perf_mode                  = string\u003cbr/\u003e    sm_connection              = string\u003cbr/\u003e  })\u003c/pre\u003e | \u003cpre\u003e{\u003cbr/\u003e  \"blocked_services\": null,\u003cbr/\u003e  \"log_receiver\": null,\u003cbr/\u003e  \"offline_survivability_mode\": false,\u003cbr/\u003e  \"perf_mode\": null,\u003cbr/\u003e  \"sm_connection\": null\u003cbr/\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_static_routes\"\u003e\u003c/a\u003e [static\\_routes](#input\\_static\\_routes) | n/a | \u003cpre\u003eobject({\u003cbr/\u003e    outside = object({\u003cbr/\u003e      simple = list(string)\u003cbr/\u003e      custom = list(object({\u003cbr/\u003e        type   = string\u003cbr/\u003e        attrs  = list(string)\u003cbr/\u003e        labels = map(string)\u003cbr/\u003e        interface = object({\u003cbr/\u003e          name      = string\u003cbr/\u003e          namespace = string\u003cbr/\u003e          tenant    = string\u003cbr/\u003e        })\u003cbr/\u003e        address = string\u003cbr/\u003e        subnets = list(string)\u003cbr/\u003e      }))\u003cbr/\u003e    })\u003cbr/\u003e    inside = object({\u003cbr/\u003e      # GCP VPC site does not support simple static routes on inside\u003cbr/\u003e      # simple = list(string)\u003cbr/\u003e      custom = list(object({\u003cbr/\u003e        type   = string\u003cbr/\u003e        attrs  = list(string)\u003cbr/\u003e        labels = map(string)\u003cbr/\u003e        interface = object({\u003cbr/\u003e          name      = string\u003cbr/\u003e          namespace = string\u003cbr/\u003e          tenant    = string\u003cbr/\u003e        })\u003cbr/\u003e        address = string\u003cbr/\u003e        subnets = list(string)\u003cbr/\u003e      }))\u003cbr/\u003e    })\u003cbr/\u003e  })\u003c/pre\u003e | `null` | no |\n| \u003ca name=\"input_vm_options\"\u003e\u003c/a\u003e [vm\\_options](#input\\_vm\\_options) | n/a | \u003cpre\u003eobject({\u003cbr/\u003e    disk_size     = number\u003cbr/\u003e    instance_type = string\u003cbr/\u003e    os_version    = string\u003cbr/\u003e    sw_version    = string\u003cbr/\u003e    zones         = list(string)\u003cbr/\u003e  })\u003c/pre\u003e | \u003cpre\u003e{\u003cbr/\u003e  \"disk_size\": 80,\u003cbr/\u003e  \"instance_type\": \"n2-standard-8\",\u003cbr/\u003e  \"os_version\": null,\u003cbr/\u003e  \"sw_version\": null,\u003cbr/\u003e  \"zones\": null\u003cbr/\u003e}\u003c/pre\u003e | no |\n\n## Outputs\n\nNo outputs.\n\u003c!-- END_TF_DOCS --\u003e\n\u003c!-- markdownlint-enable MD033 MD034 --\u003e\n\n[f5 distributed cloud role]: https://registry.terraform.io/modules/memes/f5-distributed-cloud-role/google/latest?tab=readme\n[gcp vpc site]: https://docs.cloud.f5.com/docs/how-to/site-management/create-gcp-site\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmemes%2Fterraform-google-volterra","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmemes%2Fterraform-google-volterra","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmemes%2Fterraform-google-volterra/lists"}