diff --git a/registry/coder/templates/aws-envbuilder/main.tf b/registry/coder/templates/aws-envbuilder/main.tf index 932672344..2bb36c26b 100644 --- a/registry/coder/templates/aws-envbuilder/main.tf +++ b/registry/coder/templates/aws-envbuilder/main.tf @@ -17,7 +17,7 @@ terraform { module "aws_region" { source = "registry.coder.com/coder/aws-region/coder" - version = "~> 1.0" + version = "~> 1.1" default = "us-east-1" } @@ -60,36 +60,11 @@ data "aws_ami" "ubuntu" { owners = ["099720109477"] # Canonical } -data "coder_parameter" "instance_type" { - name = "instance_type" - display_name = "Instance type" - description = "What instance type should your workspace use?" - default = "t3.micro" - mutable = false - option { - name = "2 vCPU, 1 GiB RAM" - value = "t3.micro" - } - option { - name = "2 vCPU, 2 GiB RAM" - value = "t3.small" - } - option { - name = "2 vCPU, 4 GiB RAM" - value = "t3.medium" - } - option { - name = "2 vCPU, 8 GiB RAM" - value = "t3.large" - } - option { - name = "4 vCPU, 16 GiB RAM" - value = "t3.xlarge" - } - option { - name = "8 vCPU, 32 GiB RAM" - value = "t3.2xlarge" - } +# See https://registry.coder.com/modules/coder/aws-ec2-instance-type +module "aws_ec2_instance_type" { + source = "registry.coder.com/coder/aws-ec2-instance-type/coder" + version = "~> 1.0" + default = "t3.micro" } data "coder_parameter" "root_volume_size_gb" { @@ -156,7 +131,7 @@ data "aws_iam_instance_profile" "vm_instance_profile" { # Be careful when modifying the below locals! locals { # TODO: provide a way to pick the availability zone. - aws_availability_zone = "${module.aws_region.value}a" + aws_availability_zone = module.aws_region.default_availability_zone hostname = lower(data.coder_workspace.me.name) linux_user = "coder" @@ -247,7 +222,7 @@ data "cloudinit_config" "user_data" { resource "aws_instance" "vm" { ami = data.aws_ami.ubuntu.id availability_zone = local.aws_availability_zone - instance_type = data.coder_parameter.instance_type.value + instance_type = module.aws_ec2_instance_type.value iam_instance_profile = try(data.aws_iam_instance_profile.vm_instance_profile[0].name, null) root_block_device { volume_size = data.coder_parameter.root_volume_size_gb.value @@ -306,7 +281,7 @@ resource "coder_metadata" "info" { } item { key = "instance_type" - value = data.coder_parameter.instance_type.value + value = module.aws_ec2_instance_type.value } item { key = "ssh_pubkey" diff --git a/registry/coder/templates/aws-linux/main.tf b/registry/coder/templates/aws-linux/main.tf index 89b3bde9e..4fc861e3b 100644 --- a/registry/coder/templates/aws-linux/main.tf +++ b/registry/coder/templates/aws-linux/main.tf @@ -12,135 +12,22 @@ terraform { } } -# Last updated 2023-03-14 -# aws ec2 describe-regions | jq -r '[.Regions[].RegionName] | sort' -data "coder_parameter" "region" { - name = "region" - display_name = "Region" - description = "The region to deploy the workspace in." - default = "us-east-1" - mutable = false - option { - name = "Asia Pacific (Tokyo)" - value = "ap-northeast-1" - icon = "/emojis/1f1ef-1f1f5.png" - } - option { - name = "Asia Pacific (Seoul)" - value = "ap-northeast-2" - icon = "/emojis/1f1f0-1f1f7.png" - } - option { - name = "Asia Pacific (Osaka)" - value = "ap-northeast-3" - icon = "/emojis/1f1ef-1f1f5.png" - } - option { - name = "Asia Pacific (Mumbai)" - value = "ap-south-1" - icon = "/emojis/1f1ee-1f1f3.png" - } - option { - name = "Asia Pacific (Singapore)" - value = "ap-southeast-1" - icon = "/emojis/1f1f8-1f1ec.png" - } - option { - name = "Asia Pacific (Sydney)" - value = "ap-southeast-2" - icon = "/emojis/1f1e6-1f1fa.png" - } - option { - name = "Canada (Central)" - value = "ca-central-1" - icon = "/emojis/1f1e8-1f1e6.png" - } - option { - name = "EU (Frankfurt)" - value = "eu-central-1" - icon = "/emojis/1f1ea-1f1fa.png" - } - option { - name = "EU (Stockholm)" - value = "eu-north-1" - icon = "/emojis/1f1ea-1f1fa.png" - } - option { - name = "EU (Ireland)" - value = "eu-west-1" - icon = "/emojis/1f1ea-1f1fa.png" - } - option { - name = "EU (London)" - value = "eu-west-2" - icon = "/emojis/1f1ea-1f1fa.png" - } - option { - name = "EU (Paris)" - value = "eu-west-3" - icon = "/emojis/1f1ea-1f1fa.png" - } - option { - name = "South America (São Paulo)" - value = "sa-east-1" - icon = "/emojis/1f1e7-1f1f7.png" - } - option { - name = "US East (N. Virginia)" - value = "us-east-1" - icon = "/emojis/1f1fa-1f1f8.png" - } - option { - name = "US East (Ohio)" - value = "us-east-2" - icon = "/emojis/1f1fa-1f1f8.png" - } - option { - name = "US West (N. California)" - value = "us-west-1" - icon = "/emojis/1f1fa-1f1f8.png" - } - option { - name = "US West (Oregon)" - value = "us-west-2" - icon = "/emojis/1f1fa-1f1f8.png" - } +# See https://registry.coder.com/modules/coder/aws-region +module "aws_region" { + source = "registry.coder.com/coder/aws-region/coder" + version = "~> 1.1" + default = "us-east-1" } -data "coder_parameter" "instance_type" { - name = "instance_type" - display_name = "Instance type" - description = "What instance type should your workspace use?" - default = "t3.micro" - mutable = false - option { - name = "2 vCPU, 1 GiB RAM" - value = "t3.micro" - } - option { - name = "2 vCPU, 2 GiB RAM" - value = "t3.small" - } - option { - name = "2 vCPU, 4 GiB RAM" - value = "t3.medium" - } - option { - name = "2 vCPU, 8 GiB RAM" - value = "t3.large" - } - option { - name = "4 vCPU, 16 GiB RAM" - value = "t3.xlarge" - } - option { - name = "8 vCPU, 32 GiB RAM" - value = "t3.2xlarge" - } +# See https://registry.coder.com/modules/coder/aws-ec2-instance-type +module "aws_ec2_instance_type" { + source = "registry.coder.com/coder/aws-ec2-instance-type/coder" + version = "~> 1.0" + default = "t3.micro" } provider "aws" { - region = data.coder_parameter.region.value + region = module.aws_region.value } data "coder_workspace" "me" {} @@ -240,8 +127,8 @@ data "cloudinit_config" "user_data" { resource "aws_instance" "dev" { ami = data.aws_ami.ubuntu.id - availability_zone = "${data.coder_parameter.region.value}a" - instance_type = data.coder_parameter.instance_type.value + availability_zone = module.aws_region.default_availability_zone + instance_type = module.aws_ec2_instance_type.value user_data = data.cloudinit_config.user_data.rendered tags = { @@ -258,7 +145,7 @@ resource "coder_metadata" "workspace_info" { resource_id = aws_instance.dev.id item { key = "region" - value = data.coder_parameter.region.value + value = module.aws_region.value } item { key = "instance type" diff --git a/registry/coder/templates/aws-windows/main.tf b/registry/coder/templates/aws-windows/main.tf index 167b1b69f..5a477af45 100644 --- a/registry/coder/templates/aws-windows/main.tf +++ b/registry/coder/templates/aws-windows/main.tf @@ -9,135 +9,22 @@ terraform { } } -# Last updated 2023-03-14 -# aws ec2 describe-regions | jq -r '[.Regions[].RegionName] | sort' -data "coder_parameter" "region" { - name = "region" - display_name = "Region" - description = "The region to deploy the workspace in." - default = "us-east-1" - mutable = false - option { - name = "Asia Pacific (Tokyo)" - value = "ap-northeast-1" - icon = "/emojis/1f1ef-1f1f5.png" - } - option { - name = "Asia Pacific (Seoul)" - value = "ap-northeast-2" - icon = "/emojis/1f1f0-1f1f7.png" - } - option { - name = "Asia Pacific (Osaka-Local)" - value = "ap-northeast-3" - icon = "/emojis/1f1f0-1f1f7.png" - } - option { - name = "Asia Pacific (Mumbai)" - value = "ap-south-1" - icon = "/emojis/1f1f0-1f1f7.png" - } - option { - name = "Asia Pacific (Singapore)" - value = "ap-southeast-1" - icon = "/emojis/1f1f0-1f1f7.png" - } - option { - name = "Asia Pacific (Sydney)" - value = "ap-southeast-2" - icon = "/emojis/1f1f0-1f1f7.png" - } - option { - name = "Canada (Central)" - value = "ca-central-1" - icon = "/emojis/1f1e8-1f1e6.png" - } - option { - name = "EU (Frankfurt)" - value = "eu-central-1" - icon = "/emojis/1f1ea-1f1fa.png" - } - option { - name = "EU (Stockholm)" - value = "eu-north-1" - icon = "/emojis/1f1ea-1f1fa.png" - } - option { - name = "EU (Ireland)" - value = "eu-west-1" - icon = "/emojis/1f1ea-1f1fa.png" - } - option { - name = "EU (London)" - value = "eu-west-2" - icon = "/emojis/1f1ea-1f1fa.png" - } - option { - name = "EU (Paris)" - value = "eu-west-3" - icon = "/emojis/1f1ea-1f1fa.png" - } - option { - name = "South America (São Paulo)" - value = "sa-east-1" - icon = "/emojis/1f1e7-1f1f7.png" - } - option { - name = "US East (N. Virginia)" - value = "us-east-1" - icon = "/emojis/1f1fa-1f1f8.png" - } - option { - name = "US East (Ohio)" - value = "us-east-2" - icon = "/emojis/1f1fa-1f1f8.png" - } - option { - name = "US West (N. California)" - value = "us-west-1" - icon = "/emojis/1f1fa-1f1f8.png" - } - option { - name = "US West (Oregon)" - value = "us-west-2" - icon = "/emojis/1f1fa-1f1f8.png" - } +# See https://registry.coder.com/modules/coder/aws-region +module "aws_region" { + source = "registry.coder.com/coder/aws-region/coder" + version = "~> 1.1" + default = "us-east-1" } -data "coder_parameter" "instance_type" { - name = "instance_type" - display_name = "Instance type" - description = "What instance type should your workspace use?" - default = "t3.micro" - mutable = false - option { - name = "2 vCPU, 1 GiB RAM" - value = "t3.micro" - } - option { - name = "2 vCPU, 2 GiB RAM" - value = "t3.small" - } - option { - name = "2 vCPU, 4 GiB RAM" - value = "t3.medium" - } - option { - name = "2 vCPU, 8 GiB RAM" - value = "t3.large" - } - option { - name = "4 vCPU, 16 GiB RAM" - value = "t3.xlarge" - } - option { - name = "8 vCPU, 32 GiB RAM" - value = "t3.2xlarge" - } +# See https://registry.coder.com/modules/coder/aws-ec2-instance-type +module "aws_ec2_instance_type" { + source = "registry.coder.com/coder/aws-ec2-instance-type/coder" + version = "~> 1.0" + default = "t3.micro" } provider "aws" { - region = data.coder_parameter.region.value + region = module.aws_region.value } data "coder_workspace" "me" { @@ -183,8 +70,8 @@ EOT resource "aws_instance" "dev" { ami = data.aws_ami.windows.id - availability_zone = "${data.coder_parameter.region.value}a" - instance_type = data.coder_parameter.instance_type.value + availability_zone = module.aws_region.default_availability_zone + instance_type = module.aws_ec2_instance_type.value user_data = data.coder_workspace.me.transition == "start" ? local.user_data_start : local.user_data_end tags = { @@ -201,7 +88,7 @@ resource "coder_metadata" "workspace_info" { resource_id = aws_instance.dev.id item { key = "region" - value = data.coder_parameter.region.value + value = module.aws_region.value } item { key = "instance type"