8000 chore: update templates to use rich parameters by matifali · Pull Request #6397 · coder/coder · GitHub
[go: up one dir, main page]

Skip to content

chore: update templates to use rich parameters #6397

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 36 commits into from
Mar 15, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
986423a
update templates to use rich parameters
matifali Mar 1, 2023
aed5f6c
more icons
matifali Mar 1, 2023
abec445
fix do-linux
matifali Mar 1, 2023
2f17c1d
fix: docker-image-builds
matifali Mar 1, 2023
31824c3
fix kubernetes
matifali Mar 1, 2023
d0ab600
add friendly names to do-linux
matifali Mar 1, 2023
9b5d632
Merge branch 'coder:main' into rich-params-examples
matifali Mar 2, 2023
eab5ff8
Merge branch 'coder:main' into rich-params-examples
matifali Mar 3, 2023
78d5eb4
Merge branch 'coder:main' into rich-params-examples
matifali Mar 7, 2023
5d3bdf7
Merge branch 'coder:main' into rich-params-examples
matifali Mar 14, 2023
59b18d1
use managed variables for do-linux
matifali Mar 14, 2023
a84db0b
update docker examples
matifali Mar 14, 2023
4caa9ea
update gcp
matifali Mar 14, 2023
3c3c0ef
update kubernetes
matifali Mar 14, 2023
ad0f454
update azure-vm
matifali Mar 14, 2023
071f9ac
update aws
matifali Mar 14, 2023
33e234c
update requested changes
matifali Mar 14, 2023
db081e0
update regions with city names
matifali Mar 14, 2023
e5f35f9
fix type
matifali Mar 14, 2023
152d9fa
remove regions with no support for availability zones
matifali Mar 14, 2023
e3edbed
add Switzerland
matifali Mar 14, 2023
4bc2178
revert + refactor do-linux
matifali Mar 14, 2023
311b20c
fix docker migration
matifali Mar 14, 2023
ad2002e
update azure-vm
matifali Mar 14, 2023
a702587
fix: docker-with-dotfiles
matifali Mar 14, 2023
aaa7800
add icons
matifali Mar 14, 2023
eab122d
update docker_image icon
matifali Mar 14, 2023
525bb3e
fix: flag emojis in do-linux
matifali Mar 14, 2023
994256a
fix icons and default project google
matifali Mar 15, 2023
1bc57d1
remove default and hardcoded cpu and memory
matifali Mar 15, 2023
9610e62
set Instance type to be immutable
matifali Mar 15, 2023
dcb34e2
set zone to be immutable
matifali Mar 15, 2023
b4c46e0
fix typo to fix icons
matifali Mar 15, 2023
d9b63cf
suggestions
matifali Mar 15, 2023
527854c
update code-server to version `4.10.1`
matifali Mar 15, 2023
bdbe709
Revert "update code-server to version `4.10.1`"
matifali Mar 15, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
update templates to use rich parameters
  • Loading branch information
