Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7d31865c94 | ||
|
|
d3fc2d2212 | ||
|
|
38a2d86376 | ||
|
|
b968a2aa22 | ||
|
|
5b3edd9bbd |
@@ -13,7 +13,8 @@ tags: [helper]
|
||||
|
||||
```hcl
|
||||
module "MODULE_NAME" {
|
||||
source = "https://registry.coder.com/modules/MODULE_NAME"
|
||||
source = "registry.coder.com/modules/MODULE_NAME/coder"
|
||||
version = "1.0.0"
|
||||
}
|
||||
```
|
||||
|
||||
@@ -27,11 +28,12 @@ Install the Dracula theme from [OpenVSX](https://open-vsx.org/):
|
||||
|
||||
```hcl
|
||||
module "MODULE_NAME" {
|
||||
source = "https://registry.coder.com/modules/MODULE_NAME"
|
||||
agent_id = coder_agent.example.id
|
||||
extensions = [
|
||||
"dracula-theme.theme-dracula"
|
||||
]
|
||||
source = "registry.coder.com/modules/MODULE_NAME/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
extensions = [
|
||||
"dracula-theme.theme-dracula"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
@@ -43,12 +45,13 @@ Configure VS Code's [settings.json](https://code.visualstudio.com/docs/getstarte
|
||||
|
||||
```hcl
|
||||
module "MODULE_NAME" {
|
||||
source = "https://registry.coder.com/modules/MODULE_NAME"
|
||||
agent_id = coder_agent.example.id
|
||||
extensions = [ "dracula-theme.theme-dracula" ]
|
||||
settings = {
|
||||
"workbench.colorTheme" = "Dracula"
|
||||
}
|
||||
source = "registry.coder.com/modules/MODULE_NAME/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
extensions = [ "dracula-theme.theme-dracula" ]
|
||||
settings = {
|
||||
"workbench.colorTheme" = "Dracula"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
@@ -58,8 +61,9 @@ Run code-server in the background, don't fetch it from GitHub:
|
||||
|
||||
```hcl
|
||||
module "MODULE_NAME" {
|
||||
source = "https://registry.coder.com/modules/MODULE_NAME"
|
||||
agent_id = coder_agent.example.id
|
||||
offline = true
|
||||
source = "registry.coder.com/modules/MODULE_NAME/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
offline = true
|
||||
}
|
||||
```
|
||||
|
||||
@@ -20,7 +20,9 @@ $ bun test -t '<module>'
|
||||
You can test a module locally by updating the source as follows
|
||||
|
||||
```hcl
|
||||
source = "git::https://github.com/<USERNAME>/<REPO>.git//<MODULE-NAME>?ref=<BRANCH-NAME>"
|
||||
module "example" {
|
||||
source = "git::https://github.com/<USERNAME>/<REPO>.git//<MODULE-NAME>?ref=<BRANCH-NAME>"
|
||||
}
|
||||
```
|
||||
|
||||
> **Note:** This is the responsibility of the module author to implement tests for their module. and test the module locally before submitting a PR.
|
||||
|
||||
@@ -16,8 +16,9 @@ e.g.
|
||||
|
||||
```hcl
|
||||
module "code-server" {
|
||||
source = "https://registry.coder.com/modules/code-server"
|
||||
agent_id = coder_agent.main.id
|
||||
source = "registry.coder.com/modules/code-server/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.main.id
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
@@ -16,12 +16,13 @@ Customize the preselected parameter value:
|
||||
|
||||
```hcl
|
||||
module "aws-region" {
|
||||
source = "https://registry.coder.com/modules/aws-region"
|
||||
default = "us-east-1"
|
||||
source = "registry.coder.com/modules/aws-region/coder"
|
||||
version = "1.0.0"
|
||||
default = "us-east-1"
|
||||
}
|
||||
|
||||
provider "aws" {
|
||||
region = module.aws_region.value
|
||||
region = module.aws_region.value
|
||||
}
|
||||
```
|
||||
|
||||
@@ -35,18 +36,19 @@ Change the display name and icon for a region using the corresponding maps:
|
||||
|
||||
```hcl
|
||||
module "aws-region" {
|
||||
source = "https://registry.coder.com/modules/aws-region"
|
||||
default = "ap-south-1"
|
||||
custom_names = {
|
||||
"ap-south-1": "Awesome Mumbai!"
|
||||
}
|
||||
custom_icons = {
|
||||
"ap-south-1": "/emojis/1f33a.png"
|
||||
}
|
||||
source = "registry.coder.com/modules/aws-region/coder"
|
||||
version = "1.0.0"
|
||||
default = "ap-south-1"
|
||||
custom_names = {
|
||||
"ap-south-1": "Awesome Mumbai!"
|
||||
}
|
||||
custom_icons = {
|
||||
"ap-south-1": "/emojis/1f33a.png"
|
||||
}
|
||||
}
|
||||
|
||||
provider "aws" {
|
||||
region = module.aws_region.value
|
||||
region = module.aws_region.value
|
||||
}
|
||||
```
|
||||
|
||||
@@ -58,12 +60,13 @@ Hide the Asia Pacific regions Seoul and Osaka:
|
||||
|
||||
```hcl
|
||||
module "aws-region" {
|
||||
source = "https://registry.coder.com/modules/aws-region"
|
||||
exclude = [ "ap-northeast-2", "ap-northeast-3" ]
|
||||
source = "registry.coder.com/modules/aws-region/coder"
|
||||
version = "1.0.0"
|
||||
exclude = [ "ap-northeast-2", "ap-northeast-3" ]
|
||||
}
|
||||
|
||||
provider "aws" {
|
||||
region = module.aws_region.value
|
||||
region = module.aws_region.value
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
@@ -13,12 +13,13 @@ This module adds a parameter with all Azure regions, allowing developers to sele
|
||||
|
||||
```hcl
|
||||
module "azure_region" {
|
||||
source = "https://registry.coder.com/modules/azure-region"
|
||||
default = "eastus"
|
||||
source = "registry.coder.com/modules/azure-region/coder"
|
||||
version = "1.0.0"
|
||||
default = "eastus"
|
||||
}
|
||||
|
||||
resource "azurem_resource_group" "example" {
|
||||
location = module.azure_region.value
|
||||
location = module.azure_region.value
|
||||
}
|
||||
```
|
||||
|
||||
@@ -32,17 +33,18 @@ Change the display name and icon for a region using the corresponding maps:
|
||||
|
||||
```hcl
|
||||
module "azure-region" {
|
||||
source = "https://registry.coder.com/modules/azure-region"
|
||||
custom_names = {
|
||||
"australia": "Go Australia!"
|
||||
}
|
||||
custom_icons = {
|
||||
"australia": "/icons/smiley.svg"
|
||||
}
|
||||
source = "registry.coder.com/modules/azure-region/coder"
|
||||
version = "1.0.0"
|
||||
custom_names = {
|
||||
"australia": "Go Australia!"
|
||||
}
|
||||
custom_icons = {
|
||||
"australia": "/icons/smiley.svg"
|
||||
}
|
||||
}
|
||||
|
||||
resource "azurerm_resource_group" "example" {
|
||||
location = module.azure_region.value
|
||||
location = module.azure_region.value
|
||||
}
|
||||
```
|
||||
|
||||
@@ -54,17 +56,18 @@ Hide all regions in Australia except australiacentral:
|
||||
|
||||
```hcl
|
||||
module "azure-region" {
|
||||
source = "https://registry.coder.com/modules/azure-region"
|
||||
exclude = [
|
||||
"australia",
|
||||
"australiacentral2",
|
||||
"australiaeast",
|
||||
"australiasoutheast"
|
||||
]
|
||||
source = "registry.coder.com/modules/azure-region/coder"
|
||||
version = "1.0.0"
|
||||
exclude = [
|
||||
"australia",
|
||||
"australiacentral2",
|
||||
"australiaeast",
|
||||
"australiasoutheast"
|
||||
]
|
||||
}
|
||||
|
||||
resource "azurerm_resource_group" "example" {
|
||||
location = module.azure_region.value
|
||||
location = module.azure_region.value
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
@@ -13,8 +13,9 @@ Automatically install [code-server](https://github.com/coder/code-server) in a w
|
||||
|
||||
```hcl
|
||||
module "code-server" {
|
||||
source = "https://registry.coder.com/modules/code-server"
|
||||
agent_id = coder_agent.example.id
|
||||
source = "registry.coder.com/modules/code-server/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
}
|
||||
```
|
||||
|
||||
@@ -26,7 +27,8 @@ module "code-server" {
|
||||
|
||||
```hcl
|
||||
module "code-server" {
|
||||
source = "https://registry.coder.com/modules/code-server"
|
||||
source = "registry.coder.com/modules/code-server/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
install_version = "4.8.3"
|
||||
}
|
||||
@@ -38,11 +40,12 @@ Install the Dracula theme from [OpenVSX](https://open-vsx.org/):
|
||||
|
||||
```hcl
|
||||
module "code-server" {
|
||||
source = "https://registry.coder.com/modules/code-server"
|
||||
agent_id = coder_agent.example.id
|
||||
extensions = [
|
||||
"dracula-theme.theme-dracula"
|
||||
]
|
||||
source = "registry.coder.com/modules/code-server/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
extensions = [
|
||||
"dracula-theme.theme-dracula"
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
@@ -54,12 +57,13 @@ Configure VS Code's [settings.json](https://code.visualstudio.com/docs/getstarte
|
||||
|
||||
```hcl
|
||||
module "settings" {
|
||||
source = "https://registry.coder.com/modules/code-server"
|
||||
agent_id = coder_agent.example.id
|
||||
extensions = [ "dracula-theme.theme-dracula" ]
|
||||
settings = {
|
||||
"workbench.colorTheme" = "Dracula"
|
||||
}
|
||||
source = "registry.coder.com/modules/code-server/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
extensions = [ "dracula-theme.theme-dracula" ]
|
||||
settings = {
|
||||
"workbench.colorTheme" = "Dracula"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
@@ -69,9 +73,10 @@ Just run code-server in the background, don't fetch it from GitHub:
|
||||
|
||||
```hcl
|
||||
module "settings" {
|
||||
source = "https://registry.coder.com/modules/code-server"
|
||||
agent_id = coder_agent.example.id
|
||||
extensions = [ "dracula-theme.theme-dracula", "ms-azuretools.vscode-docker" ]
|
||||
source = "registry.coder.com/modules/code-server/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
extensions = [ "dracula-theme.theme-dracula", "ms-azuretools.vscode-docker" ]
|
||||
}
|
||||
```
|
||||
|
||||
@@ -81,8 +86,9 @@ Just run code-server in the background, don't fetch it from GitHub:
|
||||
|
||||
```hcl
|
||||
module "settings" {
|
||||
source = "https://registry.coder.com/modules/code-server"
|
||||
agent_id = coder_agent.example.id
|
||||
offline = true
|
||||
source = "registry.coder.com/modules/code-server/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
offline = true
|
||||
}
|
||||
```
|
||||
|
||||
@@ -39,10 +39,10 @@ for extension in "$${EXTENSIONLIST[@]}"; do
|
||||
done
|
||||
|
||||
# Check if the settings file exists...
|
||||
if [ ! -f ~/.local/share/code-server/Machine/settings.json ]; then
|
||||
if [ ! -f ~/.local/share/code-server/User/settings.json ]; then
|
||||
echo "⚙️ Creating settings file..."
|
||||
mkdir -p ~/.local/share/code-server/Machine
|
||||
echo "${SETTINGS}" > ~/.local/share/code-server/Machine/settings.json
|
||||
mkdir -p ~/.local/share/code-server/User
|
||||
echo "${SETTINGS}" > ~/.local/share/code-server/User/settings.json
|
||||
fi
|
||||
|
||||
echo "👷 Running code-server in the background..."
|
||||
|
||||
@@ -13,8 +13,9 @@ Automatically logs the user into Coder when creating their workspace.
|
||||
|
||||
```hcl
|
||||
module "coder-login" {
|
||||
source = "https://registry.coder.com/modules/coder-login"
|
||||
agent_id = coder_agent.example.id
|
||||
source = "registry.coder.com/modules/coder-login/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
@@ -13,7 +13,8 @@ Allow developers to optionally bring their own [dotfiles repository](https://dot
|
||||
|
||||
```hcl
|
||||
module "dotfiles" {
|
||||
source = "https://registry.coder.com/modules/dotfiles"
|
||||
source = "registry.coder.com/modules/dotfiles/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
}
|
||||
```
|
||||
|
||||
@@ -16,8 +16,9 @@ Customize the preselected parameter value:
|
||||
|
||||
```hcl
|
||||
module "exoscale-instance-type" {
|
||||
source = "https://registry.coder.com/modules/exoscale-instance-type"
|
||||
default = "standard.medium"
|
||||
source = "registry.coder.com/modules/exoscale-instance-type/coder"
|
||||
version = "1.0.0"
|
||||
default = "standard.medium"
|
||||
}
|
||||
|
||||
resource "exoscale_compute_instance" "instance" {
|
||||
@@ -43,14 +44,15 @@ Change the display name a type using the corresponding maps:
|
||||
|
||||
```hcl
|
||||
module "exoscale-instance-type" {
|
||||
source = "https://registry.coder.com/modules/exoscale-instance-type"
|
||||
default = "standard.medium"
|
||||
custom_names = {
|
||||
"standard.medium": "Mittlere Instanz" # German translation
|
||||
}
|
||||
custom_descriptions = {
|
||||
"standard.medium": "4 GB Arbeitsspeicher, 2 Kerne, 10 - 400 GB Festplatte" # German translation
|
||||
}
|
||||
source = "registry.coder.com/modules/exoscale-instance-type/coder"
|
||||
version = "1.0.0"
|
||||
default = "standard.medium"
|
||||
custom_names = {
|
||||
"standard.medium": "Mittlere Instanz" # German translation
|
||||
}
|
||||
custom_descriptions = {
|
||||
"standard.medium": "4 GB Arbeitsspeicher, 2 Kerne, 10 - 400 GB Festplatte" # German translation
|
||||
}
|
||||
}
|
||||
|
||||
resource "exoscale_compute_instance" "instance" {
|
||||
@@ -74,19 +76,20 @@ Show only gpu1 types
|
||||
|
||||
```hcl
|
||||
module "exoscale-instance-type" {
|
||||
source = "https://registry.coder.com/modules/exoscale-instance-type"
|
||||
default = "gpu.large"
|
||||
type_category = ["gpu"]
|
||||
exclude = [
|
||||
"gpu2.small",
|
||||
"gpu2.medium",
|
||||
"gpu2.large",
|
||||
"gpu2.huge",
|
||||
"gpu3.small",
|
||||
"gpu3.medium",
|
||||
"gpu3.large",
|
||||
"gpu3.huge"
|
||||
]
|
||||
source = "registry.coder.com/modules/exoscale-instance-type/coder"
|
||||
version = "1.0.0"
|
||||
default = "gpu.large"
|
||||
type_category = ["gpu"]
|
||||
exclude = [
|
||||
"gpu2.small",
|
||||
"gpu2.medium",
|
||||
"gpu2.large",
|
||||
"gpu2.huge",
|
||||
"gpu3.small",
|
||||
"gpu3.medium",
|
||||
"gpu3.large",
|
||||
"gpu3.huge"
|
||||
]
|
||||
}
|
||||
|
||||
resource "exoscale_compute_instance" "instance" {
|
||||
|
||||
@@ -16,8 +16,9 @@ Customize the preselected parameter value:
|
||||
|
||||
```hcl
|
||||
module "exoscale-zone" {
|
||||
source = "https://registry.coder.com/modules/exoscale-zone"
|
||||
default = "ch-dk-2"
|
||||
source = "registry.coder.com/modules/exoscale-zone/coder"
|
||||
version = "1.0.0"
|
||||
default = "ch-dk-2"
|
||||
}
|
||||
|
||||
|
||||
@@ -42,14 +43,15 @@ Change the display name and icon for a zone using the corresponding maps:
|
||||
|
||||
```hcl
|
||||
module "exoscale-zone" {
|
||||
source = "https://registry.coder.com/modules/exoscale-zone"
|
||||
default = "at-vie-1"
|
||||
custom_names = {
|
||||
"at-vie-1": "Home Vienna"
|
||||
}
|
||||
custom_icons = {
|
||||
"at-vie-1": "/emojis/1f3e0.png"
|
||||
}
|
||||
source = "registry.coder.com/modules/exoscale-zone/coder"
|
||||
version = "1.0.0"
|
||||
default = "at-vie-1"
|
||||
custom_names = {
|
||||
"at-vie-1": "Home Vienna"
|
||||
}
|
||||
custom_icons = {
|
||||
"at-vie-1": "/emojis/1f3e0.png"
|
||||
}
|
||||
}
|
||||
|
||||
data "exoscale_compute_template" "my_template" {
|
||||
@@ -71,8 +73,9 @@ Hide the Switzerland zones Geneva and Zurich
|
||||
|
||||
```hcl
|
||||
module "exoscale-zone" {
|
||||
source = "https://registry.coder.com/modules/exoscale-zone"
|
||||
exclude = [ "ch-gva-2", "ch-dk-2" ]
|
||||
source = "registry.coder.com/modules/exoscale-zone/coder"
|
||||
version = "1.0.0"
|
||||
exclude = [ "ch-gva-2", "ch-dk-2" ]
|
||||
}
|
||||
|
||||
data "exoscale_compute_template" "my_template" {
|
||||
|
||||
@@ -13,8 +13,9 @@ A file browser for your workspace.
|
||||
|
||||
```hcl
|
||||
module "filebrowser" {
|
||||
source = "https://registry.coder.com/modules/filebrowser"
|
||||
agent_id = coder_agent.example.id
|
||||
source = "registry.coder.com/modules/filebrowser/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
}
|
||||
```
|
||||
|
||||
@@ -26,9 +27,10 @@ module "filebrowser" {
|
||||
|
||||
```hcl
|
||||
module "filebrowser" {
|
||||
source = "https://registry.coder.com/modules/filebrowser"
|
||||
agent_id = coder_agent.example.id
|
||||
folder = "/home/coder/project"
|
||||
source = "registry.coder.com/modules/filebrowser/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
folder = "/home/coder/project"
|
||||
}
|
||||
```
|
||||
|
||||
@@ -36,8 +38,9 @@ module "filebrowser" {
|
||||
|
||||
```hcl
|
||||
module "filebrowser" {
|
||||
source = "https://registry.coder.com/modules/filebrowser"
|
||||
agent_id = coder_agent.example.id
|
||||
database_path = ".config/filebrowser.db"
|
||||
source = "registry.coder.com/modules/filebrowser/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
database_path = ".config/filebrowser.db"
|
||||
}
|
||||
```
|
||||
|
||||
@@ -15,8 +15,9 @@ We can use the simplest format here, only adding a default selection as the `atl
|
||||
|
||||
```hcl
|
||||
module "fly-region" {
|
||||
source = "https://registry.coder.com/modules/fly-region"
|
||||
default = "atl"
|
||||
source = "registry.coder.com/modules/fly-region/coder"
|
||||
version = "1.0.0"
|
||||
default = "atl"
|
||||
}
|
||||
```
|
||||
|
||||
@@ -30,9 +31,10 @@ The regions argument can be used to display only the desired regions in the Code
|
||||
|
||||
```hcl
|
||||
module "fly-region" {
|
||||
source = "https://registry.coder.com/modules/fly-region"
|
||||
default = "ams"
|
||||
regions = ["ams", "arn", "atl"]
|
||||
source = "registry.coder.com/modules/fly-region/coder"
|
||||
version = "1.0.0"
|
||||
default = "ams"
|
||||
regions = ["ams", "arn", "atl"]
|
||||
}
|
||||
```
|
||||
|
||||
@@ -44,14 +46,15 @@ Set custom icons and names with their respective maps.
|
||||
|
||||
```hcl
|
||||
module "fly-region" {
|
||||
source = "https://registry.coder.com/modules/fly-region"
|
||||
default = "ams"
|
||||
custom_icons = {
|
||||
"ams" = "/emojis/1f90e.png"
|
||||
}
|
||||
custom_names = {
|
||||
"ams" = "We love the Netherlands!"
|
||||
}
|
||||
source = "registry.coder.com/modules/fly-region/coder"
|
||||
version = "1.0.0"
|
||||
default = "ams"
|
||||
custom_icons = {
|
||||
"ams" = "/emojis/1f90e.png"
|
||||
}
|
||||
custom_names = {
|
||||
"ams" = "We love the Netherlands!"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
@@ -13,12 +13,13 @@ This module adds Google Cloud Platform regions to your Coder template.
|
||||
|
||||
```hcl
|
||||
module "gcp_region" {
|
||||
source = "https://registry.coder.com/modules/gcp-region"
|
||||
regions = ["us", "europe"]
|
||||
source = "registry.coder.com/modules/gcp-region/coder"
|
||||
version = "1.0.0"
|
||||
regions = ["us", "europe"]
|
||||
}
|
||||
|
||||
resource "google_compute_instance" "example" {
|
||||
zone = module.gcp_region.value
|
||||
zone = module.gcp_region.value
|
||||
}
|
||||
```
|
||||
|
||||
@@ -32,14 +33,15 @@ Note: setting `gpu_only = true` and using a default region without GPU support,
|
||||
|
||||
```hcl
|
||||
module "gcp_region" {
|
||||
source = "https://registry.coder.com/modules/gcp-region"
|
||||
default = ["us-west1-a"]
|
||||
regions = ["us-west1"]
|
||||
gpu_only = false
|
||||
source = "registry.coder.com/modules/gcp-region/coder"
|
||||
version = "1.0.0"
|
||||
default = ["us-west1-a"]
|
||||
regions = ["us-west1"]
|
||||
gpu_only = false
|
||||
}
|
||||
|
||||
resource "google_compute_instance" "example" {
|
||||
zone = module.gcp_region.value
|
||||
zone = module.gcp_region.value
|
||||
}
|
||||
```
|
||||
|
||||
@@ -47,13 +49,14 @@ resource "google_compute_instance" "example" {
|
||||
|
||||
```hcl
|
||||
module "gcp_region" {
|
||||
source = "https://registry.coder.com/modules/gcp-region"
|
||||
regions = ["europe-west"]
|
||||
single_zone_per_region = false
|
||||
source = "registry.coder.com/modules/gcp-region/coder"
|
||||
version = "1.0.0"
|
||||
regions = ["europe-west"]
|
||||
single_zone_per_region = false
|
||||
}
|
||||
|
||||
resource "google_compute_instance" "example" {
|
||||
zone = module.gcp_region.value
|
||||
zone = module.gcp_region.value
|
||||
}
|
||||
```
|
||||
|
||||
@@ -61,13 +64,14 @@ resource "google_compute_instance" "example" {
|
||||
|
||||
```hcl
|
||||
module "gcp_region" {
|
||||
source = "https://registry.coder.com/modules/gcp-region"
|
||||
regions = ["us", "europe"]
|
||||
gpu_only = true
|
||||
single_zone_per_region = true
|
||||
source = "registry.coder.com/modules/gcp-region/coder"
|
||||
version = "1.0.0"
|
||||
regions = ["us", "europe"]
|
||||
gpu_only = true
|
||||
single_zone_per_region = true
|
||||
}
|
||||
|
||||
resource "google_compute_instance" "example" {
|
||||
zone = module.gcp_region.value
|
||||
zone = module.gcp_region.value
|
||||
}
|
||||
```
|
||||
|
||||
@@ -9,13 +9,14 @@ tags: [git, helper]
|
||||
|
||||
# Git Clone
|
||||
|
||||
This module allows you to automatically clone a repository by URL and skip if it exists in the path provided.
|
||||
This module allows you to automatically clone a repository by URL and skip if it exists in the base directory provided.
|
||||
|
||||
```hcl
|
||||
module "git-clone" {
|
||||
source = "https://registry.coder.com/modules/git-clone"
|
||||
agent_id = coder_agent.example.id
|
||||
url = "https://github.com/coder/coder"
|
||||
source = "registry.coder.com/modules/git-clone/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
url = "https://github.com/coder/coder"
|
||||
}
|
||||
```
|
||||
|
||||
@@ -23,7 +24,7 @@ To use with [Git Authentication](https://coder.com/docs/v2/latest/admin/git-prov
|
||||
|
||||
```hcl
|
||||
data "coder_git_auth" "github" {
|
||||
id = "github"
|
||||
id = "github"
|
||||
}
|
||||
```
|
||||
|
||||
@@ -33,9 +34,10 @@ data "coder_git_auth" "github" {
|
||||
|
||||
```hcl
|
||||
module "git-clone" {
|
||||
source = "https://registry.coder.com/modules/git-clone"
|
||||
agent_id = coder_agent.example.id
|
||||
url = "https://github.com/coder/coder"
|
||||
path = "~/projects/coder/coder"
|
||||
source = "registry.coder.com/modules/git-clone/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
url = "https://github.com/coder/coder"
|
||||
base_dir = "~/projects/coder"
|
||||
}
|
||||
```
|
||||
|
||||
@@ -14,9 +14,9 @@ variable "url" {
|
||||
type = string
|
||||
}
|
||||
|
||||
variable "path" {
|
||||
variable "base_dir" {
|
||||
default = ""
|
||||
description = "The path to clone the repository. Defaults to \"$HOME/<basename of url>\"."
|
||||
description = "The base directory to clone the repository. Defaults to \"$HOME\"."
|
||||
type = string
|
||||
}
|
||||
|
||||
@@ -25,10 +25,19 @@ variable "agent_id" {
|
||||
type = string
|
||||
}
|
||||
|
||||
locals {
|
||||
clone_path = var.base_dir != "" ? join("/", [var.base_dir, replace(basename(var.url), ".git", "")]) : join("/", ["~", replace(basename(var.url), ".git", "")])
|
||||
}
|
||||
|
||||
output "repo_dir" {
|
||||
value = local.clone_path
|
||||
description = "Full path of cloned repo directory"
|
||||
}
|
||||
|
||||
resource "coder_script" "git_clone" {
|
||||
agent_id = var.agent_id
|
||||
script = templatefile("${path.module}/run.sh", {
|
||||
CLONE_PATH : var.path != "" ? var.path : join("/", ["~", basename(var.url)]),
|
||||
CLONE_PATH = local.clone_path
|
||||
REPO_URL : var.url,
|
||||
})
|
||||
display_name = "Git Clone"
|
||||
|
||||
@@ -18,7 +18,8 @@ This module has a chance of conflicting with the user's dotfiles / the personali
|
||||
|
||||
```hcl
|
||||
module "git-commit-signing" {
|
||||
source = "https://registry.coder.com/modules/git-commit-signing"
|
||||
agent_id = coder_agent.example.id
|
||||
source = "registry.coder.com/modules/git-commit-signing/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
}
|
||||
```
|
||||
|
||||
@@ -13,7 +13,8 @@ Runs a script that updates git credentials in the workspace to match the user's
|
||||
|
||||
```hcl
|
||||
module "git-config" {
|
||||
source = "https://registry.coder.com/modules/git-config"
|
||||
source = "registry.coder.com/modules/git-config/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
}
|
||||
```
|
||||
@@ -26,7 +27,8 @@ TODO: Add screenshot
|
||||
|
||||
```hcl
|
||||
module "git-config" {
|
||||
source = "https://registry.coder.com/modules/git-config"
|
||||
source = "registry.coder.com/modules/git-config/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
allow_email_change = true
|
||||
}
|
||||
@@ -38,7 +40,8 @@ TODO: Add screenshot
|
||||
|
||||
```hcl
|
||||
module "git-config" {
|
||||
source = "https://registry.coder.com/modules/git-config"
|
||||
source = "registry.coder.com/modules/git-config/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
allow_username_change = false
|
||||
allow_email_change = false
|
||||
|
||||
@@ -13,7 +13,8 @@ This module adds a JetBrains Gateway Button to open any workspace with a single
|
||||
|
||||
```hcl
|
||||
module "jetbrains_gateway" {
|
||||
source = "https://registry.coder.com/modules/jetbrains-gateway"
|
||||
source = "registry.coder.com/modules/jetbrains-gateway/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
folder = "/home/coder/example"
|
||||
jetbrains_ides = ["GO", "WS", "IU", "PY", "PS", "CL", "RM"]
|
||||
@@ -29,7 +30,8 @@ module "jetbrains_gateway" {
|
||||
|
||||
```hcl
|
||||
module "jetbrains_gateway" {
|
||||
source = "https://registry.coder.com/modules/jetbrains-gateway"
|
||||
source = "registry.coder.com/modules/jetbrains-gateway/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
folder = "/home/coder/example"
|
||||
jetbrains_ides = ["GO", "WS"]
|
||||
|
||||
@@ -10,17 +10,16 @@ tags: [integration, jfrog]
|
||||
|
||||
# JFrog
|
||||
|
||||
Install the JF CLI and authenticate package managers with Artifactory using OAuth configured via the Coder `external-auth` feature.
|
||||
Install the JF CLI and authenticate package managers with Artifactory using OAuth configured via the Coder [`external-auth`](https://coder.com/docs/v2/latest/admin/external-auth) feature.
|
||||
|
||||
<p align="center">
|
||||
<img src='../.images/jfrog-oauth.png' alt="JFrog OAuth" width='600'>
|
||||
</p>
|
||||

|
||||
|
||||
```hcl
|
||||
module "jfrog" {
|
||||
source = "https://registry.coder.com/modules/jfrog-oauth"
|
||||
source = "registry.coder.com/modules/jfrog-oauth/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
jfrog_url = "https://jfrog.example.com"
|
||||
jfrog_url = "https://example.jfrog.io"
|
||||
username_field = "username" # If you are using GitHub to login to both Coder and Artifactory, use username_field = "username"
|
||||
package_managers = {
|
||||
"npm": "npm",
|
||||
@@ -35,49 +34,7 @@ module "jfrog" {
|
||||
|
||||
## Prerequisites
|
||||
|
||||
Coder [`external-auth`](https://coder.com/docs/v2/latest/admin/external-auth) configured with Artifactory. This requires a [custom integration](https://jfrog.com/help/r/jfrog-installation-setup-documentation/enable-new-integrations) in Artifactory with **Callback URL** set to `https://<your-coder-url>/external-auth/jfrog/callback`.
|
||||
|
||||
To set this up,
|
||||
|
||||
1. Modify your `values.yaml` for JFrog Artifactory to add,
|
||||
|
||||
```yaml
|
||||
artifactory:
|
||||
enabled: true
|
||||
frontend:
|
||||
extraEnvironmentVariables:
|
||||
- name: JF_FRONTEND_FEATURETOGGLER_ACCESSINTEGRATION
|
||||
value: "true"
|
||||
access:
|
||||
accessConfig:
|
||||
integrations-enabled: true
|
||||
integration-templates:
|
||||
- id: "1"
|
||||
name: "CODER"
|
||||
redirect-uri: "https://CODER_URL/external-auth/jfrog/callback"
|
||||
scope: "applied-permissions/user"
|
||||
```
|
||||
|
||||
> Note
|
||||
> Replace `CODER_URL` with your Coder deployment URL, e.g., <coder.example.com>
|
||||
|
||||
2. Add a new [external authetication](https://coder.com/docs/v2/latest/admin/external-auth) to Coder by setting these env variables,
|
||||
|
||||
```env
|
||||
# JFrog Artifactory External Auth
|
||||
CODER_EXTERNAL_AUTH_1_ID="jfrog"
|
||||
CODER_EXTERNAL_AUTH_1_TYPE="jfrog"
|
||||
CODER_EXTERNAL_AUTH_1_CLIENT_ID="YYYYYYYYYYYYYYY"
|
||||
CODER_EXTERNAL_AUTH_1_CLIENT_SECRET="XXXXXXXXXXXXXXXXXXX"
|
||||
CODER_EXTERNAL_AUTH_1_DISPLAY_NAME="JFrog Artifactory"
|
||||
CODER_EXTERNAL_AUTH_1_DISPLAY_ICON="/icon/jfrog.svg"
|
||||
CODER_EXTERNAL_AUTH_1_AUTH_URL="https://JFROG_URL/ui/authorization"
|
||||
CODER_EXTERNAL_AUTH_1_TOKEN_URL="https://JFROG_URL/access/api/v1/integrations/YYYYYYYYYYYYYYY/token"
|
||||
CODER_EXTERNAL_AUTH_1_SCOPES="applied-permissions/user"
|
||||
```
|
||||
|
||||
> Note
|
||||
> Replace `JFROG_URL` with your JFrog Artifactory base URL, e.g., <artifactory.example.com>
|
||||
This module is usable by JFrog self-hosted (on-premises) Artifactory as it requires configuring a custom integration. This integration benefits from Coder's [external-auth](https://coder.com/docs/v2/latest/admin/external-auth) feature and allows each user to authenticate with Artifactory using an OAuth flow and issues user-scoped tokens to each user. For configuration instructions, see this [guide](coder.com/docs/v2/latest/guides/artifactory-integration#jfrog-oauth) on the Coder documentation.
|
||||
|
||||
## Examples
|
||||
|
||||
@@ -85,10 +42,10 @@ Configure the Python pip package manager to fetch packages from Artifactory whil
|
||||
|
||||
```hcl
|
||||
module "jfrog" {
|
||||
source = "https://registry.coder.com/modules/jfrog-oauth"
|
||||
source = "registry.coder.com/modules/jfrog-oauth/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
jfrog_url = "https://jfrog.example.com"
|
||||
auth_method = "oauth"
|
||||
jfrog_url = "https://example.jfrog.io"
|
||||
username_field = "email"
|
||||
package_managers = {
|
||||
"pypi": "pypi"
|
||||
@@ -112,9 +69,10 @@ The [JFrog extension](https://open-vsx.org/extension/JFrog/jfrog-vscode-extensio
|
||||
|
||||
```hcl
|
||||
module "jfrog" {
|
||||
source = "https://registry.coder.com/modules/jfrog-oauth"
|
||||
source = "registry.coder.com/modules/jfrog-oauth/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
jfrog_url = "https://jfrog.example.com"
|
||||
jfrog_url = "https://example.jfrog.io"
|
||||
username_field = "username" # If you are using GitHub to login to both Coder and Artifactory, use username_field = "username"
|
||||
configure_code_server = true # Add JFrog extension configuration for code-server
|
||||
package_managers = {
|
||||
@@ -130,13 +88,14 @@ module "jfrog" {
|
||||
JFrog Access token is also available as a terraform output. You can use it in other terraform resources. For example, you can use it to configure an [Artifactory docker registry](https://jfrog.com/help/r/jfrog-artifactory-documentation/docker-registry) with the [docker terraform provider](https://registry.terraform.io/providers/kreuzwerker/docker/latest/docs).
|
||||
|
||||
```hcl
|
||||
|
||||
provider "docker" {
|
||||
...
|
||||
registry_auth {
|
||||
address = "https://YYYY.jfrog.io/artifactory/api/docker/REPO-KEY"
|
||||
address = "https://example.jfrog.io/artifactory/api/docker/REPO-KEY"
|
||||
username = module.jfrog.username
|
||||
password = module.jfrog.access_token
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
> Here `REPO_KEY` is the name of docker repository in Artifactory.
|
||||
|
||||
@@ -14,7 +14,8 @@ Install the JF CLI and authenticate package managers with Artifactory using Arti
|
||||
|
||||
```hcl
|
||||
module "jfrog" {
|
||||
source = "https://registry.coder.com/modules/jfrog-token"
|
||||
source = "registry.coder.com/modules/jfrog-token/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
jfrog_url = "https://XXXX.jfrog.io"
|
||||
artifactory_access_token = var.artifactory_access_token
|
||||
@@ -26,14 +27,7 @@ module "jfrog" {
|
||||
}
|
||||
```
|
||||
|
||||
Get a JFrog access token from your Artifactory instance. The token must be an [admin token](https://registry.terraform.io/providers/jfrog/artifactory/latest/docs#access-token). It is recommended to store the token in a secret terraform variable.
|
||||
|
||||
```hcl
|
||||
variable "artifactory_access_token" {
|
||||
type = string
|
||||
sensitive = true
|
||||
}
|
||||
```
|
||||
For detailed instructions, please see this [guide](https://coder.com/docs/v2/latest/guides/artifactory-integration#jfrog-token) on the Coder documentation.
|
||||
|
||||
> Note
|
||||
> This module does not install `npm`, `go`, `pip`, etc but only configure them. You need to handle the installation of these tools yourself.
|
||||
@@ -46,7 +40,8 @@ variable "artifactory_access_token" {
|
||||
|
||||
```hcl
|
||||
module "jfrog" {
|
||||
source = "https://registry.coder.com/modules/jfrog-token"
|
||||
source = "registry.coder.com/modules/jfrog-token/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
jfrog_url = "https://YYYY.jfrog.io"
|
||||
artifactory_access_token = var.artifactory_access_token # An admin access token
|
||||
@@ -78,7 +73,8 @@ The [JFrog extension](https://open-vsx.org/extension/JFrog/jfrog-vscode-extensio
|
||||
|
||||
```hcl
|
||||
module "jfrog" {
|
||||
source = "https://registry.coder.com/modules/jfrog-token"
|
||||
source = "registry.coder.com/modules/jfrog-token/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
jfrog_url = "https://XXXX.jfrog.io"
|
||||
artifactory_access_token = var.artifactory_access_token
|
||||
|
||||
@@ -15,7 +15,8 @@ A module that adds Jupyter Notebook in your Coder template.
|
||||
|
||||
```hcl
|
||||
module "jupyter-notebook" {
|
||||
source = "https://registry.coder.com/modules/jupyter-notebook"
|
||||
agent_id = coder_agent.example.id
|
||||
source = "registry.coder.com/modules/jupyter-notebook/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
}
|
||||
```
|
||||
|
||||
@@ -15,7 +15,8 @@ A module that adds JupyterLab in your Coder template.
|
||||
|
||||
```hcl
|
||||
module "jupyterlab" {
|
||||
source = "https://registry.coder.com/modules/jupyterlab"
|
||||
agent_id = coder_agent.example.id
|
||||
source = "registry.coder.com/modules/jupyterlab/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
}
|
||||
```
|
||||
|
||||
@@ -13,7 +13,8 @@ Run a script on workspace start that allows developers to run custom commands to
|
||||
|
||||
```hcl
|
||||
module "personalize" {
|
||||
source = "https://registry.coder.com/modules/personalize"
|
||||
source = "registry.coder.com/modules/personalize/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
}
|
||||
```
|
||||
|
||||
@@ -12,7 +12,7 @@ tags: [helper]
|
||||
Add the `slackme` command to your workspace that DMs you on Slack when your command finishes running.
|
||||
|
||||
```bash
|
||||
$ slackme npm run long-build
|
||||
slackme npm run long-build
|
||||
```
|
||||
|
||||
## Setup
|
||||
@@ -56,7 +56,8 @@ $ slackme npm run long-build
|
||||
|
||||
```hcl
|
||||
module "slackme" {
|
||||
source = "https://registry.coder.com/modules/slackme"
|
||||
source = "registry.coder.com/modules/slackme/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
auth_provider_id = "slack"
|
||||
}
|
||||
@@ -71,7 +72,8 @@ $ slackme npm run long-build
|
||||
|
||||
```hcl
|
||||
module "slackme" {
|
||||
source = "https://registry.coder.com/modules/slackme"
|
||||
source = "registry.coder.com/modules/slackme/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
auth_provider_id = "slack"
|
||||
slack_message = <<EOF
|
||||
|
||||
@@ -13,9 +13,10 @@ This module lets you authenticate with [Hashicorp Vault](https://www.vaultprojec
|
||||
|
||||
```hcl
|
||||
module "vault" {
|
||||
source = "https://registry.coder.com/modules/vault-github"
|
||||
agent_id = coder_agent.example.id
|
||||
vault_addr = "https://vault.example.com"
|
||||
source = "registry.coder.com/modules/vault-github/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
vault_addr = "https://vault.example.com"
|
||||
}
|
||||
```
|
||||
|
||||
@@ -43,10 +44,11 @@ To configure the Vault module, you must set up a Vault GitHub auth method. See t
|
||||
|
||||
```hcl
|
||||
module "vault" {
|
||||
source = "https://registry.coder.com/modules/vault"
|
||||
agent_id = coder_agent.example.id
|
||||
vault_addr = "https://vault.example.com"
|
||||
coder_github_auth_id = "my-github-auth-id"
|
||||
source = "registry.coder.com/modules/vault-github/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
vault_addr = "https://vault.example.com"
|
||||
coder_github_auth_id = "my-github-auth-id"
|
||||
}
|
||||
```
|
||||
|
||||
@@ -54,11 +56,12 @@ module "vault" {
|
||||
|
||||
```hcl
|
||||
module "vault" {
|
||||
source = "https://registry.coder.com/modules/vault"
|
||||
agent_id = coder_agent.example.id
|
||||
vault_addr = "https://vault.example.com"
|
||||
coder_github_auth_id = "my-github-auth-id"
|
||||
vault_github_auth_path = "my-github-auth-path"
|
||||
source = "registry.coder.com/modules/vault-github/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
vault_addr = "https://vault.example.com"
|
||||
coder_github_auth_id = "my-github-auth-id"
|
||||
vault_github_auth_path = "my-github-auth-path"
|
||||
}
|
||||
```
|
||||
|
||||
@@ -66,9 +69,10 @@ module "vault" {
|
||||
|
||||
```hcl
|
||||
module "vault" {
|
||||
source = "https://registry.coder.com/modules/vault"
|
||||
agent_id = coder_agent.example.id
|
||||
vault_addr = "https://vault.example.com"
|
||||
vault_cli_version = "1.15.0"
|
||||
source = "registry.coder.com/modules/vault-github/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
vault_addr = "https://vault.example.com"
|
||||
vault_cli_version = "1.15.0"
|
||||
}
|
||||
```
|
||||
|
||||
@@ -15,7 +15,8 @@ Uses the [Coder Remote VS Code Extension](https://github.com/coder/vscode-coder)
|
||||
|
||||
```hcl
|
||||
module "vscode" {
|
||||
source = "https://registry.coder.com/modules/vscode-desktop"
|
||||
source = "registry.coder.com/modules/vscode-desktop/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
}
|
||||
```
|
||||
@@ -26,7 +27,8 @@ module "vscode" {
|
||||
|
||||
```hcl
|
||||
module "vscode" {
|
||||
source = "https://registry.coder.com/modules/vscode-desktop"
|
||||
source = "registry.coder.com/modules/vscode-desktop/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
folder = "/home/coder/project"
|
||||
}
|
||||
|
||||
@@ -13,7 +13,8 @@ Automatically install [Visual Studio Code Server](https://code.visualstudio.com/
|
||||
|
||||
```hcl
|
||||
module "vscode-web" {
|
||||
source = "https://registry.coder.com/modules/vscode-web"
|
||||
source = "registry.coder.com/modules/vscode-web/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
accept_license = true
|
||||
}
|
||||
@@ -27,7 +28,8 @@ module "vscode-web" {
|
||||
|
||||
```hcl
|
||||
module "vscode-web" {
|
||||
source = "https://registry.coder.com/modules/vscode-web"
|
||||
source = "registry.coder.com/modules/vscode-web/coder"
|
||||
version = "1.0.0"
|
||||
agent_id = coder_agent.example.id
|
||||
install_dir = "/home/coder/.vscode-web"
|
||||
folder = "/home/coder"
|
||||
|
||||
Reference in New Issue
Block a user