From 6aa6928c43be1109794a176e89bd1095b2337448 Mon Sep 17 00:00:00 2001 From: Kyle Carberry Date: Tue, 9 Aug 2022 23:25:48 +0000 Subject: [PATCH 1/5] fix: Reduce variables needed for Docker template This should make initial setup a bit simpler! --- examples/templates/docker-code-server/main.tf | 22 ++----- .../templates/docker-image-builds/main.tf | 48 ++------------ .../templates/docker-with-dotfiles/main.tf | 12 ++-- examples/templates/docker/main.tf | 62 ++----------------- 4 files changed, 21 insertions(+), 123 deletions(-) diff --git a/examples/templates/docker-code-server/main.tf b/examples/templates/docker-code-server/main.tf index 29be1ff990219..05ae7e6ea4017 100644 --- a/examples/templates/docker-code-server/main.tf +++ b/examples/templates/docker-code-server/main.tf @@ -2,7 +2,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = "0.4.3" + version = "0.4.5" } docker = { source = "kreuzwerker/docker" @@ -11,32 +11,18 @@ terraform { } } -variable "docker_host" { - description = "Specify location of Docker socket (check `docker context ls` if you're not sure)" - sensitive = true -} - -variable "docker_arch" { - description = "Specify architecture of docker host (amd64, arm64, or armv7)" - validation { - condition = contains(["amd64", "arm64", "armv7"], var.docker_arch) - error_message = "Value must be amd64, arm64, or armv7." - } - sensitive = true -} - -provider "coder" { +data "coder_provisioner" "me" { } provider "docker" { - host = var.docker_host + host = data.coder_provisioner.me.os == "windows" ? "npipe:////.//pipe//docker_engine" : "unix:///var/run/docker.sock" } data "coder_workspace" "me" { } resource "coder_agent" "main" { - arch = var.docker_arch + arch = data.coder_provisioner.me.arch os = "linux" startup_script = "code-server --auth none" diff --git a/examples/templates/docker-image-builds/main.tf b/examples/templates/docker-image-builds/main.tf index c135a09c2112e..1057bb2e2a317 100644 --- a/examples/templates/docker-image-builds/main.tf +++ b/examples/templates/docker-image-builds/main.tf @@ -3,7 +3,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = "0.4.3" + version = "0.4.5" } docker = { source = "kreuzwerker/docker" @@ -12,56 +12,18 @@ terraform { } } -# Admin parameters -variable "step1_docker_host_warning" { - description = <<-EOF - Is Docker running on the Coder host? - - This template will use the Docker socket present on - the Coder host, which is not necessarily your local machine. - - You can specify a different host in the template file and - suppress this warning. - EOF - validation { - condition = contains(["Continue using /var/run/docker.sock on the Coder host"], var.step1_docker_host_warning) - error_message = "Cancelling template create." - } - - sensitive = true -} -variable "step2_arch" { - description = "arch: What architecture is your Docker host on?" - validation { - condition = contains(["amd64", "arm64", "armv7"], var.step2_arch) - error_message = "Value must be amd64, arm64, or armv7." - } - sensitive = true -} -variable "step3_OS" { - description = <<-EOF - What operating system is your Coder host on? - EOF - - validation { - condition = contains(["MacOS", "Windows", "Linux"], var.step3_OS) - error_message = "Value must be MacOS, Windows, or Linux." - } - sensitive = true +data "coder_provisioner" "me" { } provider "docker" { - host = var.step3_OS == "Windows" ? "npipe:////.//pipe//docker_engine" : "unix:///var/run/docker.sock" -} - -provider "coder" { + host = data.coder_provisioner.me.os == "windows" ? "npipe:////.//pipe//docker_engine" : "unix:///var/run/docker.sock" } data "coder_workspace" "me" { } resource "coder_agent" "main" { - arch = var.step2_arch + arch = data.coder_provisioner.me.arch os = "linux" } @@ -84,7 +46,7 @@ variable "docker_image" { } resource "docker_volume" "home_volume" { - name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}-root" + name = "coder-${data.coder_workspace.me.owner_id}-${lower(data.coder_workspace.me.id)}-root" } resource "docker_image" "coder_image" { diff --git a/examples/templates/docker-with-dotfiles/main.tf b/examples/templates/docker-with-dotfiles/main.tf index afc91c34e326b..4b2e938e31425 100644 --- a/examples/templates/docker-with-dotfiles/main.tf +++ b/examples/templates/docker-with-dotfiles/main.tf @@ -9,7 +9,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = "0.4.3" + version = "0.4.5" } docker = { source = "kreuzwerker/docker" @@ -18,11 +18,11 @@ terraform { } } -provider "docker" { - host = "unix:///var/run/docker.sock" +data "coder_provisioner" "me" { } -provider "coder" { +provider "docker" { + host = data.coder_provisioner.me.os == "windows" ? "npipe:////.//pipe//docker_engine" : "unix:///var/run/docker.sock" } data "coder_workspace" "me" { @@ -38,13 +38,13 @@ variable "dotfiles_uri" { } resource "coder_agent" "main" { - arch = "amd64" + arch = data.coder_provisioner.me.arch os = "linux" startup_script = var.dotfiles_uri != "" ? "coder dotfiles -y ${var.dotfiles_uri}" : null } resource "docker_volume" "home_volume" { - name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}-root" + name = "coder-${data.coder_workspace.me.owner_id}-${data.coder_workspace.me.id}-root" } resource "docker_container" "workspace" { diff --git a/examples/templates/docker/main.tf b/examples/templates/docker/main.tf index 1aad84d324f76..287431bbcec60 100644 --- a/examples/templates/docker/main.tf +++ b/examples/templates/docker/main.tf @@ -2,7 +2,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = "0.4.3" + version = "0.4.5" } docker = { source = "kreuzwerker/docker" @@ -11,62 +11,18 @@ terraform { } } -# Admin parameters - -# Comment this out if you are specifying a different docker -# host on the "docker" provider below. -variable "step1_docker_host_warning" { - description = <<-EOF - This template will use the Docker socket present on - the Coder host, which is not necessarily your local machine. - - You can specify a different host in the template file and - suppress this warning. - EOF - validation { - condition = contains(["Continue using /var/run/docker.sock on the Coder host"], var.step1_docker_host_warning) - error_message = "Cancelling template create." - } - - sensitive = true -} -variable "step2_arch" { - description = <<-EOF - arch: What architecture is your Docker host on? - - note: codercom/enterprise-* images are only built for amd64 - EOF - - validation { - condition = contains(["amd64", "arm64", "armv7"], var.step2_arch) - error_message = "Value must be amd64, arm64, or armv7." - } - sensitive = true -} -variable "step3_OS" { - description = <<-EOF - What operating system is your Coder host on? - EOF - - validation { - condition = contains(["MacOS", "Windows", "Linux"], var.step3_OS) - error_message = "Value must be MacOS, Windows, or Linux." - } - sensitive = true +data "coder_provisioner" "me" { } provider "docker" { - host = var.step3_OS == "Windows" ? "npipe:////.//pipe//docker_engine" : "unix:///var/run/docker.sock" -} - -provider "coder" { + host = data.coder_provisioner.me.os == "windows" ? "npipe:////.//pipe//docker_engine" : "unix:///var/run/docker.sock" } data "coder_workspace" "me" { } resource "coder_agent" "main" { - arch = var.step2_arch + arch = data.coder_provisioner.me.arch os = "linux" startup_script = < Date: Wed, 10 Aug 2022 09:01:42 -0500 Subject: [PATCH 2/5] Fix for M2 Macbooks PostgreSQL 13 doesn't support the M series architecture. --- cli/server.go | 2 +- flake.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cli/server.go b/cli/server.go index 86016d9c9bd7a..fd8e41d2ebb37 100644 --- a/cli/server.go +++ b/cli/server.go @@ -1153,7 +1153,7 @@ func startBuiltinPostgres(ctx context.Context, cfg config.Root, logger slog.Logg stdlibLogger := slog.Stdlib(ctx, logger.Named("postgres"), slog.LevelDebug) ep := embeddedpostgres.NewDatabase( embeddedpostgres.DefaultConfig(). - Version(embeddedpostgres.V13). + Version(embeddedpostgres.V14). BinariesPath(filepath.Join(cfg.PostgresPath(), "bin")). DataPath(filepath.Join(cfg.PostgresPath(), "data")). RuntimePath(filepath.Join(cfg.PostgresPath(), "runtime")). diff --git a/flake.nix b/flake.nix index d3ce80f9562f8..a5e4816b19e63 100644 --- a/flake.nix +++ b/flake.nix @@ -19,13 +19,13 @@ bat drpc.defaultPackage.${system} exa + getopt git go-migrate go_1_19 golangci-lint gopls gotestsum - helm jq nfpm nodePackages.typescript From 7ba73f02ea62a670f8fbd75a619e00863791d833 Mon Sep 17 00:00:00 2001 From: Kyle Carberry Date: Wed, 10 Aug 2022 09:15:13 -0500 Subject: [PATCH 3/5] Fix name <-> id swap --- examples/templates/docker-image-builds/main.tf | 2 +- examples/templates/docker/main.tf | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/templates/docker-image-builds/main.tf b/examples/templates/docker-image-builds/main.tf index 1057bb2e2a317..47cb5ea7106cf 100644 --- a/examples/templates/docker-image-builds/main.tf +++ b/examples/templates/docker-image-builds/main.tf @@ -46,7 +46,7 @@ variable "docker_image" { } resource "docker_volume" "home_volume" { - name = "coder-${data.coder_workspace.me.owner_id}-${lower(data.coder_workspace.me.id)}-root" + name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}-root" } resource "docker_image" "coder_image" { diff --git a/examples/templates/docker/main.tf b/examples/templates/docker/main.tf index 287431bbcec60..11df56d6ee010 100644 --- a/examples/templates/docker/main.tf +++ b/examples/templates/docker/main.tf @@ -63,7 +63,7 @@ variable "docker_image" { } resource "docker_volume" "home_volume" { - name = "coder-${data.coder_workspace.me.owner_id}-${data.coder_workspace.me.id}-home" + name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}-home" } resource "docker_container" "workspace" { From 915372c22983f6419026889e082de810038b80c5 Mon Sep 17 00:00:00 2001 From: Kyle Carberry Date: Wed, 10 Aug 2022 09:26:40 -0500 Subject: [PATCH 4/5] Update Docker provider to remove host requirement --- examples/templates/docker-code-server/main.tf | 3 +-- examples/templates/docker-image-builds/main.tf | 3 +-- examples/templates/docker-with-dotfiles/main.tf | 3 +-- examples/templates/docker/main.tf | 3 +-- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/examples/templates/docker-code-server/main.tf b/examples/templates/docker-code-server/main.tf index 05ae7e6ea4017..33f6ee0485665 100644 --- a/examples/templates/docker-code-server/main.tf +++ b/examples/templates/docker-code-server/main.tf @@ -6,7 +6,7 @@ terraform { } docker = { source = "kreuzwerker/docker" - version = "~> 2.16.0" + version = "~> 2.20.2" } } } @@ -15,7 +15,6 @@ data "coder_provisioner" "me" { } provider "docker" { - host = data.coder_provisioner.me.os == "windows" ? "npipe:////.//pipe//docker_engine" : "unix:///var/run/docker.sock" } data "coder_workspace" "me" { diff --git a/examples/templates/docker-image-builds/main.tf b/examples/templates/docker-image-builds/main.tf index 47cb5ea7106cf..bdb8da5559d0b 100644 --- a/examples/templates/docker-image-builds/main.tf +++ b/examples/templates/docker-image-builds/main.tf @@ -7,7 +7,7 @@ terraform { } docker = { source = "kreuzwerker/docker" - version = "~> 2.16.0" + version = "~> 2.20.2" } } } @@ -16,7 +16,6 @@ data "coder_provisioner" "me" { } provider "docker" { - host = data.coder_provisioner.me.os == "windows" ? "npipe:////.//pipe//docker_engine" : "unix:///var/run/docker.sock" } data "coder_workspace" "me" { diff --git a/examples/templates/docker-with-dotfiles/main.tf b/examples/templates/docker-with-dotfiles/main.tf index 4b2e938e31425..3ccfb3bf0eacf 100644 --- a/examples/templates/docker-with-dotfiles/main.tf +++ b/examples/templates/docker-with-dotfiles/main.tf @@ -13,7 +13,7 @@ terraform { } docker = { source = "kreuzwerker/docker" - version = "~> 2.16.0" + version = "~> 2.20.2" } } } @@ -22,7 +22,6 @@ data "coder_provisioner" "me" { } provider "docker" { - host = data.coder_provisioner.me.os == "windows" ? "npipe:////.//pipe//docker_engine" : "unix:///var/run/docker.sock" } data "coder_workspace" "me" { diff --git a/examples/templates/docker/main.tf b/examples/templates/docker/main.tf index 11df56d6ee010..904e2f5907fb5 100644 --- a/examples/templates/docker/main.tf +++ b/examples/templates/docker/main.tf @@ -6,7 +6,7 @@ terraform { } docker = { source = "kreuzwerker/docker" - version = "~> 2.16.0" + version = "~> 2.20.2" } } } @@ -15,7 +15,6 @@ data "coder_provisioner" "me" { } provider "docker" { - host = data.coder_provisioner.me.os == "windows" ? "npipe:////.//pipe//docker_engine" : "unix:///var/run/docker.sock" } data "coder_workspace" "me" { From b9e315a64a4e7bf2f69fe91036b79b9d79775aa2 Mon Sep 17 00:00:00 2001 From: Kyle Carberry Date: Wed, 10 Aug 2022 09:34:21 -0500 Subject: [PATCH 5/5] Update examples/templates/docker-with-dotfiles/main.tf Co-authored-by: Mathias Fredriksson --- examples/templates/docker-with-dotfiles/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/templates/docker-with-dotfiles/main.tf b/examples/templates/docker-with-dotfiles/main.tf index 3ccfb3bf0eacf..9bee0ddf2142f 100644 --- a/examples/templates/docker-with-dotfiles/main.tf +++ b/examples/templates/docker-with-dotfiles/main.tf @@ -43,7 +43,7 @@ resource "coder_agent" "main" { } resource "docker_volume" "home_volume" { - name = "coder-${data.coder_workspace.me.owner_id}-${data.coder_workspace.me.id}-root" + name = "coder-${data.coder_workspace.me.owner}-${lower(data.coder_workspace.me.name)}-root" } resource "docker_container" "workspace" {