matifali committed Mar 1, 2023
commit 986423a690e22fe4f6268a56a7d1bfae0a3a126f
3 changes: 2 additions & 1 deletion examples/templates/aws-ecs-container/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ terraform {
required_providers {
coder = {
source = "coder/coder"
version = "~> 0.6.12"
version = "~> 0.6.14"
}
aws = {
source = "hashicorp/aws"
Expand All @@ -15,6 +15,7 @@ variable "ecs-cluster" {
description = "Input the ECS cluster ARN to host the workspace"
default = ""
}

variable "cpu" {
default = "1024"
}
Expand Down
211 changes: 169 additions & 42 deletions examples/templates/do-linux/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ terraform {
required_providers {
coder = {
source = "coder/coder"
version = "~> 0.6.12"
version = "~> 0.6.14"
}
digitalocean = {
source = "digitalocean/digitalocean"
Expand All @@ -11,77 +11,205 @@ terraform {
}
}

variable "step1_do_project_id" {
type = string


data "coder_parameter" "step1_do_project_id" {
name = "Enter project ID"
description = <<-EOF
Enter project ID

$ doctl projects list
EOF
sensitive = true

type = "string"
default = "0"
mutable = false
validation {
condition = length(var.step1_do_project_id) == 36
error_message = "Invalid Digital Ocean Project ID."
# make sure length of alphanumeric string is 36
regex = "^[a-zA-Z0-9]{36}$"
error = "Invalid Digital Ocean Project ID."
}
}

variable "step2_do_admin_ssh_key" {
type = number
data "coder_parameter" "step2_do_admin_ssh_key" {
name = "Enter admin SSH key ID (some Droplet images require an SSH key to be set):"
description = <<-EOF
Enter admin SSH key ID (some Droplet images require an SSH key to be set):

Can be set to "0" for no key.

Note: Setting this to zero will break Fedora images and notify root passwords via email.

$ doctl compute ssh-key list
EOF
sensitive = true

type = "number"
default = "0"
mutable = false
validation {
condition = var.step2_do_admin_ssh_key >= 0
error_message = "Invalid Digital Ocean SSH key ID, a number is required."
min = 0
error = "Invalid Digital Ocean SSH key ID, a number is required."
}
}

variable "droplet_image" {
type = string
description = "Which Droplet image would you like to use for your workspace?"
default = "ubuntu-22-04-x64"
validation {
condition = contains(["ubuntu-22-04-x64", "ubuntu-20-04-x64", "fedora-36-x64", "fedora-35-x64", "debian-11-x64", "debian-10-x64", "centos-stream-9-x64", "centos-stream-8-x64", "rockylinux-8-x64", "rockylinux-8-4-x64"], var.droplet_image)
error_message = "Value must be ubuntu-22-04-x64, ubuntu-20-04-x64, fedora-36-x64, fedora-35-x64, debian-11-x64, debian-10-x64, centos-stream-9-x64, centos-stream-8-x64, rockylinux-8-x64 or rockylinux-8-4-x64."
data "coder_parameter" "droplet_image" {
name = "Which Droplet image would you like to use for your workspace?"
default = "ubuntu-22-04-x64"
type = "string"
mutable = false
option {
name = "Ubuntu 22.04"
value = "ubuntu-22-04-x64"
}
option {
name = "Ubuntu 20.04"
value = "ubuntu-20-04-x64"
}
option {
name = "Fedora 36"
value = "fedora-36-x64"
}
option {
name = "Fedora 35"
value = "fedora-35-x64"
}
option {
name = "Debian 11"
value = "debian-11-x64"
}
option {
name = "Debian 10"
value = "debian-10-x64"
}
option {
name = "CentOS Stream 9"
value = "centos-stream-9-x64"
}
option {
name = "CentOS Stream 8"
value = "centos-stream-8-x64"
}
option {
name = "Rocky Linux 8"
value = "rockylinux-8-x64"
}
option {
name = "Rocky Linux 8.4"
value = "rockylinux-8-4-x64"
}
}

variable "droplet_size" {
type = string
description = "Which Droplet configuration would you like to use?"
default = "s-1vcpu-1gb"
validation {
condition = contains(["s-1vcpu-1gb", "s-1vcpu-2gb", "s-2vcpu-2gb", "s-2vcpu-4gb", "s-4vcpu-8gb", "s-8vcpu-16gb"], var.droplet_size)
error_message = "Value must be s-1vcpu-1gb, s-1vcpu-2gb, s-2vcpu-2gb, s-2vcpu-4gb, s-4vcpu-8gb or s-8vcpu-16gb."
data "coder_parameter" "droplet_size" {
name = "Which Droplet configuration would you like to use?"
default = "s-1vcpu-1gb"
type = "string"
mutable = false
option {
name = "s-1vcpu-1gb"
value = "s-1vcpu-1gb"
}
option {
name = "s-1vcpu-2gb"
value = "s-1vcpu-2gb"
}
option {
name = "s-2vcpu-2gb"
value = "s-2vcpu-2gb"
}
option {
name = "s-2vcpu-4gb"
value = "s-2vcpu-4gb"
}
option {
name = "s-4vcpu-8gb"
value = "s-4vcpu-8gb"
}
option {
name = "s-8vcpu-16gb"
value = "s-8vcpu-16gb"
}
}

variable "home_volume_size" {
type = number
description = "How large would you like your home volume to be (in GB)?"
default = 20

data "coder_parameter" "home_volume_size" {
name = "How large would you like your home volume to be (in GB)?"
description = "This volume will be mounted to /home/coder."
type = "number"
default = "20"
mutable = false
validation {
condition = var.home_volume_size >= 1
error_message = "Value must be greater than or equal to 1."
min = 1
error = "Value must be greater than or equal to 1."
}
}

variable "region" {
type = string
description = "Which region would you like to use?"
data "coder_parameter" "region" {
name = "Which region would you like to use?"
description = "This is the region where your workspace will be created."
icon = "/emojis/1f30e.png"
type = "string"
default = "ams3"
validation {
condition = contains(["nyc1", "nyc2", "nyc3", "sfo1", "sfo2", "sfo3", "ams2", "ams3", "sgp1", "lon1", "fra1", "tor1", "blr1"], var.region)
error_message = "Value must be nyc1, nyc2, nyc3, sfo1, sfo2, sfo3, ams2, ams3, sgp1, lon1, fra1, tor1 or blr1."
mutable = false
option {
name = "New York 1"
value = "nyc1"
icon = "/emojis/1f1fa_1f1f8.png"
}
option {
name = "New York 2"
value = "nyc2"
icon = "/emojis/1f1fa_1f1f8.png"
}
option {
name = "New York 3"
value = "nyc3"
icon = "/emojis/1f1fa_1f1f8.png"
}
option {
name = "San Francisco 1"
value = "sfo1"
icon = "/emojis/1f1fa_1f1f8.png"
}
option {
name = "San Francisco 2"
value = "sfo2"
icon = "/emojis/1f1fa_1f1f8.png"
}
option {
name = "San Francisco 3"
value = "sfo3"
icon = "/emojis/1f1fa_1f1f8.png"
}
option {
name = "Amsterdam 2"
value = "ams2"
icon = "/emojis/1f1f3_1f1f1.png"
}
option {
name = "Amsterdam 3"
value = "ams3"
icon = "/emojis/1f1f3_1f1f1.png"
}
option {
name = "Singapore 1"
value = "sgp1"
icon = "/emojis/1f1f8_1f1ec.png"
}
option {
name = "London 1"
value = "lon1"
icon = "/emojis/1f1ec_1f1e7.png"
}
option {
name = "Frankfurt 1"
value = "fra1"
icon = "/emojis/1f1e9_1f1ea.png"
}
option {
name = "Toronto 1"
value = "tor1"
icon = "/emojis/1f1e8_1f1e6.png"
}
option {
name = "Bangalore 1"
value = "blr1"
icon = "/emojis/1f1ee_1f1f3.png"
}
}

Expand Down Expand Up @@ -161,5 +289,4 @@ resource "coder_metadata" "volume-info" {
key = "size"
value = "${digitalocean_volume.home_volume.size} GiB"
}

}
4 changes: 2 additions & 2 deletions examples/templates/docker-code-server/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ terraform {
required_providers {
coder = {
source = "coder/coder"
version = "~> 0.6.12"
version = "~> 0.6.14"
}
docker = {
source = "kreuzwerker/docker"
version = "~> 2.20.2"
version = "~> 3.0.1"
}
}
}
Expand Down
43 changes: 25 additions & 18 deletions examples/templates/docker-image-builds/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ terraform {
required_providers {
coder = {
source = "coder/coder"
version = "~> 0.6.12"
version = "~> 0.6.14"
}
docker = {
source = "kreuzwerker/docker"
version = "~> 2.20.2"
version = "~> 3.0.1"
}
}
}
Expand Down Expand Up @@ -53,24 +53,31 @@ resource "coder_app" "code-server" {

}

variable "docker_image" {
description = "What Docker image would you like to use for your workspace?"
data "coder_parameter" "docker_image" {
name = "What Docker image would you like to use for your workspace?"
description = "The Docker image will be used to build your workspace. You can choose from a list of pre-built images or provide your own."
default = "base"

# List of images available for the user to choose from.
# Delete this condition to give users free text input.
validation {
condition = contains(["base", "java", "node"], var.docker_image)
error_message = "Invalid Docker image!"
}

# Prevents admin errors when the image is not found
validation {
condition = fileexists("images/${var.docker_image}.Dockerfile")
error_message = "Invalid Docker image. The file does not exist in the images directory."
icon = "/emojis/1f4bf.png"
type = "string"
mutable = false
option {
name = "Base"
value = "base"
icon = "/icon/code.svg"
}
option {
name = "Java"
value = "java"
icon = "/icon/java.svg"
}
option {
name = "Node"
value = "node"
icon = "/icon/node.svg"
}
}


resource "docker_volume" "home_volume" {
name = "coder-${data.coder_workspace.me.id}-home"
# Protect the volume from being deleted due to changes in attributes.
Expand Down Expand Up @@ -102,7 +109,7 @@ resource "docker_image" "coder_image" {
name = "coder-base-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}"
build {
path = "./images/"
dockerfile = "${var.docker_image}.Dockerfile"
dockerfile = "${data.coder_parameter.docker_image.value}.Dockerfile"
tag = ["coder-${var.docker_image}:v0.1"]
}

Expand Down Expand Up @@ -154,6 +161,6 @@ resource "coder_metadata" "container_info" {

item {
key = "image"
value = var.docker_image
value = data.coder_parameter.docker_image.value
}
}
4 changes: 2 additions & 2 deletions examples/templates/docker-with-dotfiles/main.tf
E8A0
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ terraform {
required_providers {
coder = {
source = "coder/coder"
version = "~> 0.6.12"
version = "~> 0.6.14"
}
docker = {
source = "kreuzwerker/docker"
version = "~> 2.20.2"
version = "~> 3.0.1"
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions examples/templates/docker/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ terraform {
required_providers {
coder = {
source = "coder/coder"
version = "~> 0.6.12"
version = "~> 0.6.14"
}
docker = {
source = "kreuzwerker/docker"
version = "~> 2.22"
version = "~> 3.0.1"
}
}
}
Expand Down
Loading
0