terraform { required_providers { coder = { source = "coder/coder" version = "0.6.10" } } } # Last updated 2022-05-31 # aws ec2 describe-regions | jq -r '[.Regions[].RegionName] | sort' variable "region" { description = "What region should your workspace live in?" default = "us-east-1" validation { condition = contains([ "ap-northeast-1", "ap-northeast-2", "ap-northeast-3", "ap-south-1", "ap-southeast-1", "ap-southeast-2", "ca-central-1", "eu-central-1", "eu-north-1", "eu-west-1", "eu-west-2", "eu-west-3", "sa-east-1", "us-east-1", "us-east-2", "us-west-1", "us-west-2" ], var.region) error_message = "Invalid region!" } } variable "instance_type" { description = "What instance type should your workspace use?" default = "t3.micro" validation { condition = contains([ "t3.micro", "t3.small", "t3.medium", "t3.large", "t3.xlarge", "t3.2xlarge", ], var.instance_type) error_message = "Invalid instance type!" } } provider "aws" { region = var.region } data "coder_workspace" "me" { } data "aws_ami" "ubuntu" { most_recent = true filter { name = "name" values = ["ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-*"] } filter { name = "virtualization-type" values = ["hvm"] } owners = ["099720109477"] # Canonical } resource "coder_agent" "main" { arch = "amd64" auth = "aws-instance-identity" os = "linux" login_before_ready = false startup_script_timeout = 180 startup_script = <<-EOT set -e # install and start code-server curl -fsSL https://code-server.dev/install.sh | sh -s -- --version 4.8.3 code-server --auth none --port 13337 >/tmp/code-server.log 2>&1 & EOT } resource "coder_app" "code-server" { agent_id = coder_agent.main.id slug = "code-server" display_name = "code-server" url = "http://localhost:13337/?folder=/home/coder" icon = "/icon/code.svg" subdomain = false share = "owner" healthcheck { url = "http://localhost:13337/healthz" interval = 3 threshold = 10 } } locals { # User data is used to stop/start AWS instances. See: # https://github.com/hashicorp/terraform-provider-aws/issues/22 user_data_start = <