Add modules
							parent
							
								
									a25b637c46
								
							
						
					
					
						commit
						a69f41951d
					
				@ -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
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
@ -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
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1 @@
 | 
			
		||||
# azure-regions
 | 
			
		||||
@ -0,0 +1 @@
 | 
			
		||||
# fly-regions
 | 
			
		||||
@ -0,0 +1 @@
 | 
			
		||||
# gcp-regions
 | 
			
		||||
					Loading…
					
					
				
		Reference in New Issue