{"id":13505702,"url":"https://github.com/runatlantis/terraform-gce-atlantis","last_synced_at":"2025-03-30T00:31:27.016Z","repository":{"id":81402488,"uuid":"582996597","full_name":"runatlantis/terraform-gce-atlantis","owner":"runatlantis","description":"A set of  Terraform configurations for running Atlantis on @googlecloud Compute Engine","archived":false,"fork":false,"pushed_at":"2024-05-17T23:23:45.000Z","size":376,"stargazers_count":31,"open_issues_count":12,"forks_count":18,"subscribers_count":5,"default_branch":"main","last_synced_at":"2024-05-19T05:43:21.517Z","etag":null,"topics":["atlantis","cos","gce","gcp","terraform"],"latest_commit_sha":null,"homepage":"","language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/runatlantis.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":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-28T13:08:21.000Z","updated_at":"2024-06-01T00:39:19.101Z","dependencies_parsed_at":"2023-07-21T13:09:15.197Z","dependency_job_id":"c893ad71-627e-443d-9a1b-3fa972bd9ed7","html_url":"https://github.com/runatlantis/terraform-gce-atlantis","commit_stats":null,"previous_names":["bschaatsbergen/terraform-gce-atlantis"],"tags_count":45,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/runatlantis%2Fterraform-gce-atlantis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/runatlantis%2Fterraform-gce-atlantis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/runatlantis%2Fterraform-gce-atlantis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/runatlantis%2Fterraform-gce-atlantis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/runatlantis","download_url":"https://codeload.github.com/runatlantis/terraform-gce-atlantis/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246262490,"owners_count":20749170,"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":["atlantis","cos","gce","gcp","terraform"],"created_at":"2024-08-01T00:01:11.919Z","updated_at":"2025-03-30T00:31:21.993Z","avatar_url":"https://github.com/runatlantis.png","language":"HCL","funding_links":[],"categories":["Community Modules"],"sub_categories":["Miscellaneous"],"readme":"# Atlantis on Google Compute Engine\n\n![Header](./static/banner.png)\n\nThis Terraform module deploys various resources to run Atlantis on Google Compute Engine.\n\n- [Feature highlights](#feature-highlights)\n- [Prerequisites](#prerequisites)\n- [Example Usage](#example-usage)\n  - [Basic](examples/basic)\n  - [Complete](examples/complete)\n  - [Cloud Armor](examples/cloud-armor)\n  - [Secured Environment Variables](examples/secure-env-vars)\n- [How to deploy](#how-to-deploy)\n  - [Important](#important)\n  - [After it's successfully deployed](#after-its-successfully-deployed)\n- [Configuring Atlantis](#configuring-atlantis)\n  - [Setting sensitive environment variables](#setting-sensitive-environment-variables)\n- [Service Account](#service-account)\n  - [Permissions](#permissions)\n- [DNS Record](#dns-record)\n  - [Example](#example)\n- [Identity-Aware Proxy](#identity-aware-proxy)\n  - [Enabling IAP](#enabling-iap)\n  - [What's exactly protected?](#whats-exactly-protected)\n  - [Permissions](#permissions)\n- [FAQ](#faq)\n- [Requirements](#requirements)\n\n## Feature highlights\n\n- **Container-Optimized OS** - Atlantis runs as a Docker container on a container optimized VM.\n\n- **Managed Instance Group** - The VM instance is part of a MIG (Managed Instance Group), this ensures that Atlantis is always up and running.\n\n- **External HTTPS Load Balancer** - A Layer 7 load balancer is created together with a managed SSL certificate for the provided domain.\n\n- **Identity-Aware Proxy** - The Atlantis UI can be protected by Google Cloud Identity-Aware Proxy, this adds an additional layer of security by requiring users to authenticate with their Google account.\n\n- **Custom port for Atlantis** - This module features the ability to run Atlantis on a custom port, simply set the `ATLANTIS_PORT` environment variable.\n\n- **Separate Persistent Data Disk** - The VM instance has a separate attached persistent data disk attached to it to ensure that Atlantis data is persisted and not lost if the VM is deleted or terminated.\n\n- **Shielded VM** - A Shielded VM is a VM that's hardened by a set of security controls that help defend against rootkits and bootkits. Using a Shielded VM helps protect enterprise workloads from threats like remote attacks, privilege escalation, and malicious insiders.\n\n- **Cloud Armor** - Use Google Cloud Armor security policies to protect the default backend service from distributed denial-of-service (DDoS) and other web-based attacks. Security policies can be configured manually, with configurable match conditions and actions in a security policy. Google Cloud Armor also features preconfigured security policies, which cover a variety of use cases.\n\n- **Confidential VM** - A Confidential VM is a type of Compute Engine VM that ensures that your data and applications stay private and encrypted even while in use. You can use a Confidential VM as part of your security strategy so you do not expose sensitive data or workloads during processing. Note that Confidential VM [does not support live migration](https://cloud.google.com/confidential-computing/confidential-vm/docs/error-messages#live_migration_isnt_supported), so if this feature is enabled, `onHostMaintenance` will be set to `TERMINATE`.\n\n## Prerequisites\n\nThis module expects that you already own or create the below resources yourself.\n\n- Google network, subnetwork and a Cloud NAT\n- Service account\n- Domain\n\nIf you prefer an example that includes the above resources, see [`complete example`](https://github.com/runatlantis/terraform-gce-atlantis/tree/master/examples/complete).\n\n## Example Usage\n\nHere are some examples to choose from. Look at the prerequisites above to find one that is appropriate for your configuration.\n\n- [Basic](https://github.com/runatlantis/terraform-gce-atlantis/tree/master/examples/basic)\n- [Complete](https://github.com/runatlantis/terraform-gce-atlantis/tree/master/examples/complete)\n- [Secure Environment Variables](https://github.com/runatlantis/terraform-gce-atlantis/tree/master/examples/secure-env-vars)\n- [Cloud Armor](https://github.com/runatlantis/terraform-gce-atlantis/tree/master/examples/cloud-armor)\n- [Shared VPC](https://github.com/runatlantis/terraform-gce-atlantis/tree/master/examples/shared-vpc)\n\n```hcl\nmodule \"atlantis\" {\n  source  = \"runatlantis/atlantis/gce\"\n  # insert the 7 required variables here\n}\n```\n\n## How to deploy\n\nSee [`main.tf`](https://github.com/runatlantis/terraform-gce-atlantis/tree/master/examples/basic/main.tf) and the [`server-atlantis.yaml`](https://github.com/runatlantis/terraform-gce-atlantis/tree/master/examples/basic/server-atlantis.yaml).\n\n### Important\n\n- Provisioning the Google Cloud Managed SSL certificate can take up to 25 minutes after the `terraform apply` has finished.\n\n- If you bring your own Docker image (*not using any Atlantis image as base image*), be sure to create an Atlantis user using a uid (user ID) of 100.\n\n### After it's successfully deployed\n\nOnce you're done, see [Configuring Webhooks for Atlantis](https://www.runatlantis.io/docs/configuring-webhooks.html#configuring-webhooks)\n\n## Configuring Atlantis\n\nAtlantis offers the ability to configure everything through environment variables.\n\nThe module exposes a variable: `var.env_vars` where you can pass any environment variable you want.\n\n```hcl\nenv_vars = {\n  ATLANTIS_EXAMPLE = \"example\"\n}\n```\n\nFor an overview of all possible environment variables, see: [Atlantis Server Configuration](https://www.runatlantis.io/docs/server-configuration.html#flags)\n\n### Setting sensitive environment variables\n\nSee [secured environment variables](https://github.com/runatlantis/terraform-gce-atlantis/tree/master/examples/secure-env-vars) for an example on how to deal with sensitive values in environment variables.\n\n## Service Account\n\nAs Google recommends custom service accounts and permissions granted via IAM Roles. We advice that you bring your own service account.\n\nNote that you must grant the relevant permissions to your service account yourself, e.g. Storage related permissions for the Terraform state bucket and other permissions in order to create resources through Terraform.\n\n### Permissions\n\nThe `roles/logging.logWriter` \u0026 `roles/monitoring.metricWriter` roles should be attached to the service account in order to write logs to Cloud Logging and ingest metric data into Cloud Monitoring.\n\nSee [`main.tf`](https://github.com/runatlantis/terraform-gce-atlantis/blob/main/examples/basic/main.tf#L16-L33)\n\n## DNS Record\n\nThis example uses Cloud DNS to add an A record containing the load balancer IP address. If you don't use Cloud DNS, please add the A record using the load balancer IP address on the platform where you've registered your domain.\n\nIt's a requirement to add the A record to the domain record set in order to sucessfully provision the certificate!\n\n### Example\n\nIf you use Cloud DNS and own a managed zone for your domain, use the IP address that's part of the module output to create the A record.\n\nSee [`main.tf`](https://github.com/runatlantis/terraform-gce-atlantis/blob/main/examples/basic/main.tf#L60-L71)\n\n## Identity-Aware Proxy\n\nGoogle Cloud's Identity-Aware Proxy (IAP) is a service that can be used to secure the Atlantis UI by authenticating users with Google Accounts\n\n### Enabling IAP\n\nTo enable IAP, you will need to configure the OAuth Consent Screen and create OAuth credentials, as described in the [Enabling IAP](https://cloud.google.com/iap/docs/enabling-compute-howto#enabling_iap_console) guide.\n\nOnce you have the OAuth credentials, you can set the `iap` variable to use them.\n\n```hcl\niap = {\n  oauth2_client_id     = data.google_secret_manager_secret_version.atlantis_client_id.secret_data\n  oauth2_client_secret = data.google_secret_manager_secret_version.atlantis_client_secret.secret_data\n}\n```\n\n### What's exactly protected?\n\nWith IAP enabled, all requests to Atlantis will be protected, except for those made to the `/events` path, which is used for webhooks between platforms such as GitHub and BitBucket.\n\n### Permissions\n\nTo grant a user access to your IAP-protected Atlantis deployment, you will need to give them the `roles/iap.httpsResourceAccessor` role.\n\n```hcl\nresource \"google_iap_web_iam_member\" \"member\" {\n  project = \"\u003cyour-project-id\u003e\"\n  role = \"roles/iap.httpsResourceAccessor\"\n  member = \"user:jane@example.com\"\n}\n```\n\n## FAQ\n\n### When sending an HTTP request, I'm receiving an ERR_EMPTY_RESPONSE error\n\nWe expect you to use HTTPS because we are not routing or redirecting any HTTP requests.\n\n### My VM experienced an outage and is taking some time to restart\n\nIt may take up to three minutes for the Managed Instance Group to safely shut down and recreate the VM before it is considered healthy again.\n\n### Even though terraform apply worked correctly, I'm receiving an ERR_SSL_VERSION_OR_CIPHER_MISMATCH error\n\nThis error indicates that the Google Cloud Managed SSL certificate is not yet fully provisioned.\nIf all configurations are correct, it may take up to 25 minutes for the certificate to be provisioned.\nYou can check the status of the certificate in the Google Cloud Console.\n\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= 0.13.0 |\n| \u003ca name=\"requirement_cloudinit\"\u003e\u003c/a\u003e [cloudinit](#requirement\\_cloudinit) | \u003e=2.2.0 |\n| \u003ca name=\"requirement_google\"\u003e\u003c/a\u003e [google](#requirement\\_google) | \u003e=4.79.0 |\n| \u003ca name=\"requirement_google-beta\"\u003e\u003c/a\u003e [google-beta](#requirement\\_google-beta) | \u003e=4.79.0 |\n| \u003ca name=\"requirement_random\"\u003e\u003c/a\u003e [random](#requirement\\_random) | \u003e=3.4.3 |\n\n## Providers\n\n| Name | Version |\n|------|---------|\n| \u003ca name=\"provider_cloudinit\"\u003e\u003c/a\u003e [cloudinit](#provider\\_cloudinit) | \u003e=2.2.0 |\n| \u003ca name=\"provider_google\"\u003e\u003c/a\u003e [google](#provider\\_google) | \u003e=4.79.0 |\n| \u003ca name=\"provider_google-beta\"\u003e\u003c/a\u003e [google-beta](#provider\\_google-beta) | \u003e=4.79.0 |\n| \u003ca name=\"provider_random\"\u003e\u003c/a\u003e [random](#provider\\_random) | \u003e=3.4.3 |\n\n## Modules\n\n| Name | Source | Version |\n|------|--------|---------|\n| \u003ca name=\"module_container\"\u003e\u003c/a\u003e [container](#module\\_container) | terraform-google-modules/container-vm/google | 3.1.1 |\n\n## Resources\n\n| Name | Type |\n|------|------|\n| [google-beta_google_compute_instance_group_manager.default](https://registry.terraform.io/providers/hashicorp/google-beta/latest/docs/resources/google_compute_instance_group_manager) | resource |\n| [google_compute_backend_service.default](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_backend_service) | resource |\n| [google_compute_backend_service.iap](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_backend_service) | resource |\n| [google_compute_firewall.lb_health_check](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_firewall) | resource |\n| [google_compute_global_address.default](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_global_address) | resource |\n| [google_compute_global_forwarding_rule.https](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_global_forwarding_rule) | resource |\n| [google_compute_health_check.default](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_health_check) | resource |\n| [google_compute_health_check.default_instance_group_manager](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_health_check) | resource |\n| [google_compute_instance_template.default](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_instance_template) | resource |\n| [google_compute_managed_ssl_certificate.default](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_managed_ssl_certificate) | resource |\n| [google_compute_route.public_internet](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_route) | resource |\n| [google_compute_target_https_proxy.default](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_target_https_proxy) | resource |\n| [google_compute_url_map.default](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_url_map) | resource |\n| [random_string.random](https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/string) | resource |\n| [cloudinit_config.config](https://registry.terraform.io/providers/hashicorp/cloudinit/latest/docs/data-sources/config) | data source |\n| [google_compute_image.cos](https://registry.terraform.io/providers/hashicorp/google/latest/docs/data-sources/compute_image) | data source |\n| [google_netblock_ip_ranges.this](https://registry.terraform.io/providers/hashicorp/google/latest/docs/data-sources/netblock_ip_ranges) | data source |\n\n## Inputs\n\n| Name | Description | Type | Default | Required |\n|------|-------------|------|---------|:--------:|\n| \u003ca name=\"input_block_project_ssh_keys_enabled\"\u003e\u003c/a\u003e [block\\_project\\_ssh\\_keys\\_enabled](#input\\_block\\_project\\_ssh\\_keys\\_enabled) | Blocks the use of project-wide publich SSH keys | `bool` | `false` | no |\n| \u003ca name=\"input_default_backend_security_policy\"\u003e\u003c/a\u003e [default\\_backend\\_security\\_policy](#input\\_default\\_backend\\_security\\_policy) | Name of the security policy to apply to the default backend service | `string` | `null` | no |\n| \u003ca name=\"input_disk_kms_key_self_link\"\u003e\u003c/a\u003e [disk\\_kms\\_key\\_self\\_link](#input\\_disk\\_kms\\_key\\_self\\_link) | The self link of the encryption key that is stored in Google Cloud KMS | `string` | `null` | no |\n| \u003ca name=\"input_domain\"\u003e\u003c/a\u003e [domain](#input\\_domain) | Domain to associate Atlantis with and to request a managed SSL certificate for. Without `https://` | `string` | n/a | yes |\n| \u003ca name=\"input_enable_confidential_vm\"\u003e\u003c/a\u003e [enable\\_confidential\\_vm](#input\\_enable\\_confidential\\_vm) | Enable Confidential VM. If true, on host maintenance will be set to TERMINATE | `bool` | `false` | no |\n| \u003ca name=\"input_enable_oslogin\"\u003e\u003c/a\u003e [enable\\_oslogin](#input\\_enable\\_oslogin) | Enables OS Login service on the VM | `bool` | `false` | no |\n| \u003ca name=\"input_env_vars\"\u003e\u003c/a\u003e [env\\_vars](#input\\_env\\_vars) | Key-value pairs representing environment variables and their respective values | `map(any)` | n/a | yes |\n| \u003ca name=\"input_expose_healthz_publicly\"\u003e\u003c/a\u003e [expose\\_healthz\\_publicly](#input\\_expose\\_healthz\\_publicly) | Exposes the /healthz endpoint publicly even if Atlantis is protected by IAP | `bool` | `false` | no |\n| \u003ca name=\"input_expose_metrics_publicly\"\u003e\u003c/a\u003e [expose\\_metrics\\_publicly](#input\\_expose\\_metrics\\_publicly) | Exposes the /metrics endpoint publicly even if Atlantis is protected by IAP | `bool` | `false` | no |\n| \u003ca name=\"input_google_logging_enabled\"\u003e\u003c/a\u003e [google\\_logging\\_enabled](#input\\_google\\_logging\\_enabled) | Enable Google Cloud Logging | `bool` | `true` | no |\n| \u003ca name=\"input_google_logging_use_fluentbit\"\u003e\u003c/a\u003e [google\\_logging\\_use\\_fluentbit](#input\\_google\\_logging\\_use\\_fluentbit) | Enable Google Cloud Logging using Fluent Bit | `bool` | `false` | no |\n| \u003ca name=\"input_google_monitoring_enabled\"\u003e\u003c/a\u003e [google\\_monitoring\\_enabled](#input\\_google\\_monitoring\\_enabled) | Enable Google Cloud Monitoring | `bool` | `true` | no |\n| \u003ca name=\"input_iap\"\u003e\u003c/a\u003e [iap](#input\\_iap) | Settings for enabling Cloud Identity Aware Proxy to protect the Atlantis UI | \u003cpre\u003eobject({\u003cbr\u003e    oauth2_client_id     = string\u003cbr\u003e    oauth2_client_secret = string\u003cbr\u003e  })\u003c/pre\u003e | `null` | no |\n| \u003ca name=\"input_iap_backend_security_policy\"\u003e\u003c/a\u003e [iap\\_backend\\_security\\_policy](#input\\_iap\\_backend\\_security\\_policy) | Name of the security policy to apply to the IAP backend service | `string` | `null` | no |\n| \u003ca name=\"input_image\"\u003e\u003c/a\u003e [image](#input\\_image) | Docker image. This is most often a reference to a container located in a container registry | `string` | `\"ghcr.io/runatlantis/atlantis:latest\"` | no |\n| \u003ca name=\"input_labels\"\u003e\u003c/a\u003e [labels](#input\\_labels) | Key-value pairs representing labels attaching to instance \u0026 instance template | `map(any)` | `{}` | no |\n| \u003ca name=\"input_machine_image\"\u003e\u003c/a\u003e [machine\\_image](#input\\_machine\\_image) | The machine image to create VMs with, if not specified, latest cos\\_cloud/cos\\_stable is used | `string` | `null` | no |\n| \u003ca name=\"input_machine_type\"\u003e\u003c/a\u003e [machine\\_type](#input\\_machine\\_type) | The machine type to run Atlantis on | `string` | `\"n2-standard-2\"` | no |\n| \u003ca name=\"input_name\"\u003e\u003c/a\u003e [name](#input\\_name) | Custom name that's used during resource creation | `string` | n/a | yes |\n| \u003ca name=\"input_network\"\u003e\u003c/a\u003e [network](#input\\_network) | Name of the network | `string` | n/a | yes |\n| \u003ca name=\"input_persistent_disk_size_gb\"\u003e\u003c/a\u003e [persistent\\_disk\\_size\\_gb](#input\\_persistent\\_disk\\_size\\_gb) | The size of the persistent disk that Atlantis uses to store its data on | `number` | `50` | no |\n| \u003ca name=\"input_persistent_disk_type\"\u003e\u003c/a\u003e [persistent\\_disk\\_type](#input\\_persistent\\_disk\\_type) | The type of persistent disk that Atlantis uses to store its data on | `string` | `\"pd-ssd\"` | no |\n| \u003ca name=\"input_project\"\u003e\u003c/a\u003e [project](#input\\_project) | The ID of the project in which the resource belongs | `string` | `null` | no |\n| \u003ca name=\"input_region\"\u003e\u003c/a\u003e [region](#input\\_region) | The region that resources should be created in | `string` | n/a | yes |\n| \u003ca name=\"input_service_account\"\u003e\u003c/a\u003e [service\\_account](#input\\_service\\_account) | Service account to attach to the instance running Atlantis | \u003cpre\u003eobject({\u003cbr\u003e    email  = string,\u003cbr\u003e    scopes = list(string)\u003cbr\u003e  })\u003c/pre\u003e | \u003cpre\u003e{\u003cbr\u003e  \"email\": \"\",\u003cbr\u003e  \"scopes\": [\u003cbr\u003e    \"cloud-platform\"\u003cbr\u003e  ]\u003cbr\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_shared_vpc\"\u003e\u003c/a\u003e [shared\\_vpc](#input\\_shared\\_vpc) | Whether to deploy within a shared VPC | \u003cpre\u003eobject({\u003cbr\u003e    host_project_id = string\u003cbr\u003e  })\u003c/pre\u003e | `null` | no |\n| \u003ca name=\"input_shielded_instance_config\"\u003e\u003c/a\u003e [shielded\\_instance\\_config](#input\\_shielded\\_instance\\_config) | Shielded VM provides verifiable integrity to prevent against malware and rootkits | \u003cpre\u003eobject({\u003cbr\u003e    enable_integrity_monitoring = optional(bool)\u003cbr\u003e    enable_vtpm                 = optional(bool)\u003cbr\u003e    enable_secure_boot          = optional(bool)\u003cbr\u003e  })\u003c/pre\u003e | \u003cpre\u003e{\u003cbr\u003e  \"enable_integrity_monitoring\": true,\u003cbr\u003e  \"enable_secure_boot\": true,\u003cbr\u003e  \"enable_vtpm\": true\u003cbr\u003e}\u003c/pre\u003e | no |\n| \u003ca name=\"input_spot_machine_enabled\"\u003e\u003c/a\u003e [spot\\_machine\\_enabled](#input\\_spot\\_machine\\_enabled) | A Spot VM is discounted Compute Engine capacity that may be preemptively stopped or deleted by Compute Engine if the capacity is needed | `bool` | `false` | no |\n| \u003ca name=\"input_ssl_policy\"\u003e\u003c/a\u003e [ssl\\_policy](#input\\_ssl\\_policy) | The SSL policy name that the certificate must follow | `string` | `null` | no |\n| \u003ca name=\"input_startup_script\"\u003e\u003c/a\u003e [startup\\_script](#input\\_startup\\_script) | A startup script that runs during the boot cycle when you first launch an instance | `string` | `null` | no |\n| \u003ca name=\"input_subnetwork\"\u003e\u003c/a\u003e [subnetwork](#input\\_subnetwork) | Name of the subnetwork to attach a network interface to | `string` | n/a | yes |\n| \u003ca name=\"input_tags\"\u003e\u003c/a\u003e [tags](#input\\_tags) | Tags to attach to the instance running Atlantis | `list(string)` | `[]` | no |\n| \u003ca name=\"input_zone\"\u003e\u003c/a\u003e [zone](#input\\_zone) | The zone that instances should be created in | `string` | n/a | yes |\n\n## Outputs\n\n| Name | Description |\n|------|-------------|\n| \u003ca name=\"output_cos_image_id\"\u003e\u003c/a\u003e [cos\\_image\\_id](#output\\_cos\\_image\\_id) | The unique identifier of the Container-Optimized OS image used to create the Compute Engine instance. |\n| \u003ca name=\"output_iap_backend_service_name\"\u003e\u003c/a\u003e [iap\\_backend\\_service\\_name](#output\\_iap\\_backend\\_service\\_name) | Name of the optional IAP-enabled backend service |\n| \u003ca name=\"output_ip_address\"\u003e\u003c/a\u003e [ip\\_address](#output\\_ip\\_address) | The IPv4 address of the load balancer |\n| \u003ca name=\"output_managed_ssl_certificate_certificate_id\"\u003e\u003c/a\u003e [managed\\_ssl\\_certificate\\_certificate\\_id](#output\\_managed\\_ssl\\_certificate\\_certificate\\_id) | The unique identifier of the Google Managed SSL certificate |\n| \u003ca name=\"output_managed_ssl_certificate_expire_time\"\u003e\u003c/a\u003e [managed\\_ssl\\_certificate\\_expire\\_time](#output\\_managed\\_ssl\\_certificate\\_expire\\_time) | Expire time of the Google Managed SSL certificate |\n\u003c!-- END_TF_DOCS --\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frunatlantis%2Fterraform-gce-atlantis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frunatlantis%2Fterraform-gce-atlantis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frunatlantis%2Fterraform-gce-atlantis/lists"}