Skip to content

Commit 6aa6928

Browse files
committed
fix: Reduce variables needed for Docker template
This should make initial setup a bit simpler!
1 parent db665e7 commit 6aa6928

File tree

4 files changed

+21
-123
lines changed

4 files changed

+21
-123
lines changed

examples/templates/docker-code-server/main.tf

+4-18
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ terraform {
22
required_providers {
33
coder = {
44
source = "coder/coder"
5-
version = "0.4.3"
5+
version = "0.4.5"
66
}
77
docker = {
88
source = "kreuzwerker/docker"
@@ -11,32 +11,18 @@ terraform {
1111
}
1212
}
1313

14-
variable "docker_host" {
15-
description = "Specify location of Docker socket (check `docker context ls` if you're not sure)"
16-
sensitive = true
17-
}
18-
19-
variable "docker_arch" {
20-
description = "Specify architecture of docker host (amd64, arm64, or armv7)"
21-
validation {
22-
condition = contains(["amd64", "arm64", "armv7"], var.docker_arch)
23-
error_message = "Value must be amd64, arm64, or armv7."
24-
}
25-
sensitive = true
26-
}
27-
28-
provider "coder" {
14+
data "coder_provisioner" "me" {
2915
}
3016

3117
provider "docker" {
32-
host = var.docker_host
18+
host = data.coder_provisioner.me.os == "windows" ? "npipe:////.//pipe//docker_engine" : "unix:///var/run/docker.sock"
3319
}
3420

3521
data "coder_workspace" "me" {
3622
}
3723

3824
resource "coder_agent" "main" {
39-
arch = var.docker_arch
25+
arch = data.coder_provisioner.me.arch
4026
os = "linux"
4127
startup_script = "code-server --auth none"
4228

examples/templates/docker-image-builds/main.tf

+5-43
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ terraform {
33
required_providers {
44
coder = {
55
source = "coder/coder"
6-
version = "0.4.3"
6+
version = "0.4.5"
77
}
88
docker = {
99
source = "kreuzwerker/docker"
@@ -12,56 +12,18 @@ terraform {
1212
}
1313
}
1414

15-
# Admin parameters
16-
variable "step1_docker_host_warning" {
17-
description = <<-EOF
18-
Is Docker running on the Coder host?
19-
20-
This template will use the Docker socket present on
21-
the Coder host, which is not necessarily your local machine.
22-
23-
You can specify a different host in the template file and
24-
suppress this warning.
25-
EOF
26-
validation {
27-
condition = contains(["Continue using /var/run/docker.sock on the Coder host"], var.step1_docker_host_warning)
28-
error_message = "Cancelling template create."
29-
}
30-
31-
sensitive = true
32-
}
33-
variable "step2_arch" {
34-
description = "arch: What architecture is your Docker host on?"
35-
validation {
36-
condition = contains(["amd64", "arm64", "armv7"], var.step2_arch)
37-
error_message = "Value must be amd64, arm64, or armv7."
38-
}
39-
sensitive = true
40-
}
41-
variable "step3_OS" {
42-
description = <<-EOF
43-
What operating system is your Coder host on?
44-
EOF
45-
46-
validation {
47-
condition = contains(["MacOS", "Windows", "Linux"], var.step3_OS)
48-
error_message = "Value must be MacOS, Windows, or Linux."
49-
}
50-
sensitive = true
15+
data "coder_provisioner" "me" {
5116
}
5217

5318
provider "docker" {
54-
host = var.step3_OS == "Windows" ? "npipe:////.//pipe//docker_engine" : "unix:///var/run/docker.sock"
55-
}
56-
57-
provider "coder" {
19+
host = data.coder_provisioner.me.os == "windows" ? "npipe:////.//pipe//docker_engine" : "unix:///var/run/docker.sock"
5820
}
5921

6022
data "coder_workspace" "me" {
6123
}
6224

6325
resource "coder_agent" "main" {
64-
arch = var.step2_arch
26+
arch = data.coder_provisioner.me.arch
6527
os = "linux"
6628
}
6729

@@ -84,7 +46,7 @@ variable "docker_image" {
8446
}
8547

8648
resource "docker_volume" "home_volume" {
87-
name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}-root"
49+
name = "coder-${data.coder_workspace.me.owner_id}-${lower(data.coder_workspace.me.id)}-root"
8850
}
8951

9052
resource "docker_image" "coder_image" {

examples/templates/docker-with-dotfiles/main.tf

+6-6
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ terraform {
99
required_providers {
1010
coder = {
1111
source = "coder/coder"
12-
version = "0.4.3"
12+
version = "0.4.5"
1313
}
1414
docker = {
1515
source = "kreuzwerker/docker"
@@ -18,11 +18,11 @@ terraform {
1818
}
1919
}
2020

21-
provider "docker" {
22-
host = "unix:///var/run/docker.sock"
21+
data "coder_provisioner" "me" {
2322
}
2423

25-
provider "coder" {
24+
provider "docker" {
25+
host = data.coder_provisioner.me.os == "windows" ? "npipe:////.//pipe//docker_engine" : "unix:///var/run/docker.sock"
2626
}
2727

2828
data "coder_workspace" "me" {
@@ -38,13 +38,13 @@ variable "dotfiles_uri" {
3838
}
3939

4040
resource "coder_agent" "main" {
41-
arch = "amd64"
41+
arch = data.coder_provisioner.me.arch
4242
os = "linux"
4343
startup_script = var.dotfiles_uri != "" ? "coder dotfiles -y ${var.dotfiles_uri}" : null
4444
}
4545

4646
resource "docker_volume" "home_volume" {
47-
name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}-root"
47+
name = "coder-${data.coder_workspace.me.owner_id}-${data.coder_workspace.me.id}-root"
4848
}
4949

5050
resource "docker_container" "workspace" {

examples/templates/docker/main.tf

+6-56
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ terraform {
22
required_providers {
33
coder = {
44
source = "coder/coder"
5-
version = "0.4.3"
5+
version = "0.4.5"
66
}
77
docker = {
88
source = "kreuzwerker/docker"
@@ -11,62 +11,18 @@ terraform {
1111
}
1212
}
1313

14-
# Admin parameters
15-
16-
# Comment this out if you are specifying a different docker
17-
# host on the "docker" provider below.
18-
variable "step1_docker_host_warning" {
19-
description = <<-EOF
20-
This template will use the Docker socket present on
21-
the Coder host, which is not necessarily your local machine.
22-
23-
You can specify a different host in the template file and
24-
suppress this warning.
25-
EOF
26-
validation {
27-
condition = contains(["Continue using /var/run/docker.sock on the Coder host"], var.step1_docker_host_warning)
28-
error_message = "Cancelling template create."
29-
}
30-
31-
sensitive = true
32-
}
33-
variable "step2_arch" {
34-
description = <<-EOF
35-
arch: What architecture is your Docker host on?
36-
37-
note: codercom/enterprise-* images are only built for amd64
38-
EOF
39-
40-
validation {
41-
condition = contains(["amd64", "arm64", "armv7"], var.step2_arch)
42-
error_message = "Value must be amd64, arm64, or armv7."
43-
}
44-
sensitive = true
45-
}
46-
variable "step3_OS" {
47-
description = <<-EOF
48-
What operating system is your Coder host on?
49-
EOF
50-
51-
validation {
52-
condition = contains(["MacOS", "Windows", "Linux"], var.step3_OS)
53-
error_message = "Value must be MacOS, Windows, or Linux."
54-
}
55-
sensitive = true
14+
data "coder_provisioner" "me" {
5615
}
5716

5817
provider "docker" {
59-
host = var.step3_OS == "Windows" ? "npipe:////.//pipe//docker_engine" : "unix:///var/run/docker.sock"
60-
}
61-
62-
provider "coder" {
18+
host = data.coder_provisioner.me.os == "windows" ? "npipe:////.//pipe//docker_engine" : "unix:///var/run/docker.sock"
6319
}
6420

6521
data "coder_workspace" "me" {
6622
}
6723

6824
resource "coder_agent" "main" {
69-
arch = var.step2_arch
25+
arch = data.coder_provisioner.me.arch
7026
os = "linux"
7127
startup_script = <<EOF
7228
#!/bin/sh
@@ -104,11 +60,10 @@ variable "docker_image" {
10460
"codercom/enterprise-intellij:ubuntu", "codercom/enterprise-golang:ubuntu"], var.docker_image)
10561
error_message = "Invalid Docker image!"
10662
}
107-
10863
}
10964

11065
resource "docker_volume" "home_volume" {
111-
name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}-home"
66+
name = "coder-${data.coder_workspace.me.owner_id}-${data.coder_workspace.me.id}-home"
11267
}
11368

11469
resource "docker_container" "workspace" {
@@ -121,12 +76,7 @@ resource "docker_container" "workspace" {
12176
dns = ["1.1.1.1"]
12277
# Use the docker gateway if the access URL is 127.0.0.1
12378
command = [
124-
"sh", "-c",
125-
<<EOT
126-
trap '[ $? -ne 0 ] && echo === Agent script exited with non-zero code. Sleeping infinitely to preserve logs... && sleep infinity' EXIT
127-
${replace(coder_agent.main.init_script, "localhost", "host.docker.internal")}
128-
EOT
129-
]
79+
"sh", "-c", replace(coder_agent.main.init_script, "localhost", "host.docker.internal")]
13080
env = ["CODER_AGENT_TOKEN=${coder_agent.main.token}"]
13181
host {
13282
host = "host.docker.internal"

0 commit comments

Comments
 (0)