Skip to content

chore: add IDEs page #2388

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Jun 16, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
144 changes: 144 additions & 0 deletions docs/ides.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
# IDEs

The following desktop IDEs have been tested with Coder, though any IDE with SSH
support should work:

- VS Code (with [Remote -
SSH](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh)
extension)
- JetBrains (with
[Gateway](https://www.jetbrains.com/help/idea/remote-development-a.html#launch_gateway)
installed)
- IntelliJ IDEA
- CLion
- GoLand
- PyCharm
- Rider
- RubyMine
- WebStorm

## SSH configuration

> Before proceeding, run `coder login <accessURL>` if you haven't already to
> authenticate the CLI with the web UI and your workspaces.

To access Coder via SSH, run the following in the terminal:

```console
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TIL about console! I've always used shell but I guess they're the same!

coder config-ssh
```

> Run `coder config-ssh --diff` if you'd like to see the changes that will be
> made before proceeding.

Confirm that you want to continue by typing **yes** and pressing enter. If
successful, you'll see the following message:

```console
You should now be able to ssh into your workspace.
For example, try running:

$ ssh coder.<workspaceName>
```

Your workspace is now accessible via `ssh coder.<workspace_name>` (e.g.,
`ssh coder.myEnv` if your workspace is named `myEnv`).

## VS Code Remote

Once you've configured SSH, you can work on projects from your local copy of VS
Code, connected to your Coder workspace for compute, etc.

1. Open VS Code locally.

1. Install the [Remote - SSH](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh)
extension.

1. In VS Code's left-hand nav bar, click **Remote Explorer** and right-click on
a workspace to connect.

## VS Code in the browser

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bpmct I thought we'd leverage the sample here instead of walking users through (we could do that in our "how to create your own custom template" doc)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure thing 👍🏼

> You must have Docker Desktop running for this template to work.

Coder offers a [sample template that includes
code-server](../examples/templates/docker-code-server/README.md).

To use:

1. Start Coder:

```console
coder server --dev
```

1. Open a new terminal and run:

```console
coder templates init
```

1. Select the **Develop code-server in Docker** option when prompted.

1. Navigate into your new folder and create your sample template:

```console
cd code-server-docker && coder templates create
```

Follow the prompts that appear in the terminal.

1. Create your workspace:

```console
coder create --template="docker-code-server" [workspace name]
```

1. Log into Coder's Web UI, and open your workspace. Then,
click **code-server** to launch VS Code in a new browser window.

## JetBrains Gateway with SSH
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@bpmct We have JetBrains Gateway info!


If your image
[includes a JetBrains IDE](../admin/workspace-management/installing-jetbrains.md)
and you've [set up SSH access to Coder](./ssh.md), you can use JetBrains Gateway
to run a local JetBrains IDE connected to your Coder workspace.

> See the [Docker sample template](../examples/templates/docker/main.tf) for an
> example of how to refer to images in your template.

Please note that:

- Your Coder workspace must be running, and Gateway needs compute resources, so
monitor your resource usage on the Coder dashboard and adjust accordingly.
- If you use a premium JetBrains IDE (e.g., GoLand, IntelliJ IDEA Ultimate), you
will still need a license to use it remotely with Coder.

1. [Download and install JetBrains Toolbox](https://www.jetbrains.com/toolbox-app/).
Locate JetBrains Gateway in the Toolbox list and click **Install**.

1. Open JetBrains Gateway and click **Connect via SSH** within the **Run the IDE
Remotely** section.

1. Click the small **gear icon** to the right of the **Connection** field, then
the **+** button on the next screen to create a new configuration.

1. Enter your Coder workspace alias target in **Host** (e.g.,
`coder.<yourWorkspaceName>`), `22` in **Port**, `coder` in **User name**, and change
**Authentication Type** to **OpenSSH config and authentication agent**. Leave
the local port field blank. Click **Test Connection**. If the test is
successful, click **Ok** at the bottom to proceed.

1. With your created configuration in the **Connection** chosen in the drop-down
field, click **Check Connection and Continue**.

1. Select a JetBrains IDE from the **IDE version** drop-down (make sure that you
choose the IDE included in your image), then click the folder icon and select the
`/home/coder` directory in your Coder workspace. Click **Download and Start
IDE** to proceed.

1. During this installation step, Gateway downloads the IDE and a JetBrains
client. This may take a couple of minutes.

1. When your IDE download is complete, JetBrains will prompt you for your
license. When done, you'll be able to use your IDE.
33 changes: 8 additions & 25 deletions docs/templates.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,22 +23,6 @@ vim <template-name>/main.tf
coder templates <create/update> <template-name>
```

## Persistent and ephemeral resources

Coder supports both ephemeral and persistent resources in workspaces. Ephemeral
resources are destroyed when a workspace is not in use (e.g., when it is
stopped). Persistent resources remain. See how this works for a sample front-end
template:

| Resource | Type |
| :--------------------------- | :--------- |
| google_compute_disk.home_dir | persistent |
| kubernetes_pod.dev | ephemeral |
| └─ nodejs (linux, amd64) | |
| api_token.backend | ephemeral |

When a workspace is deleted, all resources are destroyed.

## Parameters

Templates often contain *parameters*. In Coder, there are two types of parameters:
Expand All @@ -47,10 +31,9 @@ Templates often contain *parameters*. In Coder, there are two types of parameter
are often cloud secrets, such as a `ServiceAccount` token, and are annotated
with `sensitive = true` in the template code.

- **User parameters** are set when a user creates a workspace. They are unique to
each workspace, often personalization settings such as "preferred
region" or "workspace image".

- **User parameters** are set when a user creates a workspace. They are unique
to each workspace, often personalization settings such as "preferred region"
or "workspace image".

## Best Practices

Expand All @@ -70,12 +53,12 @@ provider credentials out of Coder's database (making it a less valuable target f
and is compatible with agent-based authentication schemes (that handle credential rotation
and/or ensure the credentials are not written to disk).

Cloud providers for which the Terraform provider supports authenticated environments include
Cloud providers for which the Terraform provider supports authenticated environments include:

* [Google Cloud](https://registry.terraform.io/providers/hashicorp/google/latest/docs)
* [Amazon Web Services](https://registry.terraform.io/providers/hashicorp/aws/latest/docs)
* [Microsoft Azure](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs)
* [Kubernetes](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs)
- [Google Cloud](https://registry.terraform.io/providers/hashicorp/google/latest/docs)
- [Amazon Web Services](https://registry.terraform.io/providers/hashicorp/aws/latest/docs)
- [Microsoft Azure](https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs)
- [Kubernetes](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs)

Additional providers may be supported; check the
[documentation of the Terraform provider](https://registry.terraform.io/browse/providers) for
Expand Down
37 changes: 7 additions & 30 deletions docs/workspaces.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,40 +10,15 @@ templates](./templates.md):

```sh
# create a workspace from the template; specify any variables
coder create <workspace-name>
create --template="<templateName>" <workspaceName>

# show the resources behind the workspace and how to connect
coder show <workspace-name>
```

## Connect with SSH
## IDEs

Once you've added your workspaces to your SSH hosts, you can connect from any
IDE with remote development support:

```sh
coder config-ssh
coder ssh <workspaceName>
```

## Editors and IDEs

The following desktop IDEs have been tested with Coder, though any IDE with SSH
support should work!

- VS Code (with [Remote -
SSH](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh)
extension)
- JetBrains (with
[Gateway](https://www.jetbrains.com/help/idea/remote-development-a.html#launch_gateway)
installed)
- IntelliJ IDEA
- CLion
- GoLand
- PyCharm
- Rider
- RubyMine
- WebStorm
Coder [supports multiple IDEs](ides.md) for use with your workspaces.

## Workspace lifecycle

Expand All @@ -67,8 +42,10 @@ When a workspace is deleted, all of the workspace's resources are deleted.

## Dotfiles

Users can install configuration from a personal [dotfiles repository](https://dotfiles.github.io) with the `coder dotfiles <repo>`
command in their workspace. Templates can also prompt users for their dotfiles repo [(example)](../examples/templates/docker-with-dotfiles/README.md#how-it-works).
Users can install configuration from a personal [dotfiles
repository](https://dotfiles.github.io) with the `coder dotfiles <repo>` command
in their workspace. Templates can also prompt users for their dotfiles repo
[(example)](../examples/templates/docker-with-dotfiles/README.md#how-it-works).

## Updating workspaces

Expand Down