{"id":19351988,"url":"https://github.com/serverpod/terraform-google-serverpod-cloud-engine","last_synced_at":"2025-04-23T07:31:10.412Z","repository":{"id":119422885,"uuid":"609189738","full_name":"serverpod/terraform-google-serverpod-cloud-engine","owner":"serverpod","description":"Terraform module for deploying Serverpod to Google Cloud Engine.","archived":false,"fork":false,"pushed_at":"2024-07-26T04:52:38.000Z","size":19,"stargazers_count":2,"open_issues_count":5,"forks_count":3,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-02T09:51:15.732Z","etag":null,"topics":["gcp","google-cloud","serverpod","terraform"],"latest_commit_sha":null,"homepage":"","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/serverpod.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}},"created_at":"2023-03-03T15:07:24.000Z","updated_at":"2024-12-28T08:02:00.000Z","dependencies_parsed_at":"2024-11-10T04:37:55.692Z","dependency_job_id":"5c983293-1886-4a80-a0c4-8d210b96d330","html_url":"https://github.com/serverpod/terraform-google-serverpod-cloud-engine","commit_stats":null,"previous_names":["serverpod/terraform-google-serverpod-cloud-engine"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serverpod%2Fterraform-google-serverpod-cloud-engine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serverpod%2Fterraform-google-serverpod-cloud-engine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serverpod%2Fterraform-google-serverpod-cloud-engine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/serverpod%2Fterraform-google-serverpod-cloud-engine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/serverpod","download_url":"https://codeload.github.com/serverpod/terraform-google-serverpod-cloud-engine/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250391150,"owners_count":21422849,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["gcp","google-cloud","serverpod","terraform"],"created_at":"2024-11-10T04:37:47.766Z","updated_at":"2025-04-23T07:31:10.080Z","avatar_url":"https://github.com/serverpod.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Serverpod GCE Terraform module\nTerraform module for deploying Serverpod to Google Cloud Engine.\n\nThe module will set up a complete Serverpod infrastructure with auto-scaling Cloud Engine instances and a Postgres database. It will also configure all necessary certificates and load balancing. You can opt into using Redis and Google Cloud Storage buckets.\n\nComplete step-by-step instructions are available in the official Serverpod documentation [here](https://docs.serverpod.dev/deployments/deploying-to-gcp). See below for all the additional options you can use with this module.\n\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.3.9 |\n| \u003ca name=\"requirement_google\"\u003e\u003c/a\u003e [google](#requirement\\_google) | \u003e= 4.51.0 |\n\n## Providers\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"provider_google\"\u003e\u003c/a\u003e [google](#provider\\_google) | 4.51.0 |\n\n## Modules\n\nNo modules.\n\n## Resources\n\n| Name | Type |\n|------|------|\n| [google_compute_autoscaler.serverpod](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_autoscaler) | resource |\n| [google_compute_backend_bucket.storage](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_backend_bucket) | resource |\n| [google_compute_backend_service.api](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_backend_service) | resource |\n| [google_compute_backend_service.insights](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_backend_service) | resource |\n| [google_compute_backend_service.web](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_backend_service) | resource |\n| [google_compute_firewall.serverpod-instance](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_firewall) | resource |\n| [google_compute_firewall.serverpod-instance-ssh](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_firewall) | resource |\n| [google_compute_global_address.private-ip](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_global_address) | resource |\n| [google_compute_global_forwarding_rule.api](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_global_forwarding_rule) | resource |\n| [google_compute_global_forwarding_rule.insights](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_global_forwarding_rule) | resource |\n| [google_compute_global_forwarding_rule.storage](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_global_forwarding_rule) | resource |\n| [google_compute_global_forwarding_rule.web](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_global_forwarding_rule) | resource |\n| [google_compute_health_check.serverpod-balancer](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_health_check) | resource |\n| [google_compute_health_check.serverpod-instance-group](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_health_check) | resource |\n| [google_compute_instance_group_manager.serverpod](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_instance_group_manager) | resource |\n| [google_compute_instance_template.serverpod](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_instance_template) | resource |\n| [google_compute_managed_ssl_certificate.api](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_managed_ssl_certificate) | resource |\n| [google_compute_managed_ssl_certificate.insights](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_managed_ssl_certificate) | resource |\n| [google_compute_managed_ssl_certificate.storage](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_managed_ssl_certificate) | resource |\n| [google_compute_managed_ssl_certificate.web](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_managed_ssl_certificate) | resource |\n| [google_compute_managed_ssl_certificate.web-top-domain](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_managed_ssl_certificate) | resource |\n| [google_compute_network.serverpod](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_network) | resource |\n| [google_compute_target_https_proxy.api](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_target_https_proxy) | resource |\n| [google_compute_target_https_proxy.insights](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_target_https_proxy) | resource |\n| [google_compute_target_https_proxy.storage](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_target_https_proxy) | resource |\n| [google_compute_target_https_proxy.web](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_target_https_proxy) | resource |\n| [google_compute_url_map.serverpod](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_url_map) | resource |\n| [google_dns_managed_zone.private-dns](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/dns_managed_zone) | resource |\n| [google_dns_managed_zone.public-dns](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/dns_managed_zone) | resource |\n| [google_dns_record_set.api](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/dns_record_set) | resource |\n| [google_dns_record_set.database](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/dns_record_set) | resource |\n| [google_dns_record_set.database-private](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/dns_record_set) | resource |\n| [google_dns_record_set.insights](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/dns_record_set) | resource |\n| [google_dns_record_set.redis-private](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/dns_record_set) | resource |\n| [google_dns_record_set.storage](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/dns_record_set) | resource |\n| [google_dns_record_set.web](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/dns_record_set) | resource |\n| [google_dns_record_set.web-top-domain](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/dns_record_set) | resource |\n| [google_project_service.gcp_services](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/project_service) | resource |\n| [google_redis_instance.serverpod](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/redis_instance) | resource |\n| [google_service_networking_connection.private-vpc-connection](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/service_networking_connection) | resource |\n| [google_sql_database.serverpod](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/sql_database) | resource |\n| [google_sql_database_instance.serverpod](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/sql_database_instance) | resource |\n| [google_sql_user.serverpod](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/sql_user) | resource |\n| [google_storage_bucket.private](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/storage_bucket) | resource |\n| [google_storage_bucket.public](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/storage_bucket) | resource |\n| [google_storage_bucket_iam_member.public](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/storage_bucket_iam_member) | resource |\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_autoscaling_cpu_utilization\"\u003e\u003c/a\u003e [autoscaling\\_cpu\\_utilization](#input\\_autoscaling\\_cpu\\_utilization) | The CPU utilization to use for the autoscaling group. Defaults to 0.6. | `number` | `0.6` | no |\n| \u003ca name=\"input_autoscaling_max_size\"\u003e\u003c/a\u003e [autoscaling\\_max\\_size](#input\\_autoscaling\\_max\\_size) | The maximum number of instances to run in the autoscaling group. Defaults to 2. | `number` | `2` | no |\n| \u003ca name=\"input_autoscaling_min_size\"\u003e\u003c/a\u003e [autoscaling\\_min\\_size](#input\\_autoscaling\\_min\\_size) | The minimum number of instances to run in the autoscaling group. Defaults to 1. | `number` | `1` | no |\n| \u003ca name=\"input_database_availability_type\"\u003e\u003c/a\u003e [database\\_availability\\_type](#input\\_database\\_availability\\_type) | The availability type of the database to use. Defaults to 'ZONAL', which represents a single zone. | `string` | `\"ZONAL\"` | no |\n| \u003ca name=\"input_database_backup_enabled\"\u003e\u003c/a\u003e [database\\_backup\\_enabled](#input\\_database\\_backup\\_enabled) | Whether to enable backups for the database. Defaults to true. | `bool` | `true` | no |\n| \u003ca name=\"input_database_backup_point_in_time_recovery_enabled\"\u003e\u003c/a\u003e [database\\_backup\\_point\\_in\\_time\\_recovery\\_enabled](#input\\_database\\_backup\\_point\\_in\\_time\\_recovery\\_enabled) | Whether to enable point in time recovery for the database. Defaults to false. | `bool` | `false` | no |\n| \u003ca name=\"input_database_deletion_protection\"\u003e\u003c/a\u003e [database\\_deletion\\_protection](#input\\_database\\_deletion\\_protection) | Whether to enable deletion protection for the database. Defaults to true. | `bool` | `true` | no |\n| \u003ca name=\"input_database_password\"\u003e\u003c/a\u003e [database\\_password](#input\\_database\\_password) | The password to use for the database. You can find the password in your 'config/passwords.yaml' file. | `string` | n/a | yes |\n| \u003ca name=\"input_database_tier\"\u003e\u003c/a\u003e [database\\_tier](#input\\_database\\_tier) | The tier of the database to use. Defaults to 'db-f1-micro'. | `string` | `\"db-f1-micro\"` | no |\n| \u003ca name=\"input_database_version\"\u003e\u003c/a\u003e [database\\_version](#input\\_database\\_version) | The version of the database to use. Defaults to 'POSTGRES\\_16'. Note that only PostgreSQL is supported. | `string` | `\"POSTGRES_16\"` | no |\n| \u003ca name=\"input_redis_version\"\u003e\u003c/a\u003e [redis\\_version](#input\\_redis\\_version) | The version of Redis to use. Defaults to 'REDIS_7_2'. | `string` | `\"REDIS_7_2\"` | no |\n| \u003ca name=\"input_dns_managed_zone\"\u003e\u003c/a\u003e [dns\\_managed\\_zone](#input\\_dns\\_managed\\_zone) | The name of the DNS managed zone to use for the Serverpod infrastructure. If this is not set, a new managed zone will be created. | `string` | `\"\"` | no |\n| \u003ca name=\"input_enable_redis\"\u003e\u003c/a\u003e [enable\\_redis](#input\\_enable\\_redis) | Whether to enable Redis. Defaults to false. | `bool` | `false` | no |\n| \u003ca name=\"input_enable_ssh\"\u003e\u003c/a\u003e [enable\\_ssh](#input\\_enable\\_ssh) | Whether to enable SSH access to instances in the autoscaling group. Defaults to true. | `bool` | `true` | no |\n| \u003ca name=\"input_enable_storage\"\u003e\u003c/a\u003e [enable\\_storage](#input\\_enable\\_storage) | Whether to enable storage. Defaults to true. | `bool` | `true` | no |\n| \u003ca name=\"input_machine_type\"\u003e\u003c/a\u003e [machine\\_type](#input\\_machine\\_type) | The machine type to use for the autoscaling group. Defaults to 'e2-micro'. | `string` | `\"e2-micro\"` | no |\n| \u003ca name=\"input_project\"\u003e\u003c/a\u003e [project](#input\\_project) | The GCP project ID to deploy your Serverpod infrastructure to. | `string` | n/a | yes |\n| \u003ca name=\"input_redis_memory_size_gb\"\u003e\u003c/a\u003e [redis\\_memory\\_size\\_gb](#input\\_redis\\_memory\\_size\\_gb) | The memory size of the Redis instance to use in gigabytes, if it is enabled. Defaults to 1. | `number` | `1` | no |\n| \u003ca name=\"input_redis_tier\"\u003e\u003c/a\u003e [redis\\_tier](#input\\_redis\\_tier) | The tier of the Redis instance to use, if it is enabled. Defaults to 'BASIC'. | `string` | `\"BASIC\"` | no |\n| \u003ca name=\"input_region\"\u003e\u003c/a\u003e [region](#input\\_region) | The GCP region to deploy your Serverpod infrastructure to. Defaults to 'us-central1'. | `string` | `\"us-central1\"` | no |\n| \u003ca name=\"input_runmode\"\u003e\u003c/a\u003e [runmode](#input\\_runmode) | The runmode to deploy your Serverpod infrastructure in. This can be 'production' or 'development'. | `string` | `\"production\"` | no |\n| \u003ca name=\"input_service_account_email\"\u003e\u003c/a\u003e [service\\_account\\_email](#input\\_service\\_account\\_email) | The email address of the service account to use for the Serverpod infrastructure. | `string` | `\"\"` | no |\n| \u003ca name=\"input_storage_bucket_class\"\u003e\u003c/a\u003e [storage\\_bucket\\_class](#input\\_storage\\_bucket\\_class) | The class of the storage buckets. Defaults to 'STANDARD'. | `string` | `\"STANDARD\"` | no |\n| \u003ca name=\"input_storage_bucket_location\"\u003e\u003c/a\u003e [storage\\_bucket\\_location](#input\\_storage\\_bucket\\_location) | The location of the storage buckets. Defaults to 'US'. | `string` | `\"US\"` | no |\n| \u003ca name=\"input_subdomain_prefix\"\u003e\u003c/a\u003e [subdomain\\_prefix](#input\\_subdomain\\_prefix) | The subdomain prefix to use for the Serverpod infrastructure. This is useful to set for your staging environment, in which case all sub domains will be prefixed with this value. | `string` | `\"\"` | no |\n| \u003ca name=\"input_subdomain_web\"\u003e\u003c/a\u003e [subdomain\\_web](#input\\_subdomain\\_web) | The subdomain to use for the web server. Defaults to 'app', but you may want to change it to 'www' if you have set 'use\\_top\\_domain\\_for\\_web' to true. | `string` | `\"app\"` | no |\n| \u003ca name=\"input_top_domain\"\u003e\u003c/a\u003e [top\\_domain](#input\\_top\\_domain) | The top domain to deploy your Serverpod infrastructure to. E.g. 'example.com'. | `string` | n/a | yes |\n| \u003ca name=\"input_use_top_domain_for_web\"\u003e\u003c/a\u003e [use\\_top\\_domain\\_for\\_web](#input\\_use\\_top\\_domain\\_for\\_web) | Whether to use the top domain for the web server. Defaults to false. | `bool` | `false` | no |\n| \u003ca name=\"input_zone\"\u003e\u003c/a\u003e [zone](#input\\_zone) | The GCP zone to deploy your Serverpod infrastructure to. Defaults to 'us-central1-c'. | `string` | `\"us-central1-c\"` | no |\n\n## Outputs\n\n| Name | Description |\n|------|-------------|\n| \u003ca name=\"output_network\"\u003e\u003c/a\u003e [network](#output\\_network) | The name of Serverpod's private network. |\n\u003c!-- END_TF_DOCS --\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fserverpod%2Fterraform-google-serverpod-cloud-engine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fserverpod%2Fterraform-google-serverpod-cloud-engine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fserverpod%2Fterraform-google-serverpod-cloud-engine/lists"}