Skip to content

chore: add optional coder_app to faq #11351

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 5 commits into from
Jan 11, 2024
Merged
Changes from 1 commit
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
56 changes: 56 additions & 0 deletions docs/faqs.md
Original file line number Diff line number Diff line change
Expand Up @@ -403,3 +403,59 @@ colima start --arch x86_64 --cpu 4 --memory 8 --disk 10
Colima will show the path to the docker socket so I have a
[Coder template](./docker-code-server/main.tf) that prompts the Coder admin to
enter the docker socket as a Terraform variable.

## How to make a `coder_app` optional?

An example use case is the user should decide if they want a browser-based IDE
like code-server when creating the workspace.

1. Create a `coder_parameter` as a `bool` to ask the user if they want the
code-server IDE

```hcl
data "coder_parameter" "code_server" {
name = "code-server (optional)"
description = "Use VS Code in a browser"
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
name = "code-server (optional)"
description = "Use VS Code in a browser"
name = "Do you want code-server in your workspace?"
description = "Use VS Code in a browser."

type = "bool"
default = false
mutable = true
icon = "/icon/code.svg"
order = 6
}
```

2. Add conditional logic to the `startup_script` to install and start
code-server if the `bool` is true

```sh
# install and code-server, VS Code in a browser

if [ ${data.coder_parameter.code_server.value} = true ]; then
echo "🧑🏼‍💻 Downloading and installing the latest code-server IDE..."
curl -fsSL https://code-server.dev/install.sh | sh
code-server --auth none --port 13337 >/dev/null 2>&1 &
fi
```

3. Add a Terraform meta-argument `count` in the `coder_app` resource so it will
only create the resource if the `coder_parameter` is true

```hcl
# code-server
resource "coder_app" "code-server" {
count = data.coder_parameter.code_server.value ? 1 : 0
agent_id = coder_agent.coder.id
slug = "code-server"
display_name = "code-server"
icon = "/icon/code.svg"
url = "http://localhost:13337?folder=/home/coder"
subdomain = false
share = "owner"

healthcheck {
url = "http://localhost:13337/healthz"
interval = 3
threshold = 10
}
}
```