Compare commits
5 Commits
main
...
coder-moni
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
66aa7bf80a | ||
|
|
1a101ecc10 | ||
|
|
9c049bd555 | ||
|
|
84bf63705f | ||
|
|
e4af2a9887 |
3
.github/scripts/check.sh
vendored
3
.github/scripts/check.sh
vendored
@@ -196,8 +196,7 @@ else
|
|||||||
|
|
||||||
# If a module is down, force a reployment to try getting things back online
|
# If a module is down, force a reployment to try getting things back online
|
||||||
# ASAP
|
# ASAP
|
||||||
# EDIT: registry.coder.com is no longer hosted on vercel
|
force_redeploy_registry
|
||||||
#force_redeploy_registry
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exit "${status}"
|
exit "${status}"
|
||||||
|
|||||||
19
.github/workflows/ci.yaml
vendored
19
.github/workflows/ci.yaml
vendored
@@ -16,23 +16,14 @@ jobs:
|
|||||||
test:
|
test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Check out code
|
- uses: actions/checkout@v4
|
||||||
uses: actions/checkout@v4
|
- uses: coder/coder/.github/actions/setup-tf@main
|
||||||
- name: Set up Terraform
|
- uses: oven-sh/setup-bun@v2
|
||||||
uses: coder/coder/.github/actions/setup-tf@main
|
|
||||||
- name: Set up Bun
|
|
||||||
uses: oven-sh/setup-bun@v2
|
|
||||||
with:
|
with:
|
||||||
# We're using the latest version of Bun for now, but it might be worth
|
|
||||||
# reconsidering. They've pushed breaking changes in patch releases
|
|
||||||
# that have broken our CI.
|
|
||||||
# Our PR where issues started to pop up: https://github.com/coder/modules/pull/383
|
|
||||||
# The Bun PR that broke things: https://github.com/oven-sh/bun/pull/16067
|
|
||||||
bun-version: latest
|
bun-version: latest
|
||||||
- name: Install dependencies
|
- name: Setup
|
||||||
run: bun install
|
run: bun install
|
||||||
- name: Run tests
|
- run: bun test
|
||||||
run: bun test
|
|
||||||
pretty:
|
pretty:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
37
.github/workflows/deploy-registry.yaml
vendored
37
.github/workflows/deploy-registry.yaml
vendored
@@ -1,37 +0,0 @@
|
|||||||
name: deploy-registry
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
deploy:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
# Set id-token permission for gcloud
|
|
||||||
# Adding a comment because retriggering the build manually hung? I am the lord of devops and you will bend?
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
id-token: write
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Authenticate to Google Cloud
|
|
||||||
uses: google-github-actions/auth@71f986410dfbc7added4569d411d040a91dc6935
|
|
||||||
with:
|
|
||||||
workload_identity_provider: projects/309789351055/locations/global/workloadIdentityPools/github-actions/providers/github
|
|
||||||
service_account: registry-v2-github@coder-registry-1.iam.gserviceaccount.com
|
|
||||||
|
|
||||||
- name: Set up Google Cloud SDK
|
|
||||||
uses: google-github-actions/setup-gcloud@77e7a554d41e2ee56fc945c52dfd3f33d12def9a
|
|
||||||
|
|
||||||
# For the time being, let's have the first couple merges to main in modules deploy a new version
|
|
||||||
# to *dev*. Once we review and make sure everything's working, we can deploy a new version to *main*.
|
|
||||||
# Maybe in the future we could automate this based on the result of E2E tests.
|
|
||||||
- name: Deploy to dev.registry.coder.com
|
|
||||||
run: |
|
|
||||||
gcloud builds triggers run 29818181-126d-4f8a-a937-f228b27d3d34 --branch dev
|
|
||||||
|
|
||||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -2,6 +2,3 @@
|
|||||||
node_modules
|
node_modules
|
||||||
*.tfstate
|
*.tfstate
|
||||||
*.tfstate.lock.info
|
*.tfstate.lock.info
|
||||||
|
|
||||||
# Ignore generated credentials from google-github-actions/auth
|
|
||||||
gha-creds-*.json
|
|
||||||
@@ -13,7 +13,6 @@ tags: [helper]
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "MODULE_NAME" {
|
module "MODULE_NAME" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/MODULE_NAME/coder"
|
source = "registry.coder.com/modules/MODULE_NAME/coder"
|
||||||
version = "1.0.2"
|
version = "1.0.2"
|
||||||
}
|
}
|
||||||
@@ -29,7 +28,6 @@ Install the Dracula theme from [OpenVSX](https://open-vsx.org/):
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "MODULE_NAME" {
|
module "MODULE_NAME" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/MODULE_NAME/coder"
|
source = "registry.coder.com/modules/MODULE_NAME/coder"
|
||||||
version = "1.0.2"
|
version = "1.0.2"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
@@ -47,7 +45,6 @@ Configure VS Code's [settings.json](https://code.visualstudio.com/docs/getstarte
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "MODULE_NAME" {
|
module "MODULE_NAME" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/MODULE_NAME/coder"
|
source = "registry.coder.com/modules/MODULE_NAME/coder"
|
||||||
version = "1.0.2"
|
version = "1.0.2"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ e.g.
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "code-server" {
|
module "code-server" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/code-server/coder"
|
source = "registry.coder.com/modules/code-server/coder"
|
||||||
version = "1.0.2"
|
version = "1.0.2"
|
||||||
agent_id = coder_agent.main.id
|
agent_id = coder_agent.main.id
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ A module that adds Apache Airflow in your Coder template.
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "airflow" {
|
module "airflow" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/apache-airflow/coder"
|
source = "registry.coder.com/modules/apache-airflow/coder"
|
||||||
version = "1.0.13"
|
version = "1.0.13"
|
||||||
agent_id = coder_agent.main.id
|
agent_id = coder_agent.main.id
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ Customize the preselected parameter value:
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "aws-region" {
|
module "aws-region" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/aws-region/coder"
|
source = "registry.coder.com/modules/aws-region/coder"
|
||||||
version = "1.0.12"
|
version = "1.0.12"
|
||||||
default = "us-east-1"
|
default = "us-east-1"
|
||||||
@@ -37,7 +36,6 @@ Change the display name and icon for a region using the corresponding maps:
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "aws-region" {
|
module "aws-region" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/aws-region/coder"
|
source = "registry.coder.com/modules/aws-region/coder"
|
||||||
version = "1.0.12"
|
version = "1.0.12"
|
||||||
default = "ap-south-1"
|
default = "ap-south-1"
|
||||||
@@ -64,7 +62,6 @@ Hide the Asia Pacific regions Seoul and Osaka:
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "aws-region" {
|
module "aws-region" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/aws-region/coder"
|
source = "registry.coder.com/modules/aws-region/coder"
|
||||||
version = "1.0.12"
|
version = "1.0.12"
|
||||||
exclude = ["ap-northeast-2", "ap-northeast-3"]
|
exclude = ["ap-northeast-2", "ap-northeast-3"]
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ This module adds a parameter with all Azure regions, allowing developers to sele
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "azure_region" {
|
module "azure_region" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/azure-region/coder"
|
source = "registry.coder.com/modules/azure-region/coder"
|
||||||
version = "1.0.12"
|
version = "1.0.12"
|
||||||
default = "eastus"
|
default = "eastus"
|
||||||
@@ -34,7 +33,6 @@ Change the display name and icon for a region using the corresponding maps:
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "azure-region" {
|
module "azure-region" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/azure-region/coder"
|
source = "registry.coder.com/modules/azure-region/coder"
|
||||||
version = "1.0.12"
|
version = "1.0.12"
|
||||||
custom_names = {
|
custom_names = {
|
||||||
@@ -58,7 +56,6 @@ Hide all regions in Australia except australiacentral:
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "azure-region" {
|
module "azure-region" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/azure-region/coder"
|
source = "registry.coder.com/modules/azure-region/coder"
|
||||||
version = "1.0.12"
|
version = "1.0.12"
|
||||||
exclude = [
|
exclude = [
|
||||||
|
|||||||
@@ -13,9 +13,8 @@ Automatically install [code-server](https://github.com/coder/code-server) in a w
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "code-server" {
|
module "code-server" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/code-server/coder"
|
source = "registry.coder.com/modules/code-server/coder"
|
||||||
version = "1.0.29"
|
version = "1.0.18"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@@ -28,9 +27,8 @@ module "code-server" {
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "code-server" {
|
module "code-server" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/code-server/coder"
|
source = "registry.coder.com/modules/code-server/coder"
|
||||||
version = "1.0.29"
|
version = "1.0.18"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
install_version = "4.8.3"
|
install_version = "4.8.3"
|
||||||
}
|
}
|
||||||
@@ -42,9 +40,8 @@ Install the Dracula theme from [OpenVSX](https://open-vsx.org/):
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "code-server" {
|
module "code-server" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/code-server/coder"
|
source = "registry.coder.com/modules/code-server/coder"
|
||||||
version = "1.0.29"
|
version = "1.0.18"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
extensions = [
|
extensions = [
|
||||||
"dracula-theme.theme-dracula"
|
"dracula-theme.theme-dracula"
|
||||||
@@ -56,13 +53,12 @@ Enter the `<author>.<name>` into the extensions array and code-server will autom
|
|||||||
|
|
||||||
### Pre-configure Settings
|
### Pre-configure Settings
|
||||||
|
|
||||||
Configure VS Code's [settings.json](https://code.visualstudio.com/docs/getstarted/settings#_settings-json-file) file:
|
Configure VS Code's [settings.json](https://code.visualstudio.com/docs/getstarted/settings#_settingsjson) file:
|
||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "code-server" {
|
module "code-server" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/code-server/coder"
|
source = "registry.coder.com/modules/code-server/coder"
|
||||||
version = "1.0.29"
|
version = "1.0.18"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
extensions = ["dracula-theme.theme-dracula"]
|
extensions = ["dracula-theme.theme-dracula"]
|
||||||
settings = {
|
settings = {
|
||||||
@@ -77,9 +73,8 @@ Just run code-server in the background, don't fetch it from GitHub:
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "code-server" {
|
module "code-server" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/code-server/coder"
|
source = "registry.coder.com/modules/code-server/coder"
|
||||||
version = "1.0.29"
|
version = "1.0.18"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
extensions = ["dracula-theme.theme-dracula", "ms-azuretools.vscode-docker"]
|
extensions = ["dracula-theme.theme-dracula", "ms-azuretools.vscode-docker"]
|
||||||
}
|
}
|
||||||
@@ -93,9 +88,8 @@ Run an existing copy of code-server if found, otherwise download from GitHub:
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "code-server" {
|
module "code-server" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/code-server/coder"
|
source = "registry.coder.com/modules/code-server/coder"
|
||||||
version = "1.0.29"
|
version = "1.0.18"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
use_cached = true
|
use_cached = true
|
||||||
extensions = ["dracula-theme.theme-dracula", "ms-azuretools.vscode-docker"]
|
extensions = ["dracula-theme.theme-dracula", "ms-azuretools.vscode-docker"]
|
||||||
@@ -106,9 +100,8 @@ Just run code-server in the background, don't fetch it from GitHub:
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "code-server" {
|
module "code-server" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/code-server/coder"
|
source = "registry.coder.com/modules/code-server/coder"
|
||||||
version = "1.0.29"
|
version = "1.0.18"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
offline = true
|
offline = true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ variable "slug" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
variable "settings" {
|
variable "settings" {
|
||||||
type = any
|
type = map(string)
|
||||||
description = "A map of settings to apply to code-server."
|
description = "A map of settings to apply to code-server."
|
||||||
default = {}
|
default = {}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -104,8 +104,7 @@ if [ "${AUTO_INSTALL_EXTENSIONS}" = true ]; then
|
|||||||
|
|
||||||
if [ -f "$WORKSPACE_DIR/.vscode/extensions.json" ]; then
|
if [ -f "$WORKSPACE_DIR/.vscode/extensions.json" ]; then
|
||||||
printf "🧩 Installing extensions from %s/.vscode/extensions.json...\n" "$WORKSPACE_DIR"
|
printf "🧩 Installing extensions from %s/.vscode/extensions.json...\n" "$WORKSPACE_DIR"
|
||||||
# Use sed to remove single-line comments before parsing with jq
|
extensions=$(jq -r '.recommendations[]' "$WORKSPACE_DIR"/.vscode/extensions.json)
|
||||||
extensions=$(sed 's|//.*||g' "$WORKSPACE_DIR"/.vscode/extensions.json | jq -r '.recommendations[]')
|
|
||||||
for extension in $extensions; do
|
for extension in $extensions; do
|
||||||
if extension_installed "$extension"; then
|
if extension_installed "$extension"; then
|
||||||
continue
|
continue
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ Automatically logs the user into Coder when creating their workspace.
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "coder-login" {
|
module "coder-login" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/coder-login/coder"
|
source = "registry.coder.com/modules/coder-login/coder"
|
||||||
version = "1.0.15"
|
version = "1.0.15"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ Uses the [Coder Remote VS Code Extension](https://github.com/coder/cursor-coder)
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "cursor" {
|
module "cursor" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/cursor/coder"
|
source = "registry.coder.com/modules/cursor/coder"
|
||||||
version = "1.0.19"
|
version = "1.0.19"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
@@ -28,7 +27,6 @@ module "cursor" {
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "cursor" {
|
module "cursor" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/cursor/coder"
|
source = "registry.coder.com/modules/cursor/coder"
|
||||||
version = "1.0.19"
|
version = "1.0.19"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
|
|||||||
@@ -17,9 +17,8 @@ Under the hood, this module uses the [coder dotfiles](https://coder.com/docs/v2/
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "dotfiles" {
|
module "dotfiles" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/dotfiles/coder"
|
source = "registry.coder.com/modules/dotfiles/coder"
|
||||||
version = "1.0.29"
|
version = "1.0.18"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@@ -30,9 +29,8 @@ module "dotfiles" {
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "dotfiles" {
|
module "dotfiles" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/dotfiles/coder"
|
source = "registry.coder.com/modules/dotfiles/coder"
|
||||||
version = "1.0.29"
|
version = "1.0.18"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@@ -41,9 +39,8 @@ module "dotfiles" {
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "dotfiles" {
|
module "dotfiles" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/dotfiles/coder"
|
source = "registry.coder.com/modules/dotfiles/coder"
|
||||||
version = "1.0.29"
|
version = "1.0.18"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
user = "root"
|
user = "root"
|
||||||
}
|
}
|
||||||
@@ -53,16 +50,14 @@ module "dotfiles" {
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "dotfiles" {
|
module "dotfiles" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/dotfiles/coder"
|
source = "registry.coder.com/modules/dotfiles/coder"
|
||||||
version = "1.0.29"
|
version = "1.0.18"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
}
|
}
|
||||||
|
|
||||||
module "dotfiles-root" {
|
module "dotfiles-root" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/dotfiles/coder"
|
source = "registry.coder.com/modules/dotfiles/coder"
|
||||||
version = "1.0.29"
|
version = "1.0.18"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
user = "root"
|
user = "root"
|
||||||
dotfiles_uri = module.dotfiles.dotfiles_uri
|
dotfiles_uri = module.dotfiles.dotfiles_uri
|
||||||
@@ -75,9 +70,8 @@ You can set a default dotfiles repository for all users by setting the `default_
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "dotfiles" {
|
module "dotfiles" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/dotfiles/coder"
|
source = "registry.coder.com/modules/dotfiles/coder"
|
||||||
version = "1.0.29"
|
version = "1.0.18"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
default_dotfiles_uri = "https://github.com/coder/dotfiles"
|
default_dotfiles_uri = "https://github.com/coder/dotfiles"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,4 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
DOTFILES_URI="${DOTFILES_URI}"
|
DOTFILES_URI="${DOTFILES_URI}"
|
||||||
DOTFILES_USER="${DOTFILES_USER}"
|
DOTFILES_USER="${DOTFILES_USER}"
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ Customize the preselected parameter value:
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "exoscale-instance-type" {
|
module "exoscale-instance-type" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/exoscale-instance-type/coder"
|
source = "registry.coder.com/modules/exoscale-instance-type/coder"
|
||||||
version = "1.0.12"
|
version = "1.0.12"
|
||||||
default = "standard.medium"
|
default = "standard.medium"
|
||||||
@@ -45,7 +44,6 @@ Change the display name a type using the corresponding maps:
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "exoscale-instance-type" {
|
module "exoscale-instance-type" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/exoscale-instance-type/coder"
|
source = "registry.coder.com/modules/exoscale-instance-type/coder"
|
||||||
version = "1.0.12"
|
version = "1.0.12"
|
||||||
default = "standard.medium"
|
default = "standard.medium"
|
||||||
@@ -80,7 +78,6 @@ Show only gpu1 types
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "exoscale-instance-type" {
|
module "exoscale-instance-type" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/exoscale-instance-type/coder"
|
source = "registry.coder.com/modules/exoscale-instance-type/coder"
|
||||||
version = "1.0.12"
|
version = "1.0.12"
|
||||||
default = "gpu.large"
|
default = "gpu.large"
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ Customize the preselected parameter value:
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "exoscale-zone" {
|
module "exoscale-zone" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/exoscale-zone/coder"
|
source = "registry.coder.com/modules/exoscale-zone/coder"
|
||||||
version = "1.0.12"
|
version = "1.0.12"
|
||||||
default = "ch-dk-2"
|
default = "ch-dk-2"
|
||||||
@@ -44,7 +43,6 @@ Change the display name and icon for a zone using the corresponding maps:
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "exoscale-zone" {
|
module "exoscale-zone" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/exoscale-zone/coder"
|
source = "registry.coder.com/modules/exoscale-zone/coder"
|
||||||
version = "1.0.12"
|
version = "1.0.12"
|
||||||
default = "at-vie-1"
|
default = "at-vie-1"
|
||||||
|
|||||||
@@ -13,9 +13,8 @@ A file browser for your workspace.
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "filebrowser" {
|
module "filebrowser" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/filebrowser/coder"
|
source = "registry.coder.com/modules/filebrowser/coder"
|
||||||
version = "1.0.29"
|
version = "1.0.23"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@@ -28,9 +27,8 @@ module "filebrowser" {
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "filebrowser" {
|
module "filebrowser" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/filebrowser/coder"
|
source = "registry.coder.com/modules/filebrowser/coder"
|
||||||
version = "1.0.29"
|
version = "1.0.23"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
folder = "/home/coder/project"
|
folder = "/home/coder/project"
|
||||||
}
|
}
|
||||||
@@ -40,9 +38,8 @@ module "filebrowser" {
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "filebrowser" {
|
module "filebrowser" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/filebrowser/coder"
|
source = "registry.coder.com/modules/filebrowser/coder"
|
||||||
version = "1.0.29"
|
version = "1.0.23"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
database_path = ".config/filebrowser.db"
|
database_path = ".config/filebrowser.db"
|
||||||
}
|
}
|
||||||
@@ -52,9 +49,7 @@ module "filebrowser" {
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "filebrowser" {
|
module "filebrowser" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/filebrowser/coder"
|
source = "registry.coder.com/modules/filebrowser/coder"
|
||||||
version = "1.0.29"
|
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
agent_name = "main"
|
agent_name = "main"
|
||||||
subdomain = false
|
subdomain = false
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ describe("filebrowser", async () => {
|
|||||||
"",
|
"",
|
||||||
"📂 Serving /root at http://localhost:13339 ",
|
"📂 Serving /root at http://localhost:13339 ",
|
||||||
"",
|
"",
|
||||||
"Running 'filebrowser --noauth --root /root --port 13339 --baseurl ' ",
|
"Running 'filebrowser --noauth --root /root --port 13339' ",
|
||||||
"",
|
"",
|
||||||
"📝 Logs at /tmp/filebrowser.log",
|
"📝 Logs at /tmp/filebrowser.log",
|
||||||
]);
|
]);
|
||||||
@@ -61,7 +61,7 @@ describe("filebrowser", async () => {
|
|||||||
"",
|
"",
|
||||||
"📂 Serving /root at http://localhost:13339 ",
|
"📂 Serving /root at http://localhost:13339 ",
|
||||||
"",
|
"",
|
||||||
"Running 'filebrowser --noauth --root /root --port 13339 -d .config/filebrowser.db --baseurl ' ",
|
"Running 'filebrowser --noauth --root /root --port 13339 -d .config/filebrowser.db' ",
|
||||||
"",
|
"",
|
||||||
"📝 Logs at /tmp/filebrowser.log",
|
"📝 Logs at /tmp/filebrowser.log",
|
||||||
]);
|
]);
|
||||||
@@ -75,7 +75,7 @@ describe("filebrowser", async () => {
|
|||||||
const output = await executeScriptInContainer(state, "alpine");
|
const output = await executeScriptInContainer(state, "alpine");
|
||||||
expect(output.exitCode).toBe(0);
|
expect(output.exitCode).toBe(0);
|
||||||
expect(output.stdout).toEqual([
|
expect(output.stdout).toEqual([
|
||||||
"\u001b[0;1mInstalling filebrowser ",
|
"\u001B[0;1mInstalling filebrowser ",
|
||||||
"",
|
"",
|
||||||
"🥳 Installation complete! ",
|
"🥳 Installation complete! ",
|
||||||
"",
|
"",
|
||||||
@@ -83,7 +83,7 @@ describe("filebrowser", async () => {
|
|||||||
"",
|
"",
|
||||||
"📂 Serving /home/coder/project at http://localhost:13339 ",
|
"📂 Serving /home/coder/project at http://localhost:13339 ",
|
||||||
"",
|
"",
|
||||||
"Running 'filebrowser --noauth --root /home/coder/project --port 13339 --baseurl ' ",
|
"Running 'filebrowser --noauth --root /home/coder/project --port 13339' ",
|
||||||
"",
|
"",
|
||||||
"📝 Logs at /tmp/filebrowser.log",
|
"📝 Logs at /tmp/filebrowser.log",
|
||||||
]);
|
]);
|
||||||
@@ -106,7 +106,7 @@ describe("filebrowser", async () => {
|
|||||||
"",
|
"",
|
||||||
"📂 Serving /root at http://localhost:13339 ",
|
"📂 Serving /root at http://localhost:13339 ",
|
||||||
"",
|
"",
|
||||||
"Running 'filebrowser --noauth --root /root --port 13339 --baseurl /@default/default.main/apps/filebrowser' ",
|
"Running 'filebrowser --noauth --root /root --port 13339' ",
|
||||||
"",
|
"",
|
||||||
"📝 Logs at /tmp/filebrowser.log",
|
"📝 Logs at /tmp/filebrowser.log",
|
||||||
]);
|
]);
|
||||||
|
|||||||
@@ -21,10 +21,13 @@ if [ "${DB_PATH}" != "filebrowser.db" ]; then
|
|||||||
DB_FLAG=" -d ${DB_PATH}"
|
DB_FLAG=" -d ${DB_PATH}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# set baseurl to be able to run if sudomain=false; if subdomain=true the SERVER_BASE_PATH value will be ""
|
||||||
|
filebrowser config set --baseurl "${SERVER_BASE_PATH}"$${DB_FLAG} > ${LOG_PATH} 2>&1
|
||||||
|
|
||||||
printf "📂 Serving $${ROOT_DIR} at http://localhost:${PORT} \n\n"
|
printf "📂 Serving $${ROOT_DIR} at http://localhost:${PORT} \n\n"
|
||||||
|
|
||||||
printf "Running 'filebrowser --noauth --root $ROOT_DIR --port ${PORT}$${DB_FLAG} --baseurl ${SERVER_BASE_PATH}' \n\n"
|
printf "Running 'filebrowser --noauth --root $ROOT_DIR --port ${PORT}$${DB_FLAG}' \n\n"
|
||||||
|
|
||||||
filebrowser --noauth --root $ROOT_DIR --port ${PORT}$${DB_FLAG} --baseurl ${SERVER_BASE_PATH} > ${LOG_PATH} 2>&1 &
|
filebrowser --noauth --root $ROOT_DIR --port ${PORT}$${DB_FLAG} > ${LOG_PATH} 2>&1 &
|
||||||
|
|
||||||
printf "📝 Logs at ${LOG_PATH} \n\n"
|
printf "📝 Logs at ${LOG_PATH} \n\n"
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ We can use the simplest format here, only adding a default selection as the `atl
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "fly-region" {
|
module "fly-region" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/fly-region/coder"
|
source = "registry.coder.com/modules/fly-region/coder"
|
||||||
version = "1.0.2"
|
version = "1.0.2"
|
||||||
default = "atl"
|
default = "atl"
|
||||||
@@ -32,7 +31,6 @@ The regions argument can be used to display only the desired regions in the Code
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "fly-region" {
|
module "fly-region" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/fly-region/coder"
|
source = "registry.coder.com/modules/fly-region/coder"
|
||||||
version = "1.0.2"
|
version = "1.0.2"
|
||||||
default = "ams"
|
default = "ams"
|
||||||
@@ -48,7 +46,6 @@ Set custom icons and names with their respective maps.
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "fly-region" {
|
module "fly-region" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/fly-region/coder"
|
source = "registry.coder.com/modules/fly-region/coder"
|
||||||
version = "1.0.2"
|
version = "1.0.2"
|
||||||
default = "ams"
|
default = "ams"
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ This module adds Google Cloud Platform regions to your Coder template.
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "gcp_region" {
|
module "gcp_region" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/gcp-region/coder"
|
source = "registry.coder.com/modules/gcp-region/coder"
|
||||||
version = "1.0.12"
|
version = "1.0.12"
|
||||||
regions = ["us", "europe"]
|
regions = ["us", "europe"]
|
||||||
@@ -34,7 +33,6 @@ Note: setting `gpu_only = true` and using a default region without GPU support,
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "gcp_region" {
|
module "gcp_region" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/gcp-region/coder"
|
source = "registry.coder.com/modules/gcp-region/coder"
|
||||||
version = "1.0.12"
|
version = "1.0.12"
|
||||||
default = ["us-west1-a"]
|
default = ["us-west1-a"]
|
||||||
@@ -51,7 +49,6 @@ resource "google_compute_instance" "example" {
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "gcp_region" {
|
module "gcp_region" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/gcp-region/coder"
|
source = "registry.coder.com/modules/gcp-region/coder"
|
||||||
version = "1.0.12"
|
version = "1.0.12"
|
||||||
regions = ["europe-west"]
|
regions = ["europe-west"]
|
||||||
@@ -67,7 +64,6 @@ resource "google_compute_instance" "example" {
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "gcp_region" {
|
module "gcp_region" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/gcp-region/coder"
|
source = "registry.coder.com/modules/gcp-region/coder"
|
||||||
version = "1.0.12"
|
version = "1.0.12"
|
||||||
regions = ["us", "europe"]
|
regions = ["us", "europe"]
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ This module allows you to automatically clone a repository by URL and skip if it
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "git-clone" {
|
module "git-clone" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/git-clone/coder"
|
source = "registry.coder.com/modules/git-clone/coder"
|
||||||
version = "1.0.18"
|
version = "1.0.18"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
@@ -27,7 +26,6 @@ module "git-clone" {
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "git-clone" {
|
module "git-clone" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/git-clone/coder"
|
source = "registry.coder.com/modules/git-clone/coder"
|
||||||
version = "1.0.18"
|
version = "1.0.18"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
@@ -42,7 +40,6 @@ To use with [Git Authentication](https://coder.com/docs/v2/latest/admin/git-prov
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "git-clone" {
|
module "git-clone" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/git-clone/coder"
|
source = "registry.coder.com/modules/git-clone/coder"
|
||||||
version = "1.0.18"
|
version = "1.0.18"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
@@ -68,7 +65,6 @@ data "coder_parameter" "git_repo" {
|
|||||||
|
|
||||||
# Clone the repository for branch `feat/example`
|
# Clone the repository for branch `feat/example`
|
||||||
module "git_clone" {
|
module "git_clone" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/git-clone/coder"
|
source = "registry.coder.com/modules/git-clone/coder"
|
||||||
version = "1.0.18"
|
version = "1.0.18"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
@@ -77,24 +73,23 @@ module "git_clone" {
|
|||||||
|
|
||||||
# Create a code-server instance for the cloned repository
|
# Create a code-server instance for the cloned repository
|
||||||
module "code-server" {
|
module "code-server" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/code-server/coder"
|
source = "registry.coder.com/modules/code-server/coder"
|
||||||
version = "1.0.18"
|
version = "1.0.18"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
order = 1
|
order = 1
|
||||||
folder = "/home/${local.username}/${module.git_clone[count.index].folder_name}"
|
folder = "/home/${local.username}/${module.git_clone.folder_name}"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Create a Coder app for the website
|
# Create a Coder app for the website
|
||||||
resource "coder_app" "website" {
|
resource "coder_app" "website" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
order = 2
|
order = 2
|
||||||
slug = "website"
|
slug = "website"
|
||||||
external = true
|
external = true
|
||||||
display_name = module.git_clone[count.index].folder_name
|
display_name = module.git_clone.folder_name
|
||||||
url = module.git_clone[count.index].web_url
|
url = module.git_clone.web_url
|
||||||
icon = module.git_clone[count.index].git_provider != "" ? "/icon/${module.git_clone[count.index].git_provider}.svg" : "/icon/git.svg"
|
icon = module.git_clone.git_provider != "" ? "/icon/${module.git_clone.git_provider}.svg" : "/icon/git.svg"
|
||||||
|
count = module.git_clone.web_url != "" ? 1 : 0
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -102,7 +97,6 @@ Configuring `git-clone` for a self-hosted GitHub Enterprise Server running at `g
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "git-clone" {
|
module "git-clone" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/git-clone/coder"
|
source = "registry.coder.com/modules/git-clone/coder"
|
||||||
version = "1.0.18"
|
version = "1.0.18"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
@@ -121,7 +115,6 @@ To GitLab clone with a specific branch like `feat/example`
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "git-clone" {
|
module "git-clone" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/git-clone/coder"
|
source = "registry.coder.com/modules/git-clone/coder"
|
||||||
version = "1.0.18"
|
version = "1.0.18"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
@@ -133,7 +126,6 @@ Configuring `git-clone` for a self-hosted GitLab running at `gitlab.example.com`
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "git-clone" {
|
module "git-clone" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/git-clone/coder"
|
source = "registry.coder.com/modules/git-clone/coder"
|
||||||
version = "1.0.18"
|
version = "1.0.18"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
@@ -154,7 +146,6 @@ For example, to clone the `feat/example` branch:
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "git-clone" {
|
module "git-clone" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/git-clone/coder"
|
source = "registry.coder.com/modules/git-clone/coder"
|
||||||
version = "1.0.18"
|
version = "1.0.18"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
@@ -171,7 +162,6 @@ For example, this will clone into the `~/projects/coder/coder-dev` folder:
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "git-clone" {
|
module "git-clone" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/git-clone/coder"
|
source = "registry.coder.com/modules/git-clone/coder"
|
||||||
version = "1.0.18"
|
version = "1.0.18"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
|
|||||||
@@ -9,9 +9,6 @@ tags: [helper, git]
|
|||||||
|
|
||||||
# git-commit-signing
|
# git-commit-signing
|
||||||
|
|
||||||
> [!IMPORTANT]
|
|
||||||
> This module will only work with Git versions >=2.34, prior versions [do not support signing commits via SSH keys](https://lore.kernel.org/git/xmqq8rxpgwki.fsf@gitster.g/).
|
|
||||||
|
|
||||||
This module downloads your SSH key from Coder and uses it to sign commits with Git.
|
This module downloads your SSH key from Coder and uses it to sign commits with Git.
|
||||||
It requires `curl` and `jq` to be installed inside your workspace.
|
It requires `curl` and `jq` to be installed inside your workspace.
|
||||||
|
|
||||||
@@ -21,7 +18,6 @@ This module has a chance of conflicting with the user's dotfiles / the personali
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "git-commit-signing" {
|
module "git-commit-signing" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/git-commit-signing/coder"
|
source = "registry.coder.com/modules/git-commit-signing/coder"
|
||||||
version = "1.0.11"
|
version = "1.0.11"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ Runs a script that updates git credentials in the workspace to match the user's
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "git-config" {
|
module "git-config" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/git-config/coder"
|
source = "registry.coder.com/modules/git-config/coder"
|
||||||
version = "1.0.15"
|
version = "1.0.15"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
@@ -28,7 +27,6 @@ TODO: Add screenshot
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "git-config" {
|
module "git-config" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/git-config/coder"
|
source = "registry.coder.com/modules/git-config/coder"
|
||||||
version = "1.0.15"
|
version = "1.0.15"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
@@ -42,7 +40,6 @@ TODO: Add screenshot
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "git-config" {
|
module "git-config" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/git-config/coder"
|
source = "registry.coder.com/modules/git-config/coder"
|
||||||
version = "1.0.15"
|
version = "1.0.15"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ Templates that utilize Github External Auth can automatically ensure that the Co
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "github-upload-public-key" {
|
module "github-upload-public-key" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/github-upload-public-key/coder"
|
source = "registry.coder.com/modules/github-upload-public-key/coder"
|
||||||
version = "1.0.15"
|
version = "1.0.15"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
@@ -46,7 +45,6 @@ data "coder_external_auth" "github" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
module "github-upload-public-key" {
|
module "github-upload-public-key" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/github-upload-public-key/coder"
|
source = "registry.coder.com/modules/github-upload-public-key/coder"
|
||||||
version = "1.0.15"
|
version = "1.0.15"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
|
|||||||
@@ -11,15 +11,12 @@ tags: [ide, jetbrains, helper, parameter]
|
|||||||
|
|
||||||
This module adds a JetBrains Gateway Button to open any workspace with a single click.
|
This module adds a JetBrains Gateway Button to open any workspace with a single click.
|
||||||
|
|
||||||
JetBrains recommends a minimum of 4 CPU cores and 8GB of RAM.
|
|
||||||
Consult the [JetBrains documentation](https://www.jetbrains.com/help/idea/prerequisites.html#min_requirements) to confirm other system requirements.
|
|
||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "jetbrains_gateway" {
|
module "jetbrains_gateway" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/jetbrains-gateway/coder"
|
source = "registry.coder.com/modules/jetbrains-gateway/coder"
|
||||||
version = "1.0.28"
|
version = "1.0.25"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
|
agent_name = "example"
|
||||||
folder = "/home/coder/example"
|
folder = "/home/coder/example"
|
||||||
jetbrains_ides = ["CL", "GO", "IU", "PY", "WS"]
|
jetbrains_ides = ["CL", "GO", "IU", "PY", "WS"]
|
||||||
default = "GO"
|
default = "GO"
|
||||||
@@ -34,10 +31,10 @@ module "jetbrains_gateway" {
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "jetbrains_gateway" {
|
module "jetbrains_gateway" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/jetbrains-gateway/coder"
|
source = "registry.coder.com/modules/jetbrains-gateway/coder"
|
||||||
version = "1.0.28"
|
version = "1.0.25"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
|
agent_name = "example"
|
||||||
folder = "/home/coder/example"
|
folder = "/home/coder/example"
|
||||||
jetbrains_ides = ["GO", "WS"]
|
jetbrains_ides = ["GO", "WS"]
|
||||||
default = "GO"
|
default = "GO"
|
||||||
@@ -48,10 +45,10 @@ module "jetbrains_gateway" {
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "jetbrains_gateway" {
|
module "jetbrains_gateway" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/jetbrains-gateway/coder"
|
source = "registry.coder.com/modules/jetbrains-gateway/coder"
|
||||||
version = "1.0.28"
|
version = "1.0.25"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
|
agent_name = "example"
|
||||||
folder = "/home/coder/example"
|
folder = "/home/coder/example"
|
||||||
jetbrains_ides = ["IU", "PY"]
|
jetbrains_ides = ["IU", "PY"]
|
||||||
default = "IU"
|
default = "IU"
|
||||||
@@ -63,10 +60,10 @@ module "jetbrains_gateway" {
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "jetbrains_gateway" {
|
module "jetbrains_gateway" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/jetbrains-gateway/coder"
|
source = "registry.coder.com/modules/jetbrains-gateway/coder"
|
||||||
version = "1.0.28"
|
version = "1.0.25"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
|
agent_name = "example"
|
||||||
folder = "/home/coder/example"
|
folder = "/home/coder/example"
|
||||||
jetbrains_ides = ["IU", "PY"]
|
jetbrains_ides = ["IU", "PY"]
|
||||||
default = "IU"
|
default = "IU"
|
||||||
@@ -88,10 +85,10 @@ module "jetbrains_gateway" {
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "jetbrains_gateway" {
|
module "jetbrains_gateway" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/jetbrains-gateway/coder"
|
source = "registry.coder.com/modules/jetbrains-gateway/coder"
|
||||||
version = "1.0.28"
|
version = "1.0.25"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
|
agent_name = "example"
|
||||||
folder = "/home/coder/example"
|
folder = "/home/coder/example"
|
||||||
jetbrains_ides = ["GO", "WS"]
|
jetbrains_ides = ["GO", "WS"]
|
||||||
default = "GO"
|
default = "GO"
|
||||||
@@ -106,10 +103,10 @@ Due to the highest priority of the `ide_download_link` parameter in the `(jetbra
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "jetbrains_gateway" {
|
module "jetbrains_gateway" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/jetbrains-gateway/coder"
|
source = "registry.coder.com/modules/jetbrains-gateway/coder"
|
||||||
version = "1.0.28"
|
version = "1.0.25"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
|
agent_name = "example"
|
||||||
folder = "/home/coder/example"
|
folder = "/home/coder/example"
|
||||||
jetbrains_ides = ["GO", "WS"]
|
jetbrains_ides = ["GO", "WS"]
|
||||||
releases_base_link = "https://releases.internal.site/"
|
releases_base_link = "https://releases.internal.site/"
|
||||||
@@ -122,12 +119,11 @@ module "jetbrains_gateway" {
|
|||||||
|
|
||||||
This module and JetBrains Gateway support the following JetBrains IDEs:
|
This module and JetBrains Gateway support the following JetBrains IDEs:
|
||||||
|
|
||||||
- [GoLand (`GO`)](https://www.jetbrains.com/go/)
|
- GoLand (`GO`)
|
||||||
- [WebStorm (`WS`)](https://www.jetbrains.com/webstorm/)
|
- WebStorm (`WS`)
|
||||||
- [IntelliJ IDEA Ultimate (`IU`)](https://www.jetbrains.com/idea/)
|
- IntelliJ IDEA Ultimate (`IU`)
|
||||||
- [PyCharm Professional (`PY`)](https://www.jetbrains.com/pycharm/)
|
- PyCharm Professional (`PY`)
|
||||||
- [PhpStorm (`PS`)](https://www.jetbrains.com/phpstorm/)
|
- PhpStorm (`PS`)
|
||||||
- [CLion (`CL`)](https://www.jetbrains.com/clion/)
|
- CLion (`CL`)
|
||||||
- [RubyMine (`RM`)](https://www.jetbrains.com/ruby/)
|
- RubyMine (`RM`)
|
||||||
- [Rider (`RD`)](https://www.jetbrains.com/rider/)
|
- Rider (`RD`)
|
||||||
- [RustRover (`RR`)](https://www.jetbrains.com/rust/)
|
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ describe("jetbrains-gateway", async () => {
|
|||||||
|
|
||||||
await testRequiredVariables(import.meta.dir, {
|
await testRequiredVariables(import.meta.dir, {
|
||||||
agent_id: "foo",
|
agent_id: "foo",
|
||||||
|
agent_name: "foo",
|
||||||
folder: "/home/foo",
|
folder: "/home/foo",
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -17,10 +18,11 @@ describe("jetbrains-gateway", async () => {
|
|||||||
const state = await runTerraformApply(import.meta.dir, {
|
const state = await runTerraformApply(import.meta.dir, {
|
||||||
// These are all required.
|
// These are all required.
|
||||||
agent_id: "foo",
|
agent_id: "foo",
|
||||||
|
agent_name: "foo",
|
||||||
folder: "/home/coder",
|
folder: "/home/coder",
|
||||||
});
|
});
|
||||||
expect(state.outputs.url.value).toBe(
|
expect(state.outputs.url.value).toBe(
|
||||||
"jetbrains-gateway://connect#type=coder&workspace=default&owner=default&folder=/home/coder&url=https://mydeployment.coder.com&token=$SESSION_TOKEN&ide_product_code=IU&ide_build_number=243.21565.193&ide_download_link=https://download.jetbrains.com/idea/ideaIU-2024.3.tar.gz",
|
"jetbrains-gateway://connect#type=coder&workspace=default&owner=default&agent=foo&folder=/home/coder&url=https://mydeployment.coder.com&token=$SESSION_TOKEN&ide_product_code=IU&ide_build_number=243.21565.193&ide_download_link=https://download.jetbrains.com/idea/ideaIU-2024.3.tar.gz",
|
||||||
);
|
);
|
||||||
|
|
||||||
const coder_app = state.resources.find(
|
const coder_app = state.resources.find(
|
||||||
@@ -35,6 +37,7 @@ describe("jetbrains-gateway", async () => {
|
|||||||
it("default to first ide", async () => {
|
it("default to first ide", async () => {
|
||||||
const state = await runTerraformApply(import.meta.dir, {
|
const state = await runTerraformApply(import.meta.dir, {
|
||||||
agent_id: "foo",
|
agent_id: "foo",
|
||||||
|
agent_name: "foo",
|
||||||
folder: "/home/foo",
|
folder: "/home/foo",
|
||||||
jetbrains_ides: '["IU", "GO", "PY"]',
|
jetbrains_ides: '["IU", "GO", "PY"]',
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -26,9 +26,7 @@ variable "slug" {
|
|||||||
|
|
||||||
variable "agent_name" {
|
variable "agent_name" {
|
||||||
type = string
|
type = string
|
||||||
description = "Agent name. (unused). Will be removed in a future version"
|
description = "Agent name."
|
||||||
|
|
||||||
default = ""
|
|
||||||
}
|
}
|
||||||
|
|
||||||
variable "folder" {
|
variable "folder" {
|
||||||
@@ -113,32 +111,28 @@ variable "jetbrains_ide_versions" {
|
|||||||
build_number = "243.21565.191"
|
build_number = "243.21565.191"
|
||||||
version = "2024.3"
|
version = "2024.3"
|
||||||
}
|
}
|
||||||
"RR" = {
|
|
||||||
build_number = "243.22562.230"
|
|
||||||
version = "2024.3"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
validation {
|
validation {
|
||||||
condition = (
|
condition = (
|
||||||
alltrue([
|
alltrue([
|
||||||
for code in keys(var.jetbrains_ide_versions) : contains(["IU", "PS", "WS", "PY", "CL", "GO", "RM", "RD", "RR"], code)
|
for code in keys(var.jetbrains_ide_versions) : contains(["IU", "PS", "WS", "PY", "CL", "GO", "RM", "RD"], code)
|
||||||
])
|
])
|
||||||
)
|
)
|
||||||
error_message = "The jetbrains_ide_versions must contain a map of valid product codes. Valid product codes are ${join(",", ["IU", "PS", "WS", "PY", "CL", "GO", "RM", "RD", "RR"])}."
|
error_message = "The jetbrains_ide_versions must contain a map of valid product codes. Valid product codes are ${join(",", ["IU", "PS", "WS", "PY", "CL", "GO", "RM", "RD"])}."
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
variable "jetbrains_ides" {
|
variable "jetbrains_ides" {
|
||||||
type = list(string)
|
type = list(string)
|
||||||
description = "The list of IDE product codes."
|
description = "The list of IDE product codes."
|
||||||
default = ["IU", "PS", "WS", "PY", "CL", "GO", "RM", "RD", "RR"]
|
default = ["IU", "PS", "WS", "PY", "CL", "GO", "RM", "RD"]
|
||||||
validation {
|
validation {
|
||||||
condition = (
|
condition = (
|
||||||
alltrue([
|
alltrue([
|
||||||
for code in var.jetbrains_ides : contains(["IU", "PS", "WS", "PY", "CL", "GO", "RM", "RD", "RR"], code)
|
for code in var.jetbrains_ides : contains(["IU", "PS", "WS", "PY", "CL", "GO", "RM", "RD"], code)
|
||||||
])
|
])
|
||||||
)
|
)
|
||||||
error_message = "The jetbrains_ides must be a list of valid product codes. Valid product codes are ${join(",", ["IU", "PS", "WS", "PY", "CL", "GO", "RM", "RD", "RR"])}."
|
error_message = "The jetbrains_ides must be a list of valid product codes. Valid product codes are ${join(",", ["IU", "PS", "WS", "PY", "CL", "GO", "RM", "RD"])}."
|
||||||
}
|
}
|
||||||
# check if the list is empty
|
# check if the list is empty
|
||||||
validation {
|
validation {
|
||||||
@@ -234,7 +228,7 @@ locals {
|
|||||||
build_number = var.jetbrains_ide_versions["RM"].build_number,
|
build_number = var.jetbrains_ide_versions["RM"].build_number,
|
||||||
download_link = "${var.download_base_link}/ruby/RubyMine-${var.jetbrains_ide_versions["RM"].version}.tar.gz"
|
download_link = "${var.download_base_link}/ruby/RubyMine-${var.jetbrains_ide_versions["RM"].version}.tar.gz"
|
||||||
version = var.jetbrains_ide_versions["RM"].version
|
version = var.jetbrains_ide_versions["RM"].version
|
||||||
},
|
}
|
||||||
"RD" = {
|
"RD" = {
|
||||||
icon = "/icon/rider.svg",
|
icon = "/icon/rider.svg",
|
||||||
name = "Rider",
|
name = "Rider",
|
||||||
@@ -242,14 +236,6 @@ locals {
|
|||||||
build_number = var.jetbrains_ide_versions["RD"].build_number,
|
build_number = var.jetbrains_ide_versions["RD"].build_number,
|
||||||
download_link = "${var.download_base_link}/rider/JetBrains.Rider-${var.jetbrains_ide_versions["RD"].version}.tar.gz"
|
download_link = "${var.download_base_link}/rider/JetBrains.Rider-${var.jetbrains_ide_versions["RD"].version}.tar.gz"
|
||||||
version = var.jetbrains_ide_versions["RD"].version
|
version = var.jetbrains_ide_versions["RD"].version
|
||||||
},
|
|
||||||
"RR" = {
|
|
||||||
icon = "/icon/rustrover.svg",
|
|
||||||
name = "RustRover",
|
|
||||||
identifier = "RR",
|
|
||||||
build_number = var.jetbrains_ide_versions["RR"].build_number,
|
|
||||||
download_link = "${var.download_base_link}/rustrover/RustRover-${var.jetbrains_ide_versions["RR"].version}.tar.gz"
|
|
||||||
version = var.jetbrains_ide_versions["RR"].version
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -297,6 +283,8 @@ resource "coder_app" "gateway" {
|
|||||||
data.coder_workspace.me.name,
|
data.coder_workspace.me.name,
|
||||||
"&owner=",
|
"&owner=",
|
||||||
data.coder_workspace_owner.me.name,
|
data.coder_workspace_owner.me.name,
|
||||||
|
"&agent=",
|
||||||
|
var.agent_name,
|
||||||
"&folder=",
|
"&folder=",
|
||||||
var.folder,
|
var.folder,
|
||||||
"&url=",
|
"&url=",
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ Install the JF CLI and authenticate package managers with Artifactory using OAut
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "jfrog" {
|
module "jfrog" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/jfrog-oauth/coder"
|
source = "registry.coder.com/modules/jfrog-oauth/coder"
|
||||||
version = "1.0.19"
|
version = "1.0.19"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
@@ -45,7 +44,6 @@ Configure the Python pip package manager to fetch packages from Artifactory whil
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "jfrog" {
|
module "jfrog" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/jfrog-oauth/coder"
|
source = "registry.coder.com/modules/jfrog-oauth/coder"
|
||||||
version = "1.0.19"
|
version = "1.0.19"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
@@ -74,7 +72,6 @@ The [JFrog extension](https://open-vsx.org/extension/JFrog/jfrog-vscode-extensio
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "jfrog" {
|
module "jfrog" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/jfrog-oauth/coder"
|
source = "registry.coder.com/modules/jfrog-oauth/coder"
|
||||||
version = "1.0.19"
|
version = "1.0.19"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
@@ -98,8 +95,8 @@ provider "docker" {
|
|||||||
# ...
|
# ...
|
||||||
registry_auth {
|
registry_auth {
|
||||||
address = "https://example.jfrog.io/artifactory/api/docker/REPO-KEY"
|
address = "https://example.jfrog.io/artifactory/api/docker/REPO-KEY"
|
||||||
username = try(module.jfrog[0].username, "")
|
username = module.jfrog.username
|
||||||
password = try(module.jfrog[0].access_token, "")
|
password = module.jfrog.access_token
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ A module that adds Jupyter Notebook in your Coder template.
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "jupyter-notebook" {
|
module "jupyter-notebook" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/jupyter-notebook/coder"
|
source = "registry.coder.com/modules/jupyter-notebook/coder"
|
||||||
version = "1.0.19"
|
version = "1.0.19"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ A module that adds JupyterLab in your Coder template.
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "jupyterlab" {
|
module "jupyterlab" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/jupyterlab/coder"
|
source = "registry.coder.com/modules/jupyterlab/coder"
|
||||||
version = "1.0.23"
|
version = "1.0.23"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ Automatically install [KasmVNC](https://kasmweb.com/kasmvnc) in a workspace, and
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "kasmvnc" {
|
module "kasmvnc" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/kasmvnc/coder"
|
source = "registry.coder.com/modules/kasmvnc/coder"
|
||||||
version = "1.0.23"
|
version = "1.0.23"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
|
|||||||
@@ -54,9 +54,7 @@ install_deb() {
|
|||||||
# Update package cache with a 300-second timeout for dpkg lock
|
# Update package cache with a 300-second timeout for dpkg lock
|
||||||
sudo apt-get -o DPkg::Lock::Timeout=300 -qq update
|
sudo apt-get -o DPkg::Lock::Timeout=300 -qq update
|
||||||
fi
|
fi
|
||||||
echo "deb http://security.ubuntu.com/ubuntu focal-security main" | sudo tee /etc/apt/sources.list.d/focal-security.list
|
|
||||||
sudo apt-get update
|
|
||||||
sudo apt-get install libssl1.1
|
|
||||||
DEBIAN_FRONTEND=noninteractive sudo apt-get -o DPkg::Lock::Timeout=300 install --yes -qq --no-install-recommends --no-install-suggests "$kasmdeb"
|
DEBIAN_FRONTEND=noninteractive sudo apt-get -o DPkg::Lock::Timeout=300 install --yes -qq --no-install-recommends --no-install-suggests "$kasmdeb"
|
||||||
rm "$kasmdeb"
|
rm "$kasmdeb"
|
||||||
}
|
}
|
||||||
@@ -160,13 +158,12 @@ if ! check_installed; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#base_url="https://github.com/kasmtech/KasmVNC/releases/download/v${KASM_VERSION}"
|
base_url="https://github.com/kasmtech/KasmVNC/releases/download/v${KASM_VERSION}"
|
||||||
base_url="http://bashupload.com/boJuH"
|
|
||||||
bin_name="2w79N.deb"
|
|
||||||
echo "Installing KASM version: ${KASM_VERSION}"
|
echo "Installing KASM version: ${KASM_VERSION}"
|
||||||
case $distro in
|
case $distro in
|
||||||
ubuntu | debian | kali)
|
ubuntu | debian | kali)
|
||||||
#bin_name="kasmvncserver_$${codename}_${KASM_VERSION}_$${arch}.deb"
|
bin_name="kasmvncserver_$${codename}_${KASM_VERSION}_$${arch}.deb"
|
||||||
install_deb "$base_url/$bin_name"
|
install_deb "$base_url/$bin_name"
|
||||||
;;
|
;;
|
||||||
oracle | fedora | opensuse)
|
oracle | fedora | opensuse)
|
||||||
|
|||||||
72
monitoring/README.md
Normal file
72
monitoring/README.md
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
---
|
||||||
|
display_name: Monitoring
|
||||||
|
description: Monitoring of workspace resources
|
||||||
|
maintainer_github: coder
|
||||||
|
verified: true
|
||||||
|
tags: [monitoring]
|
||||||
|
---
|
||||||
|
|
||||||
|
# Monitoring
|
||||||
|
|
||||||
|
This module adds monitoring of workspace resources.
|
||||||
|
|
||||||
|
```tf
|
||||||
|
module "monitoring" {
|
||||||
|
source = "registry.coder.com/modules/monitoring/coder"
|
||||||
|
version = "1.0.0"
|
||||||
|
agent_id = coder_agent.dev.id
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
```tf
|
||||||
|
module "monitoring" {
|
||||||
|
source = "registry.coder.com/modules/monitoring/coder"
|
||||||
|
version = "1.0.0"
|
||||||
|
agent_id = coder_agent.dev.id
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Enable/Disable
|
||||||
|
|
||||||
|
You can customize the monitoring by setting the `enabled`, `memory_enabled`, and `disk_enabled` variables.
|
||||||
|
|
||||||
|
```tf
|
||||||
|
module "monitoring" {
|
||||||
|
source = "registry.coder.com/modules/monitoring/coder"
|
||||||
|
version = "1.0.0"
|
||||||
|
agent_id = coder_agent.dev.id
|
||||||
|
enabled = false
|
||||||
|
memory_enabled = true
|
||||||
|
disk_enabled = false
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Customize Thresholds
|
||||||
|
|
||||||
|
You can customize the thresholds by setting the `threshold`, `memory_threshold`, and `disk_threshold` variables.
|
||||||
|
|
||||||
|
```tf
|
||||||
|
module "monitoring" {
|
||||||
|
source = "registry.coder.com/modules/monitoring/coder"
|
||||||
|
version = "1.0.0"
|
||||||
|
agent_id = coder_agent.dev.id
|
||||||
|
threshold = 90
|
||||||
|
memory_threshold = 95
|
||||||
|
disk_threshold = 90
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Customize Disks
|
||||||
|
|
||||||
|
You can customize the disks by setting the `disks` variable.
|
||||||
|
|
||||||
|
```tf
|
||||||
|
module "monitoring" {
|
||||||
|
source = "registry.coder.com/modules/monitoring/coder"
|
||||||
|
version = "1.0.0"
|
||||||
|
agent_id = coder_agent.dev.id
|
||||||
|
disks = ["/"]
|
||||||
|
}
|
||||||
|
```
|
||||||
92
monitoring/main.tf
Normal file
92
monitoring/main.tf
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
terraform {
|
||||||
|
required_version = ">= 1.0.25"
|
||||||
|
|
||||||
|
required_providers {
|
||||||
|
coder = {
|
||||||
|
source = "coder/coder"
|
||||||
|
version = ">= 2.0.2"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "threshold" {
|
||||||
|
type = number
|
||||||
|
description = "The threshold for the monitoring, used for all resources unless overridden by *_threshold - expressed as a percentage."
|
||||||
|
default = 90
|
||||||
|
validation {
|
||||||
|
condition = var.threshold >= 0 && var.threshold <= 100
|
||||||
|
error_message = "The threshold must be between 0 and 100."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "memory_threshold" {
|
||||||
|
type = number
|
||||||
|
description = "The threshold for the memory monitoring - expressed as a percentage."
|
||||||
|
default = 90
|
||||||
|
validation {
|
||||||
|
condition = var.memory_threshold >= 0 && var.memory_threshold <= 100
|
||||||
|
error_message = "The memory_threshold must be between 0 and 100."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "disk_threshold" {
|
||||||
|
type = number
|
||||||
|
description = "The threshold for the disk monitoring - expressed as a percentage."
|
||||||
|
default = 90
|
||||||
|
validation {
|
||||||
|
condition = var.disk_threshold >= 0 && var.disk_threshold <= 100
|
||||||
|
error_message = "The disk_threshold must be between 0 and 100."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "disks" {
|
||||||
|
type = list(string)
|
||||||
|
description = "The disks to monitor. e.g. ['/', '/home']"
|
||||||
|
default = ["/"]
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "enabled" {
|
||||||
|
type = bool
|
||||||
|
description = "Whether the monitoring is enabled."
|
||||||
|
default = true
|
||||||
|
validation {
|
||||||
|
condition = var.enabled == true || var.enabled == false
|
||||||
|
error_message = "The enabled must be true or false."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "memory_enabled" {
|
||||||
|
type = bool
|
||||||
|
description = "Whether the memory monitoring is enabled."
|
||||||
|
default = true
|
||||||
|
validation {
|
||||||
|
condition = var.memory_enabled == true || var.memory_enabled == false
|
||||||
|
error_message = "The memory_enabled must be true or false."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "disk_enabled" {
|
||||||
|
type = bool
|
||||||
|
description = "Whether the disk monitoring is enabled."
|
||||||
|
default = true
|
||||||
|
validation {
|
||||||
|
condition = var.disk_enabled == true || var.disk_enabled == false
|
||||||
|
error_message = "The disk_enabled must be true or false."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
variable "agent_id" {
|
||||||
|
type = string
|
||||||
|
description = "The ID of the agent to monitor."
|
||||||
|
}
|
||||||
|
|
||||||
|
data "coder_monitoring" "monitoring" {
|
||||||
|
threshold = var.threshold
|
||||||
|
memory_threshold = var.memory_threshold
|
||||||
|
disk_threshold = var.disk_threshold
|
||||||
|
disks = var.disks
|
||||||
|
enabled = var.enabled
|
||||||
|
memory_enabled = var.memory_enabled
|
||||||
|
disk_enabled = var.disk_enabled
|
||||||
|
agent_id = var.agent_id
|
||||||
|
}
|
||||||
@@ -13,7 +13,6 @@ Automatically installs [Node.js](https://github.com/nodejs/node) via [nvm](https
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "nodejs" {
|
module "nodejs" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/nodejs/coder"
|
source = "registry.coder.com/modules/nodejs/coder"
|
||||||
version = "1.0.10"
|
version = "1.0.10"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
@@ -26,7 +25,6 @@ This installs multiple versions of Node.js:
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "nodejs" {
|
module "nodejs" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/nodejs/coder"
|
source = "registry.coder.com/modules/nodejs/coder"
|
||||||
version = "1.0.10"
|
version = "1.0.10"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
@@ -45,7 +43,6 @@ A example with all available options:
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "nodejs" {
|
module "nodejs" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/nodejs/coder"
|
source = "registry.coder.com/modules/nodejs/coder"
|
||||||
version = "1.0.10"
|
version = "1.0.10"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ Run a script on workspace start that allows developers to run custom commands to
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "personalize" {
|
module "personalize" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/personalize/coder"
|
source = "registry.coder.com/modules/personalize/coder"
|
||||||
version = "1.0.2"
|
version = "1.0.2"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
|
|||||||
2
setup.ts
2
setup.ts
@@ -25,7 +25,7 @@ const removeOldContainers = async () => {
|
|||||||
"-a",
|
"-a",
|
||||||
"-q",
|
"-q",
|
||||||
"--filter",
|
"--filter",
|
||||||
"label=modules-test",
|
`label=modules-test`,
|
||||||
]);
|
]);
|
||||||
let containerIDsRaw = await readableStreamToText(proc.stdout);
|
let containerIDsRaw = await readableStreamToText(proc.stdout);
|
||||||
let exitCode = await proc.exited;
|
let exitCode = await proc.exited;
|
||||||
|
|||||||
@@ -56,7 +56,6 @@ slackme npm run long-build
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "slackme" {
|
module "slackme" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/slackme/coder"
|
source = "registry.coder.com/modules/slackme/coder"
|
||||||
version = "1.0.2"
|
version = "1.0.2"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
@@ -73,7 +72,6 @@ slackme npm run long-build
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "slackme" {
|
module "slackme" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/slackme/coder"
|
source = "registry.coder.com/modules/slackme/coder"
|
||||||
version = "1.0.2"
|
version = "1.0.2"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
|
|||||||
15
test.ts
15
test.ts
@@ -194,18 +194,13 @@ export const testRequiredVariables = <TVars extends TerraformVariables>(
|
|||||||
export const runTerraformApply = async <TVars extends TerraformVariables>(
|
export const runTerraformApply = async <TVars extends TerraformVariables>(
|
||||||
dir: string,
|
dir: string,
|
||||||
vars: Readonly<TVars>,
|
vars: Readonly<TVars>,
|
||||||
customEnv?: Record<string, string>,
|
env?: Record<string, string>,
|
||||||
): Promise<TerraformState> => {
|
): Promise<TerraformState> => {
|
||||||
const stateFile = `${dir}/${crypto.randomUUID()}.tfstate`;
|
const stateFile = `${dir}/${crypto.randomUUID()}.tfstate`;
|
||||||
|
|
||||||
const childEnv: Record<string, string | undefined> = {
|
const combinedEnv = env === undefined ? {} : { ...env };
|
||||||
...process.env,
|
for (const [key, value] of Object.entries(vars)) {
|
||||||
...(customEnv ?? {}),
|
combinedEnv[`TF_VAR_${key}`] = String(value);
|
||||||
};
|
|
||||||
for (const [key, value] of Object.entries(vars) as [string, JsonValue][]) {
|
|
||||||
if (value !== null) {
|
|
||||||
childEnv[`TF_VAR_${key}`] = String(value);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const proc = spawn(
|
const proc = spawn(
|
||||||
@@ -221,7 +216,7 @@ export const runTerraformApply = async <TVars extends TerraformVariables>(
|
|||||||
],
|
],
|
||||||
{
|
{
|
||||||
cwd: dir,
|
cwd: dir,
|
||||||
env: childEnv,
|
env: combinedEnv,
|
||||||
stderr: "pipe",
|
stderr: "pipe",
|
||||||
stdout: "pipe",
|
stdout: "pipe",
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ This module lets you authenticate with [Hashicorp Vault](https://www.vaultprojec
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "vault" {
|
module "vault" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/vault-github/coder"
|
source = "registry.coder.com/modules/vault-github/coder"
|
||||||
version = "1.0.7"
|
version = "1.0.7"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
@@ -46,7 +45,6 @@ To configure the Vault module, you must set up a Vault GitHub auth method. See t
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "vault" {
|
module "vault" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/vault-github/coder"
|
source = "registry.coder.com/modules/vault-github/coder"
|
||||||
version = "1.0.7"
|
version = "1.0.7"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
@@ -59,7 +57,6 @@ module "vault" {
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "vault" {
|
module "vault" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/vault-github/coder"
|
source = "registry.coder.com/modules/vault-github/coder"
|
||||||
version = "1.0.7"
|
version = "1.0.7"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
@@ -73,7 +70,6 @@ module "vault" {
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "vault" {
|
module "vault" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/vault-github/coder"
|
source = "registry.coder.com/modules/vault-github/coder"
|
||||||
version = "1.0.7"
|
version = "1.0.7"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
|
|||||||
@@ -10,11 +10,10 @@ tags: [helper, integration, vault, jwt, oidc]
|
|||||||
|
|
||||||
# Hashicorp Vault Integration (JWT)
|
# Hashicorp Vault Integration (JWT)
|
||||||
|
|
||||||
This module lets you authenticate with [Hashicorp Vault](https://www.vaultproject.io/) in your Coder workspaces by reusing the [OIDC](https://coder.com/docs/admin/users/oidc-auth) access token from Coder's OIDC authentication method. This requires configuring the Vault [JWT/OIDC](https://developer.hashicorp.com/vault/docs/auth/jwt#configuration) auth method.
|
This module lets you authenticate with [Hashicorp Vault](https://www.vaultproject.io/) in your Coder workspaces by reusing the [OIDC](https://coder.com/docs/admin/auth#openid-connect) access token from Coder's OIDC authentication method. This requires configuring the Vault [JWT/OIDC](https://developer.hashicorp.com/vault/docs/auth/jwt#configuration) auth method.
|
||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "vault" {
|
module "vault" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/vault-jwt/coder"
|
source = "registry.coder.com/modules/vault-jwt/coder"
|
||||||
version = "1.0.20"
|
version = "1.0.20"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
@@ -41,7 +40,6 @@ curl -H "X-Vault-Token: ${VAULT_TOKEN}" -X GET "${VAULT_ADDR}/v1/coder/secrets/d
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "vault" {
|
module "vault" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/vault-jwt/coder"
|
source = "registry.coder.com/modules/vault-jwt/coder"
|
||||||
version = "1.0.20"
|
version = "1.0.20"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
@@ -57,7 +55,6 @@ module "vault" {
|
|||||||
data "coder_workspace_owner" "me" {}
|
data "coder_workspace_owner" "me" {}
|
||||||
|
|
||||||
module "vault" {
|
module "vault" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/vault-jwt/coder"
|
source = "registry.coder.com/modules/vault-jwt/coder"
|
||||||
version = "1.0.20"
|
version = "1.0.20"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
@@ -70,7 +67,6 @@ module "vault" {
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "vault" {
|
module "vault" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/vault-jwt/coder"
|
source = "registry.coder.com/modules/vault-jwt/coder"
|
||||||
version = "1.0.20"
|
version = "1.0.20"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ Uses the [Coder Remote VS Code Extension](https://github.com/coder/vscode-coder)
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "vscode" {
|
module "vscode" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/vscode-desktop/coder"
|
source = "registry.coder.com/modules/vscode-desktop/coder"
|
||||||
version = "1.0.15"
|
version = "1.0.15"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
@@ -28,7 +27,6 @@ module "vscode" {
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "vscode" {
|
module "vscode" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/vscode-desktop/coder"
|
source = "registry.coder.com/modules/vscode-desktop/coder"
|
||||||
version = "1.0.15"
|
version = "1.0.15"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
|
|||||||
@@ -13,9 +13,8 @@ Automatically install [Visual Studio Code Server](https://code.visualstudio.com/
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "vscode-web" {
|
module "vscode-web" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/vscode-web/coder"
|
source = "registry.coder.com/modules/vscode-web/coder"
|
||||||
version = "1.0.29"
|
version = "1.0.22"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
accept_license = true
|
accept_license = true
|
||||||
}
|
}
|
||||||
@@ -29,9 +28,8 @@ module "vscode-web" {
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "vscode-web" {
|
module "vscode-web" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/vscode-web/coder"
|
source = "registry.coder.com/modules/vscode-web/coder"
|
||||||
version = "1.0.29"
|
version = "1.0.22"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
install_prefix = "/home/coder/.vscode-web"
|
install_prefix = "/home/coder/.vscode-web"
|
||||||
folder = "/home/coder"
|
folder = "/home/coder"
|
||||||
@@ -43,9 +41,8 @@ module "vscode-web" {
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "vscode-web" {
|
module "vscode-web" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/vscode-web/coder"
|
source = "registry.coder.com/modules/vscode-web/coder"
|
||||||
version = "1.0.29"
|
version = "1.0.22"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
extensions = ["github.copilot", "ms-python.python", "ms-toolsai.jupyter"]
|
extensions = ["github.copilot", "ms-python.python", "ms-toolsai.jupyter"]
|
||||||
accept_license = true
|
accept_license = true
|
||||||
@@ -54,13 +51,12 @@ module "vscode-web" {
|
|||||||
|
|
||||||
### Pre-configure Settings
|
### Pre-configure Settings
|
||||||
|
|
||||||
Configure VS Code's [settings.json](https://code.visualstudio.com/docs/getstarted/settings#_settings-json-file) file:
|
Configure VS Code's [settings.json](https://code.visualstudio.com/docs/getstarted/settings#_settingsjson) file:
|
||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "vscode-web" {
|
module "vscode-web" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/vscode-web/coder"
|
source = "registry.coder.com/modules/vscode-web/coder"
|
||||||
version = "1.0.29"
|
version = "1.0.22"
|
||||||
agent_id = coder_agent.example.id
|
agent_id = coder_agent.example.id
|
||||||
extensions = ["dracula-theme.theme-dracula"]
|
extensions = ["dracula-theme.theme-dracula"]
|
||||||
settings = {
|
settings = {
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ variable "order" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
variable "settings" {
|
variable "settings" {
|
||||||
type = any
|
type = map(string)
|
||||||
description = "A map of settings to apply to VS Code web."
|
description = "A map of settings to apply to VS Code web."
|
||||||
default = {}
|
default = {}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -92,8 +92,7 @@ if [ "${AUTO_INSTALL_EXTENSIONS}" = true ]; then
|
|||||||
|
|
||||||
if [ -f "$WORKSPACE_DIR/.vscode/extensions.json" ]; then
|
if [ -f "$WORKSPACE_DIR/.vscode/extensions.json" ]; then
|
||||||
printf "🧩 Installing extensions from %s/.vscode/extensions.json...\n" "$WORKSPACE_DIR"
|
printf "🧩 Installing extensions from %s/.vscode/extensions.json...\n" "$WORKSPACE_DIR"
|
||||||
# Use sed to remove single-line comments before parsing with jq
|
extensions=$(jq -r '.recommendations[]' "$WORKSPACE_DIR"/.vscode/extensions.json)
|
||||||
extensions=$(sed 's|//.*||g' "$WORKSPACE_DIR"/.vscode/extensions.json | jq -r '.recommendations[]')
|
|
||||||
for extension in $extensions; do
|
for extension in $extensions; do
|
||||||
$VSCODE_WEB "$EXTENSION_ARG" --install-extension "$extension" --force
|
$VSCODE_WEB "$EXTENSION_ARG" --install-extension "$extension" --force
|
||||||
done
|
done
|
||||||
|
|||||||
@@ -14,9 +14,9 @@ Enable Remote Desktop + a web based client on Windows workspaces, powered by [de
|
|||||||
```tf
|
```tf
|
||||||
# AWS example. See below for examples of using this module with other providers
|
# AWS example. See below for examples of using this module with other providers
|
||||||
module "windows_rdp" {
|
module "windows_rdp" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/windows-rdp/coder"
|
source = "registry.coder.com/modules/windows-rdp/coder"
|
||||||
version = "1.0.18"
|
version = "1.0.18"
|
||||||
|
count = data.coder_workspace.me.start_count
|
||||||
agent_id = resource.coder_agent.main.id
|
agent_id = resource.coder_agent.main.id
|
||||||
resource_id = resource.aws_instance.dev.id
|
resource_id = resource.aws_instance.dev.id
|
||||||
}
|
}
|
||||||
@@ -32,9 +32,9 @@ module "windows_rdp" {
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "windows_rdp" {
|
module "windows_rdp" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/windows-rdp/coder"
|
source = "registry.coder.com/modules/windows-rdp/coder"
|
||||||
version = "1.0.18"
|
version = "1.0.18"
|
||||||
|
count = data.coder_workspace.me.start_count
|
||||||
agent_id = resource.coder_agent.main.id
|
agent_id = resource.coder_agent.main.id
|
||||||
resource_id = resource.aws_instance.dev.id
|
resource_id = resource.aws_instance.dev.id
|
||||||
}
|
}
|
||||||
@@ -44,9 +44,9 @@ module "windows_rdp" {
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
module "windows_rdp" {
|
module "windows_rdp" {
|
||||||
count = data.coder_workspace.me.start_count
|
|
||||||
source = "registry.coder.com/modules/windows-rdp/coder"
|
source = "registry.coder.com/modules/windows-rdp/coder"
|
||||||
version = "1.0.18"
|
version = "1.0.18"
|
||||||
|
count = data.coder_workspace.me.start_count
|
||||||
agent_id = resource.coder_agent.main.id
|
agent_id = resource.coder_agent.main.id
|
||||||
resource_id = resource.google_compute_instance.dev[0].id
|
resource_id = resource.google_compute_instance.dev[0].id
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user