diff --git a/examples/README.md b/examples/README.md new file mode 100644 index 0000000000000..ed62ed2abb346 --- /dev/null +++ b/examples/README.md @@ -0,0 +1,15 @@ +# Examples + +List examples in our CLI with `coder projects init`. + +> [Submit an issue](https://github.com/coder/coder/issues/new) if you encounter any issues! + +## Getting Started + +Clone this repository to create a project from any example listed here: + +```sh +git clone https://github.com/coder/coder +cd examples/aws-macos +coder projects create +``` diff --git a/examples/aws-linux/README.md b/examples/aws-linux/README.md new file mode 100644 index 0000000000000..6bc248d3ba837 --- /dev/null +++ b/examples/aws-linux/README.md @@ -0,0 +1,5 @@ +--- +name: Develop in Linux on AWS EC2 +description: Get started with Linux development on AWS EC2. +tags: [cloud, aws] +--- diff --git a/examples/aws-linux/main.tf b/examples/aws-linux/main.tf new file mode 100644 index 0000000000000..6dfa861656ede --- /dev/null +++ b/examples/aws-linux/main.tf @@ -0,0 +1,149 @@ +terraform { + required_providers { + coder = { + source = "coder/coder" + version = "0.2.1" + } + } +} + +variable "access_key" { + description = <= 8 && + var.disk_size <= 256 + ) + error_message = "Disk size must be between 8 and 256." + } +} + +provider "aws" { + region = var.region + access_key = var.access_key + secret_key = var.secret_key +} + +data "coder_workspace" "me" { +} + +data "coder_agent_script" "dev" { + arch = "amd64" + auth = "aws-instance-identity" + os = "linux" +} + +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" "dev" { + count = data.coder_workspace.me.transition == "start" ? 1 : 0 + instance_id = aws_instance.dev[0].id +} + +locals { + + # User data is used to stop/start AWS instances. See: + # https://github.com/hashicorp/terraform-provider-aws/issues/22 + + user_data_start = < +[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 +${data.coder_agent_script.dev.value} + +true +EOT + + user_data_end = < +shutdown /s + +true +EOT +} + +resource "aws_instance" "dev" { + ami = data.aws_ami.windows.id + availability_zone = "${var.region}a" + instance_type = "t3.micro" + count = 1 + + user_data = data.coder_workspace.me.transition == "start" ? local.user_data_start : local.user_data_end + tags = { + Name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}" + } + +}