mirror of
https://github.com/coder/coder.git
synced 2026-06-05 05:58:20 +00:00
2e86b76fb8
Co-authored-by: Kyle Carberry <kyle@carberry.com> Co-authored-by: Muhammad Atif Ali <atif@coder.com> Co-authored-by: Muhammad Atif Ali <me@matifali.dev>
65 lines
2.2 KiB
Markdown
65 lines
2.2 KiB
Markdown
---
|
|
display_name: Google Compute Engine (Linux)
|
|
description: Provision Google Compute Engine instances as Coder workspaces
|
|
icon: ../../../site/static/icon/gcp.png
|
|
maintainer_github: coder
|
|
verified: true
|
|
tags: [vm, linux, gcp]
|
|
---
|
|
|
|
# Remote Development on Google Compute Engine (Linux)
|
|
|
|
## Prerequisites
|
|
|
|
### Authentication
|
|
|
|
This template assumes that coderd is run in an environment that is authenticated
|
|
with Google Cloud. For example, run `gcloud auth application-default login` to
|
|
import credentials on the system and user running coderd. For other ways to
|
|
authenticate [consult the Terraform
|
|
docs](https://registry.terraform.io/providers/hashicorp/google/latest/docs/guides/getting_started#adding-credentials).
|
|
|
|
Coder requires a Google Cloud Service Account to provision workspaces. To create
|
|
a service account:
|
|
|
|
1. Navigate to the [CGP
|
|
console](https://console.cloud.google.com/projectselector/iam-admin/serviceaccounts/create),
|
|
and select your Cloud project (if you have more than one project associated
|
|
with your account)
|
|
|
|
1. Provide a service account name (this name is used to generate the service
|
|
account ID)
|
|
|
|
1. Click **Create and continue**, and choose the following IAM roles to grant to
|
|
the service account:
|
|
|
|
- Compute Admin
|
|
- Service Account User
|
|
|
|
Click **Continue**.
|
|
|
|
1. Click on the created key, and navigate to the **Keys** tab.
|
|
|
|
1. Click **Add key** > **Create new key**.
|
|
|
|
1. Generate a **JSON private key**, which will be what you provide to Coder
|
|
during the setup process.
|
|
|
|
## Architecture
|
|
|
|
This template provisions the following resources:
|
|
|
|
- GCP VM (ephemeral)
|
|
- GCP Disk (persistent, mounted to root)
|
|
|
|
Coder persists the root volume. The full filesystem is preserved when the workspace restarts. See this [community example](https://github.com/bpmct/coder-templates/tree/main/aws-linux-ephemeral) of an ephemeral AWS instance.
|
|
|
|
> **Note**
|
|
> This template is designed to be a starting point! Edit the Terraform to extend the template to support your use case.
|
|
|
|
## code-server
|
|
|
|
`code-server` is installed via the `startup_script` argument in the `coder_agent`
|
|
resource block. The `coder_app` resource is defined to access `code-server` through
|
|
the dashboard UI over `localhost:13337`.
|