From a69f41951dbe8faf9e1005a66a04bb7617e88d2d Mon Sep 17 00:00:00 2001 From: Kyle Carberry Date: Wed, 20 Sep 2023 11:43:54 -0500 Subject: [PATCH] Add modules --- aws-regions/README.md | 65 ++++++++++++++++++ aws-regions/main.tf | 145 ++++++++++++++++++++++++++++++++++++++++ azure-regions/README.md | 1 + fly-regions/README.md | 1 + gcp-regions/README.md | 1 + jupyterhub/README.md | 0 kasmvnc/README.md | 0 matlab/README.md | 0 novnc/README.md | 0 rstudio/README.md | 0 10 files changed, 213 insertions(+) create mode 100644 aws-regions/README.md create mode 100644 aws-regions/main.tf create mode 100644 azure-regions/README.md create mode 100644 fly-regions/README.md create mode 100644 gcp-regions/README.md create mode 100644 jupyterhub/README.md create mode 100644 kasmvnc/README.md create mode 100644 matlab/README.md create mode 100644 novnc/README.md create mode 100644 rstudio/README.md diff --git a/aws-regions/README.md b/aws-regions/README.md new file mode 100644 index 0000000..a58e92a --- /dev/null +++ b/aws-regions/README.md @@ -0,0 +1,65 @@ +--- +display_name: AWS Region +description: A parameter with human region names and icons +icon: ../.icons/aws.svg +maintainer_github: coder +verified: true +tags: [helper, parameter] +--- + +# AWS Regions + +A parameter with all AWS regions. This allows developers to select +the region closest to them. + +## Examples + +### Default Region + +Customize the preselected parameter value: + +```hcl +module "aws-region" { + source = "https://registry.coder.com/modules/aws-region" + default = "us-east-1" +} + +provider "aws" { + region = module.aws_region.value +} +``` + +### Customize Regions + +Change the display name and icon for a region: + +```hcl +module "aws-region" { + source = "https://registry.coder.com/modules/aws-region" + custom_names = { + "fra": "Awesome Germany!" + } + custom_icons = { + "fra": "/icons/smiley.svg" + } +} + +provider "aws" { + region = module.aws_region.value +} +``` + +### Exclude Regions + +Hide the `fra` region: + +```hcl +module "aws-region" { + source = "https://registry.coder.com/modules/aws-region" + exclude = [ "fra" ] +} + +provider "aws" { + region = module.aws_region.value +} +``` diff --git a/aws-regions/main.tf b/aws-regions/main.tf new file mode 100644 index 0000000..87b593a --- /dev/null +++ b/aws-regions/main.tf @@ -0,0 +1,145 @@ +terraform { + required_version = ">= 1.0" + + required_providers { + coder = { + source = "coder/coder" + version = ">= 0.12" + } + } +} + +variable "display_name" { + default = "AWS Region" + description = "The display name of the parameter." + type = string +} + +variable "description" { + default = "The region to deploy workspace infrastructure." + description = "The description of the parameter." + type = string +} + +variable "default" { + default = "us-east-1" + description = "The default region to use if no region is specified." + type = string +} + +variable "mutable" { + default = false + description = "Whether the parameter can be changed after creation." + type = bool +} + +variable "custom_names" { + default = {} + description = "A map of custom display names for region IDs." + type = map(string) +} + +variable "custom_icons" { + default = {} + description = "A map of custom icons for region IDs." + type = map(string) +} + +variable "exclude" { + default = [] + description = "A list of region IDs to exclude." + type = list(string) +} + +locals { + regions = { + "ap-northeast-1" = { + name = "Asia Pacific (Tokyo)" + icon = "/emojis/1f1ef-1f1f5.png" + } + "ap-northeast-2" = { + name = "Asia Pacific (Seoul)" + icon = "/emojis/1f1f0-1f1f7.png" + } + "ap-northeast-3" = { + name = "Asia Pacific (Osaka)" + icon = "/emojis/1f1ef-1f1f5.png" + } + "ap-south-1" = { + name = "Asia Pacific (Mumbai)" + icon = "/emojis/1f1ee-1f1f3.png" + } + "ap-southeast-1" = { + name = "Asia Pacific (Singapore)" + icon = "/emojis/1f1f8-1f1ec.png" + } + "ap-southeast-2" = { + name = "Asia Pacific (Sydney)" + icon = "/emojis/1f1e6-1f1fa.png" + } + "ca-central-1" = { + name = "Canada (Central)" + icon = "/emojis/1f1e8-1f1e6.png" + } + "eu-central-1" = { + name = "EU (Frankfurt)" + icon = "/emojis/1f1ea-1f1fa.png" + } + "eu-north-1" = { + name = "EU (Stockholm)" + icon = "/emojis/1f1ea-1f1fa.png" + } + "eu-west-1" = { + name = "EU (Ireland)" + icon = "/emojis/1f1ea-1f1fa.png" + } + "eu-west-2" = { + name = "EU (London)" + icon = "/emojis/1f1ea-1f1fa.png" + } + "eu-west-3" = { + name = "EU (Paris)" + icon = "/emojis/1f1ea-1f1fa.png" + } + "sa-east-1" = { + name = "South America (São Paulo)" + icon = "/emojis/1f1e7-1f1f7.png" + } + "us-east-1" = { + name = "US East (N. Virginia)" + icon = "/emojis/1f1fa-1f1f8.png" + } + "us-east-2" = { + name = "US East (Ohio)" + icon = "/emojis/1f1fa-1f1f8.png" + } + "us-west-1" = { + name = "US West (N. California)" + icon = "/emojis/1f1fa-1f1f8.png" + } + "us-west-2" = { + name = "US West (Oregon)" + icon = "/emojis/1f1fa-1f1f8.png" + } + } +} + +data "coder_parameter" "region" { + name = "aws_region" + display_name = var.display_name + description = var.description + default = var.default + mutable = var.mutable + dynamic "option" { + for_each = { for k, v in var.regions : k => v if !(contains(var.exclude, k)) } + content { + name = try(var.custom_names[option.key], option.value.name) + icon = try(var.custom_icons[option.key], option.value.icon) + value = option.key + } + } +} + +output "value" { + value = data.coder_parameter.region.value +} diff --git a/azure-regions/README.md b/azure-regions/README.md new file mode 100644 index 0000000..93a5e0e --- /dev/null +++ b/azure-regions/README.md @@ -0,0 +1 @@ +# azure-regions diff --git a/fly-regions/README.md b/fly-regions/README.md new file mode 100644 index 0000000..430d2fa --- /dev/null +++ b/fly-regions/README.md @@ -0,0 +1 @@ +# fly-regions diff --git a/gcp-regions/README.md b/gcp-regions/README.md new file mode 100644 index 0000000..52a4e5c --- /dev/null +++ b/gcp-regions/README.md @@ -0,0 +1 @@ +# gcp-regions diff --git a/jupyterhub/README.md b/jupyterhub/README.md new file mode 100644 index 0000000..e69de29 diff --git a/kasmvnc/README.md b/kasmvnc/README.md new file mode 100644 index 0000000..e69de29 diff --git a/matlab/README.md b/matlab/README.md new file mode 100644 index 0000000..e69de29 diff --git a/novnc/README.md b/novnc/README.md new file mode 100644 index 0000000..e69de29 diff --git a/rstudio/README.md b/rstudio/README.md new file mode 100644 index 0000000..e69de29